2015-04-17 44 views
2

我需要xslt版本2在記錄或元素級別爲「xml」屬性前綴(xml:lang =「en-us」)生成域名:強制xslt生成「xml」域名

xmlns:xml="http://www.w3.org/XML/1998/namespace" 

我試圖同時使用XSL:命名空間,並使用XSL:屬性...命名空間=

不論是對於我的工作 - 任何建議將是了不起的 感謝大衛

+0

它被稱爲xml命名空間,而不是domian – PhillyNJ

回答

3

http://www.w3.org/TR/REC-xml-names/#ns-decl「的前綴xml由定義綁定到命名空間名稱http://www.w3.org/XML/1998/namespace。它可以,但不必被聲明,也不能綁定到任何其他名稱空間名稱。「所以,雖然你當然可以在字面結果元素上使用該名稱空間,或者用xsl:namespace輸出它,但我認爲不能保證串行器輸出它忽略它不改變XML的語義。

1

正如馬丁已經解釋的,前綴xml:已經與命名空間URI http://www.w3.org/XML/1998/namespace宣佈在一起。你可以把它看作

xmlns:xml="http://www.w3.org/XML/1998/namespace" 

但作爲隱含的聲明在所有XML文檔中都可用,並且被所有符合的聲明ant XML應用程序。

因此,您的問題的答案是:您根本不需要聲明前綴xml:,它可以默認使用。您可以使用attributes in this namespacexml:lang,xml:space,​​和xml:id)而不聲明其前綴。

順便說一句,你可以自己試試。只要沒有任何名稱空間聲明創建一個XML文件,並在其中使用xml:lang作爲一個屬性:

<?xml version="1.0" encoding="UTF-8"?> 
<root xml:lang="en"/> 

沒有XML處理器會抱怨,甚至沒有你的XSLT引擎。