如何在 XSLT 中从 XML 读取命名空间标记"<a:a>"?



我试图将XSLT用于下面给出的XML-

<?xml version="1.0" encoding="UTF-8"?>
<a:catalog>
<a:cd>
    <a:title>Empire Burlesque</a:title>
    <a:artist>Bob Dylan</a:artist>
    <a:country>USA</a:country>
</a:cd>
<a:cd>
    <a:title>Hide your heart</a:title>
    <a:artist>Bonnie Tyler</a:artist>
    <a:country>UK</a:country>
</a:cd>
</a:catalog>

在下面id我的XSLT,它正在尝试运行以获取a:titlea:artist

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html> 
<body>
  <h2>My test XSLT</h2>
  <table border="1">
    <tr bgcolor="#9acd32">
      <th style="text-align:left">Title</th>
      <th style="text-align:left">Artist</th>
    </tr>
    <xsl:for-each select="a:catalog/a:cd">
    <tr>
      <td><xsl:value-of select="a:title"/></td>
      <td><xsl:value-of select="a:artist"/></td>
    </tr>
    </xsl:for-each>
  </table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>

在这个没有命名空间的情况下,我可以获取输出,但不能使用命名空间。还是我应该编写代码以从 XML 中删除命名空间

XML 和 XSLT 都必须声明正在使用的所有命名空间。

(否,不要编写代码来删除命名空间。 命名空间在 XML 词汇表定义和管理中起着重要作用。

相反,请添加命名空间声明,例如

xmlns:a="http://example.com/a"

到 XML 和 XSLT 文件中的根元素。

请注意,如果在 XML 文档中使用命名空间前缀而不对其进行定义,则会阻止 XML 文档的命名空间格式正确

相关内容

  • 没有找到相关文章

最新更新