2013-05-29 27 views
0

是否有可能將xsd命名空間轉換爲不同的結果?如何爲樣式表和結果創建不同的「xsd命名空間」?

在xsl的輸入名稱空間:stylesheet元素看起來像:

xmlns:xsd="http://www.w3.org/2001/XMLSchema" 

和輸出根元件的輸出的命名空間應該看起來像:

xmlns:xsd="http://www.w3.org/2001/XMLSchema#" 

我試圖手動asssign第二命名空間轉換爲我的輸出的根元素,然而,XSLT轉換不再識別以「xsd」爲前綴的元素,因爲它似乎覆蓋原來的命名空間。

更改前綴和生成別名也不是一個選項:在輸出(RDF/XML)中,元素的前綴也應該稱爲「xsd」。

謝謝你的幫助。

編輯:

這裏有兩個文件的相關部分:

輸入文件(XSD):

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 

應該成爲

輸出文件(RDF/XML) :

<rdf:RDF xmlns:xsd="http://www.w3.org/2001/XMLSchema#"> 
+0

如果您發現問題的答案,請將其添加爲答案並標記最適合您的答案(點擊勾號)。 –

回答

0

答:

我花了一些時間,但最終我想通了,我自己的解決方案:

我首先必須排除從結果文件樣式表的前綴:

<xsl:stylesheet version="2.0" xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
     exclude-result-prefixes="xsd"> 

然後創建了一個新的XSD命名空間輸出的根元素:

<xsl:namespace name="xsd" select="'http://www.w3.org/2001/XMLSchema#'"/> 

無論如何,謝謝你的幫助。

1

如果要轉換所有元素的命名空間http://www.w3.org/2001/XMLSchema是在命名空間http://www.w3.org/2001/XMLSchema#然後使用

<xsl:template match="xsd:*"> 
    <xsl:element name="{name()}" namespace="http://www.w3.org/2001/XMLSchema#"> 
    <xsl:apply-templates select="@* | node()"/> 
    </xsl:element> 
</xsl:template> 

如果不那麼幫助,請告訴我們您的輸入XML的樣品和相應的輸出樣本您想創造。

+0

謝謝你的回答,我編輯了我的問題,也許現在更清楚了 –