2010-04-21 30 views
0

我想知道是否缺少明顯的東西。是否可以在XML模式中交替使用兩種類型

我有一個數字列表,可能包括範圍(想想打印對話框的打印頁面選項)。

理想情況下,我希望最終的XML輸出看起來像這樣,頁面和pageRange按順序排列。

<pages> 
<page> 1</page> 
    <pageRange><start>3</start><end>6</end></pageRange> 
    <page> 34</page> 
</pages> 

什麼我將不得不放入架構允許這?

從我看到的: 具有多個頁面和頁面的序列允許的範圍不允許改變。 選擇只允許一個或另一個。

我試圖搞亂所有,但我沒有得到它的正確驗證。

我的短期解決方案是有一系列的範圍,並強制單個數字進入範圍,但它似乎很麻煩。所以我錯過了什麼?

回答

1

試試這個...

<?xml version="1.0" encoding="utf-8"?> 
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <xs:element name="pages"> 
    <xs:complexType> 
     <xs:sequence> 
     <xs:choice maxOccurs="unbounded"> 
      <xs:element name="page" type="xs:unsignedInt" /> 
      <xs:element name="pageRange"> 
      <xs:complexType> 
       <xs:sequence> 
       <xs:element name="start" type="xs:unsignedInt" /> 
       <xs:element name="end" type="xs:unsignedInt" /> 
       </xs:sequence> 
      </xs:complexType> 
      </xs:element> 
     </xs:choice> 
     </xs:sequence> 
    </xs:complexType> 
    </xs:element> 
</xs:schema>
+0

知道這是簡單的。我嘗試了一系列的選擇,出於某種原因,當時還沒有想過要切換它們。我剛剛實現了這一點,發現你也提出了這個建議。 – lief79 2010-04-21 20:03:05

相關問題