2014-04-03 105 views
1

我有如下因素XMLXML孩子到現有的XML節點

<Root> 
.. 
    <someChild>3</someChild> 
.. 
</Root> 

在XSD同樣的事情會像下面

<xs:complexType name="RootType"> 
... 
<xs:element name="someChild" minOccurs="1" maxOccurs="1"> 
     <xs:annotation> 
        <xs:documentation>doc</xs:documentation> 
     </xs:annotation> 
     <xs:simpleType> 
      <xs:restriction base="str:secstrtype"> 
       <xs:maxLength value="25"/> 
      </xs:restriction> 
     </xs:simpleType> 
    </xs:element> 
.... 
</xs:complexType> 

現在的需求發生了變化,這someChild可以有不止一個值。所以,我正在考慮xml如下所示,因此,舊版服務器將獲得他們以前獲得的數據,但新服務器將能夠查找子項並執行其他操作。有沒有辦法處理這類問題?

<Root> 
    .. 
     <someChild>3 
        <someChild> 
         5 
          <someChild> 
            9 
          </someChild> 
        </someChild> 

     </someChild> 
    .. 
    </Root> 

回答

0

可以更改someChild類型的mixedcomplexType,但你會失去控制類型的能力(和限制,如長度)的文本數據:

<xs:element name="someChild"> 
    <xs:complexType mixed="true"> 
     <xs:sequence> 
      <xs:element ref="someChild" minOccurs="0" maxOccurs="1"/> 
     </xs:sequence> 
    </xs:complexType> 
</xs:element> 

這將驗證您建議的實例,但文本內容將被視爲純文本。