Xml XSLT标识转换
我正在测试XSLT标识转换,因此我在www.w3schools.com上随机选择了以下示例,因为它允许我在线尝试: 我将右窗格中的XSLT更改为identity transform:Xml XSLT标识转换,xml,xslt,Xml,Xslt,我正在测试XSLT标识转换,因此我在www.w3schools.com上随机选择了以下示例,因为它允许我在线尝试: 我将右窗格中的XSLT更改为identity transform: <?xml version="1.0" encoding="ISO-8859-1"?> <!-- Edited by XMLSpy® --> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Tra
<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- Edited by XMLSpy® -->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
并尝试了一下。我发现,/catalog/cd/title
节点不会被复制到输出中(但其他所有节点都会被复制)。如果将名称从/catalog/cd/title
更改为/catalog/cd/title1
(或任何其他名称),则会复制节点
因此,我想知道www.w3schools.com上的XSLT实现中是否存在一个bug,或者XML节点“title”是否有某种特殊意义导致它无法被复制?我正计划如上所述使用XSLT转换,但我想确保我知道任何问题…在Debian上使用xsltproc可以正常工作 更新:也可以使用saxon xlst 问题应该出在W3C学校的实施上
在Martin的回答后更新:嗯……没问题,只是xml到html的转换……我该停下来休息一天了?;) 该工具用于测试XML到HTML的转换,因为它试图在浏览器中将转换结果呈现为HTML。通过身份转换,您不会创建任何HTML,而是创建XML。在浏览器看来,只有转换结果中的“title”元素是一个已知但放置错误的HTML元素,因此它不会在页面中显示它。所有其他元素都是未知的,因此将呈现它们的文本内容
基本上,您需要一个独立的XSLT处理器或XML编辑器,该工具对于调试和测试XML到HTML转换以外的任何东西都没有用处。我无法重现您的结果,但它可能依赖于浏览器。您所忽略的是,页面将转换的结果呈现为HTML,而在您的情况下则不是。浏览器如何处理使用非HTML标记的XML可能是不可预测的。我知道这是一篇老文章,但我在这里没有看到正确的答案
<xsl:copy>
当前节点的命名空间节点也会自动复制,但当前节点的子节点和属性不会自动复制强>
<xsl:copy-of>
命名空间节点、子节点和当前节点的属性也会自动复制 您也可以使用saxon xslt(取决于目标)。这些是我对saxonb for XSLT2的最爱。