2014-08-27 35 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