我在使用前缀时遇到麻烦。 XML显示标题和标题,其余为空白。
我尝试在XSL和xml的不同位置以及使用不同的URI定义前缀。 Tbh我不太了解URI的用法。在哪里可以找到好的?和/或我的代码中还有其他错误吗?我尝试搜索类似的问题,但听不懂:/
这是XML文件的代码:
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="testsortalpha.xsl"?>
<catalog xmlns:ccc="http://www.w3.org" xmlns:aaa="http://www.w3.org">
<ccc:bbb>
<aaa:entry><b>def</b></aaa:entry>
<aaa:entry><b>abc</b></aaa:entry>
<aaa:entry><b>cde</b></aaa:entry>
<aaa:entry><b>bcd</b></aaa:entry>
</ccc:bbb>
</catalog>
这是XSL文件的代码:
<?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>Test</h2>
<table border="1">
<tr bgcolor="#9acd32">
<th style="text-align:left">Test</th>
</tr>
<xsl:for-each select="catalog/ccc/aaa">
<xsl:sort select="b"/>
<tr>
<td><xsl:value-of select="b"/></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
答案 0 :(得分:1)
您需要在样式表中声明名称空间,并将其用作XPath表达式中的名称空间前缀:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:ccc="http://www.w3.org"
xmlns:aaa="http://www.w3.org">
<xsl:template match="/">
<html>
<body>
<h2>Test</h2>
<table border="1">
<tr bgcolor="#9acd32">
<th style="text-align:left">Test</th>
</tr>
<xsl:for-each select="catalog/ccc:bbb/aaa:entry">
<!-- ~~~~~~~~~~~~~~~~~ -->
<xsl:sort select="b"/>
<tr>
<td><xsl:value-of select="b"/></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>