1

我已经浪费了很多时间试图弄清楚 xslt 的工作原理

我有这个xml

<?xml version="1.0" encoding="UTF-8"?>

<lvl:map xsi:schemaLocation="http://www.ohmeudeus.com lvlMl-v2.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:lvl="http://www.ohmeudeus.com">
   <name>String</name>
   <myColor>fffffffff</myColor>
</lvl:map>

现在我想通过使用 xslt 制作一个带有单词 String 的 html

所以我的 xslt 类似于

   <?xml version="1.0" encoding="UTF-8"?>
   <xsl:stylesheet version="2.0" 
   xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
   xmlns="http://www.w3.org/1999/xhtml" 
   xmlns:lvl="http://www.ohmeudeus.com lvlMl-v2.xsd">
<xsl:template match="lvl:map">
    <html>
        <head>
            <title>
                normal title
            </title>
            <link href="style.css" rel="stylesheet" type="text/css"/>
        </head>
        <body>
            The name is <xsl:value-of select="name"/>
        </body>
    </html>
</xsl:template>

</xsl:stylesheet>

结果给了我这样的名字和颜色:

字符串ffffffff

我不明白我在这里做错了什么......请帮助我......

我也接受你必须帮助我找到错误的任何提示

4

3 回答 3

4

这是因为您的 XML 中的 xmlns:

xmlns:lvl="http://www.ohmeudeus.com"

与 XSLT 中的 xmlns 不匹配:

xmlns:lvl="http://www.ohmeudeus.com lvlMl-v2.xsd"
于 2012-04-04T18:06:03.567 回答
1

我发现了2个问题。

  • 闭幕式</xsl:stylesheet>不见了。
  • <xmlns:lvl>不应该有架构位置,只有命名空间。

修复此问题后,您应该得到The name is String

于 2012-04-04T18:05:15.767 回答
0

当我使用针对发布的 XML 固定的命名空间运行发布的 XSLT 时,我得到以下信息。这不是所需的输出吗?

<?xml version="1.0" encoding="UTF-8"?>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:lvl="http://www.ohmeudeus.com">
   <head>
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
      <title>normal title</title>
      <link href="style.css" rel="stylesheet" type="text/css" />
   </head>
   <body>The name is String</body>
</html>
于 2012-04-04T19:19:15.653 回答