我试图将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>
以下是我的 XSLT ,我正在尝试运行以获取a:title
和a: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编写代码来删除命名空间吗?
答案 0 :(得分:1)
您的XML和XSLT都必须声明所有名称空间都在使用中。
(不, 不 编写代码来删除命名空间。命名空间在XML词汇表定义和管理中起着重要作用。)
而是添加名称空间声明,例如
xmlns:a="http://example.com/a"
到XML和XSLT文件中的根元素。
请注意,在XML文档中使用名称空间前缀而不定义它会阻止XML文档成为namespace-well-formed。