2013-07-18 90 views
4

我經常在我的工作中使用xsd模式文件,並且我想知道:是否可以爲xsd模式語言編寫xsd模式文件?這似乎是一種記錄模式語言的明顯方式,我認爲這將是其開發人員嘗試的第一件事情。但是,我一直無法找到明顯搜索條件的文件。如果不可能,爲什麼不呢?如果有可能,有沒有人做過,有沒有一個地方可以下載這樣的文件?是否有xsd模式的xsd模式?

注:

  1. 維基百科顯示XSD模式語言「不是100%的自我描述」,因爲「內容和屬性聲明不能依靠屬性或元素上下文」。如果是這樣,你能否提供一個需要這種上下文並因此不能表示的xsd特性的例子?

  2. 這個問題不純粹是學術問題。我可能需要編寫一個在不久的將來處理xsd模式文件的程序,並且從xsd(使用諸如generateDS之類的工具)生成源代碼將是一個很容易開始的地方。

+0

@John我認爲這可能是,雖然我以前看過那個,但沒有意識到相似性。 – jcrudy

回答

3

事實上,對於XSD語言XML架構, 它從一開始(因爲它的URL建議)存在:

http://www.w3.org/2001/XMLSchema.xsd

,這裏是其最XSD文件最新版本 - W3C XML模式定義語言(XSD)1.1:

http://www.w3.org/2012/04/XMLSchema.xsd

事實上,茨艾倫e XSD文件(至少第一個)現在被各種使用XML模式的軟件大量使用。否則,我認爲,以XML格式表示XML模式語言並且不具有它的XSD描述是完全荒謬的!


對於這個問題,甚至有(以XML技術非常重要)名爲XSLT 的基於XML的編程語言,而且,你猜,有它的XML模式太:

http://www.w3.org/2007/schema-for-xslt20.xsd

+0

只是指出這個「架構模式」也出現在xml架構規範本身的附錄A中:http://www.w3.org/TR/2004/REC-xmlschema-1-20041028/structures.html# normative-schemaSchema但是它不能捕獲XSD的所有約束(即,相對於這個「架構模式」的有效性不能保證正確性)。 – 13ren

4

XSD是「不是100%自描述」的維基百科聲明是正確的,因爲並不是每個符合schema-for-schema-documents(S4SD)的文檔都能夠生成有效的模式。其中一個原因是存在無法在XSD中表達的約束(例如,xpath屬性的內容應該是語法有效的XPath表達式);另一個原因是XSD只能在單個文檔上表達約束,而爲了使模式有效,存在適用於文檔的一致性約束。

如果S4SD充分利用了XSD 1.1功能,那麼它將有可能更接近所有「XML表示」規則的100%覆蓋範圍;我希望嘗試這一點,但它從來沒有完成。仍然會有一些差距。

您計劃編寫處理模式文檔的軟件是您應該仔細考慮的問題。從原始模式文檔中提取信息並不容易,因爲架構作者可以通過多種不同的方式表達相同的內容。另一種方法是使用API​​來訪問模式處理器從原始輸入文檔創建的「模式組件」(例如元素聲明和類型定義)。多個模式處理器提供這樣的API。 Saxon-EE以一種稱爲SCM的XML表示形式提供模式組件,這比原始XSD文檔更容易處理。