2014-08-27 39 views
0

我有一个XML文件,需要转换为其他XML。无法通过XSL访问XML中元素的值

XML文件利用命名空间,所以我将这些文件的定义包含在我的XSL文件中。

由于某些原因,我无法解释,选择的价值没有回报。

为了确保它与命名空间元素的名称无关,我还在名称中包含元素与dcterms之间的元素“id”。

为了方便我公司提供的链接,其中有一个内嵌参考使用XSL文件的XML文件: http://inception.kbenp.net:7080/dev/72174_1.xml

UPDATE: 解决与命名空间的问题都在一起,我会解析XML文件然后使用删除名称空间的样式表保存它们: http://inception.kbenp.net:7080/dev/removenamespaces.xsl

这样我的其他样式表可以更简单。

+0

在使用Firebug的FireFox中,您可以看到我在XSL中定义的XML结构存在,但缺少值。 – 2014-08-27 11:38:05

+1

请在此处发布您的XML - 以及您的XSLT和预期结果。 – 2014-08-27 11:52:20

回答

0

你需要这样的前缀声明命名空间:

xmlns:c="http://standaarden.overheid.nl/cvdr/terms/" 

和使用的XPath是在XML的默认命名空间前缀“c”是上面的命名空间,所有的元素下下跌它。

例如,

<xsl:value-of select="c:cvdr/c:meta/c:owmskern/c:id"/> 

我看到你缺少的XPath前缀在XSLT。

+0

嗨感谢您的可能答案。问题是,我们将XML视为文件,因此在XML文档中可以看到名称空间的声明(所以没有xmlns:c =和xmlns =)。那么,我的XSL应该如何创建,以便我可以检索在当前XSL中可以找到的元素的值? – 2014-08-27 14:35:31

+0

为了解决命名空间问题,我将在解析XML文件之前先使用删除名称空间的样式表来保存它们: http://inception.kbenp.net:7080/dev/removenamespaces.xsl 这样我的其他样式表可以更简单。但谢谢你的答案。它使我走上了正确的道路。 – 2014-08-27 14:58:08

+0

是的,你可以从你的XML中删除命名空间,但是,你正在通过这样做来完成工作。通常,我们更改XSL以获得预期的输出,而不更改输入XML,以便它可以与现有的XSL一起使用。 – 2014-08-28 10:32:53