我有一个XML文件,需要将其转换为其他XML。
XML文件使用名称空间,因此我将XSL文件中名称空间的定义包含到.中
出于某种原因,我无法解释,select的值不会返回任何值。
为了确保它与带有名称空间的元素的名称无关,我还在名称中带有dcterms的元素之间包含了en元素"id"。
为了方便起见,我提供了指向XML文件的链接,该文件具有对所用XSL文件的内联引用:http://inception.kbenp.net:7080/dev/72174_1.xml
更新:为了解决名称空间的所有问题,我将解析XML文件,然后用删除名称空间的样式表保存它们:http://inception.kbenp.net:7080/dev/removenamespaces.xsl
这样,我的其他样式表就可以简单得多。
您需要用这样的前缀声明名称空间:
xmlns:c="http://standaarden.overheid.nl/cvdr/terms/"
并使用xpath中的前缀"c"作为XML中的默认名称空间。这是上面的名称空间,所有元素都在它下面。
例如
<xsl:value-of select="c:cvdr/c:meta/c:owmskern/c:id"/>
我发现您在XSLT中的XPaths中缺少前缀。