簡體   English   中英

XSD來自可變數量的XML元素

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM