我從一個xml文檔創建了一個模式,該文檔包含幾個類型的多個元素,但是以隨機順序需要一次序列化然後反序列化(我在VB中編程.NET但C#的答案是好的,所以我沒有指定的語言)。多個隨機排序元素的正確模式
<xml version="1.0" encoding="utf-8">
<sample:ABC>
<sample:DEF></sample:DEF>
<sample:XYZ></sample:XYZ>
<sample:DEF></sample:DEF>
<sample:PNQ></sample:PNQ>
<sample:DEF></sample:DEF>
<sample:DEF></sample:DEF>
</sample:ABC>
到目前爲止,我有這個模式這是由生產XSD.EXE:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="ABC">
<xs:complexType>
<xs:sequence>
<xs:element name="DEF" minOccurs="0" />
<xs:element name="XYZ" minOccurs="0" />
<xs:element name="PNQ" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
然而,這並不符合所有可能的方式將XML可以進來,很明顯,我已經簡化了XML和模式,並且只顯示一個樣本,以便更容易地展示問題。
我見過一個建議,使用all
元素,但只允許每個孩子之一。我也嘗試添加重複的子元素(例如兩個DEF元素),但是會創建一個「模糊」模式。 我也嘗試過使用一系列選擇元素,但從架構生成的代碼必須使用對象,因此不是類型安全的。我認爲有可能使用繼承來解決這個問題,但是我的模式技能並不適合它。
問題是:是否有任何模式元素可以用來獲得與xml的正確匹配?如果沒有,我可以至少創建一個可用於檢查xml有效性的模式嗎?
謝謝,我錯過了,現在修復 – 2013-03-08 08:21:40