[英]XSD from variable number of XML elements
我正在基於我的應用程序中的某些條件創建xml文檔。 我的xml中的元素數量始終是可變的。 例如,一次可能看起來像:
<TransactionTypes>
<X value="false" text="" />
<O value="false" text="" />
<E value="false" text="" />
<P value="false" text="" />
<C value="false" text="" />
<K value="false" text="" />
</TransactionTypes>
而其他時間像:
<TransactionTypes>
<TT value="false" text="" />
<EP value="false" text="" />
<PY value="false" text="" />
</TransactionTypes>
因此,TransactionTypes內的子元素始終在元素名稱方面有所不同,但它們始終具有value和text屬性。 我該如何為此制作一個XSD?
我認為您不能在通配符上建立XSD限制,然后仍然指定通配符元素的屬性。
唯一可能的標記可能是“ any”: http : //www.w3schools.com/schema/schema_complex_any.asp
並且“任何”可能具有的屬性無法定義。 我認為沒有其他解決方案。 就像您說過的那樣,“可以有任何種類的元素”……如果可以定義所有屬於“ TransactionTypes”子元素的元素,則肯定會做得更好。 不管有多少。 您可以將所有這些子元素映射到相同的complexType並定義屬性值/文本,然后僅執行一次。 但是,通配符將不起作用。
塞巴斯蒂安
在XSD 1.1中,您可以在TransactionTypes元素上定義一個斷言:
<xs:assertion test="every $c in * satisfies @value='false' and @text=''"/>
但是,值得指出的是,XSD並非旨在允許您表達對XML的任意約束,而是描述在XSD設計人員認為設計良好的XML中發現的約束類型; 而且該XML似乎不屬於該類別。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.