xml - 如何在 XML 中定义前缀并在 XSL 中使用它们?
问题描述
我遇到了前缀问题。XML 显示标题和 th,但其余部分为空白。
我尝试在 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>
解决方案
您需要在样式表中声明命名空间并将它们用作 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>
推荐阅读
- c# - c#关于多个where子句的linq问题
- tensorflow - 使用批量标准化克隆 TF 模型
- javascript - 仅隐藏选定的组件
- sql - BigQuery 标准 SQL - (几乎)重复行的累积计数
- clojure - Clojure 中的高阶 if-then-else?
- java - J2EE Web 应用程序上的 Argon2id 哈希时间高度可变
- android - file_picker allowedExtensions 过滤器工作
- cypress - 赛普拉斯 - 如何验证下载的文件是否包含动态名称?
- php - PhpStorm 如何在完成 PHP 中设置 'static::' 而不是 'self::'
- mysql - MySQL 设置不会让我按下完成按钮