以此页面中的XSLT和XML为例:
http://www.w3schools.com/xsl/xsl_transformation.asp
我有一个包含(上面修改过的示例)的xml文件:
<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="cdcatalog.xsl"?>
<catalog xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="http://tempuri.org/">
<cd>
就我而言,当浏览器处理XSLT / XML时,输出不包含任何内容。我从元素中删除属性的那一刻起作用。问题是,我真的没有选择从文件中预处理这些属性。
有人可以解释如何强制XSLT按原样使用XML吗?毕竟,这些属性看起来相当标准。
非常感谢,
太
答案 0 :(得分:7)
将该默认命名空间添加到样式表中,然后使用它。
答案 1 :(得分:1)
您正在修改<cd>
的默认命名空间,声明基本上为
<{http://tmpuri.org}:cd>
将与未修改的样式表不匹配。
答案 2 :(得分:0)
Ignacio说您的文档是在命名空间中定义的。因此,在样式表中,您只能匹配完全限定名称。
如果XSLT样式表仅匹配本地名称:
<xsl:template match="cd">
...
</xsl:template>
然后永远不会匹配。但是,如果将它放在样式表的根元素中:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:catalog="http://tempuri.org/">
...
</xsl:stylesheet>
...并使用限定名称进行匹配,如下所示:
<xsl:template match="catalog:cd">
...
</xsl:template>
...然后它有效。