[英]How can an XML schema allow simple content or a complex type for an element?
[英]XSD: Complex type that can have either simple content or element context
我正在為一個相當復雜的XML文件格式編寫XSD。 在許多方面,XML可以包含實際的文字值或產生值的腳本。 (想想Excel: 42
vs. =21+21
)
例如,要指定大小,寫入以下任一項應該是有效的:
<size>42</size>
<size><script>2*21</script></size>
我的第一個想法是使用<choice>
來允許在size
元素中使用int或script。 但是,我必須給字符串元素一個名稱,導致一個笨拙的語法,如<size><value>42</value></size>
。 由於文字的使用頻率遠遠超過腳本,因此我不想誇大它們的語法。
有關如何在XSD中表達初始語法的任何想法?
我認為有兩個不錯的選擇。
<size>
內放置任何子元素。 相反,您可以在size元素上設置'type'屬性,向消費者指示它是文字還是腳本。 要在這些選項之間進行選擇,您可以將自己置於消費者應用程序的角度,並決定最有可能獲得此數據的方式。 一般來說,我認為如果主要消費者是將XML解析為一次性集成任務的開發人員,那么選項一是最好的(因為輸出和XSD都更簡潔,在我看來更具可讀性); 如果你看到一個使用你的模式的XML工具,那么選項二可能會更好,因此如果要解析具體元素,它可能更容易做一些特殊的事情。 最終,雖然我只是猜測你的用例是什么......
在XSD 1.0中,如果您不想更改XML實例的設計,那么您唯一真正的選擇是將內容模型聲明為混合內容。
在XSD 1.1中,您可以將其聲明為混合內容,然后使用斷言來表示元素必須具有元素子元素或文本節點子元素,但不能同時具有兩者。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.