2012-05-20 101 views
-1

我已經收到了多個xml文檔,我必須通過xsl將其轉換爲一個unifrom xml文檔。 我還必須將名稱空間和模式添加到此結果xml文檔。我的問題是,我必須通過xsl樣式表添加架構和命名空間到這個文檔,我不知道該怎麼做。雖然我想了解如何添加命名空間,但我如何通過樣式表爲我的XML結果文檔提供模式的位置?如何通過xslt 1.0添加名稱空間和模式

這是我在我在不上班的那一刻樣式表,因爲的schemaLocation的:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
     xmlns:main="http://www.vm.com/main" 
     xmlns:teleprompt ="http://www.vm.com/teleprompt" 
     xmlns:warner ="http://www.vm.com/warner" 
     xsi:schemaLocation="http://www.vm.com/main mainSchema.xsd" 
     version="1.0"> 

這是我有什麼,我想使用的命名空間:

<album teleprompt:type="simple" teleprompt:href="http://www.vm.com/teleprompt"> 

我還需要這個上面的代碼來適用於它的樹中的所有東西。

這些專輯有四個,只有兩個需要命名空間。 請不要給我分解成模板的答案,因爲我沒有在我的樣式表中使用它。

非常感謝您的幫助。

+0

請考慮發佈不同XML輸入版本的樣本,然後發佈要用XSLT創建的相應輸出。尋求XSLT方面的幫助,但不要求使用模板發佈解決方案相當奇怪,你如何編寫沒有模板的樣式表?如果您希望我們幫助您修復樣式表代碼,請向我們展示代碼,而不僅僅是根元素的開始標記。 –

回答

0

您需要爲'xsi'添加命名空間綁定,即http://www.w3.org/2001/XMLSchema-instance

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:main="http://www.vm.com/main" 
    xmlns:teleprompt ="http://www.vm.com/teleprompt" 
    xmlns:warner ="http://www.vm.com/warner" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://www.vm.com/main mainSchema.xsd" 
    version="1.0"> 

如何在不使用模板的情況下成功當然是另一回事。

+0

謝謝我不能相信我遺漏了 –