2011-04-20 72 views
0

對於下面的XML文件如何定義具有屬性和內部節點的元素?

<MyElement> 
    <Data1>123</Data1> 
    <Data2>234</Data2> 
</MyElement> 

XSD架構是這樣的:

<xs:element name="MyElement" minOccurs="1" maxOccurs="1" > 
    <xs:complexType> 
     <xs:sequence> 
      <xs:attribute name="Data1" type="xs:unsignedInt" /> 
      <xs:attribute name="Data2" type="xs:unsignedInt" /> 
     </xs:sequence> 
    </xs:complexType> 
</xs:element> 

對於在子節點有數據不是元素,但屬性:

<MyElement Data1="123" Data2="234" /> 

XSD架構如下所示:

<xs:element name="MyElement" minOccurs="1" maxOccurs="1" > 
    <xs:complexType> 
     <xs:attribute name="Data1" type="xs:unsignedInt" /> 
     <xs:attribute name="Data2" type="xs:unsignedInt" /> 
    </xs:complexType> 
</xs:element> 

但是,如何爲「混合」情況定義XSD模式?

<MyElement Data1="123"> 
    <Data2>234</Data2> 
</MyElement> 

編輯:和另一個問題:

<MyElement Data1="123">234</MyElement> 

非常感謝!

P.S.我嘗試了不同的組合,但驗證器(內置於MSVS2010抱怨我的任何想法)。

回答

1

由於每一個online converter

<MyElement Data1="123"> 
    <Data2>234</Data2> 
</MyElement> 

轉換爲

<?xml version="1.0" encoding="utf-16"?> 
<xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> 
    <xs:element name="MyElement"> 
    <xs:complexType> 
     <xs:sequence> 
     <xs:element name="Data2" type="xs:string" minOccurs="0" msdata:Ordinal="0" /> 
     </xs:sequence> 
     <xs:attribute name="Data1" type="xs:string" /> 
    </xs:complexType> 
    </xs:element> 
    <xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true"> 
    <xs:complexType> 
     <xs:choice minOccurs="0" maxOccurs="unbounded"> 
     <xs:element ref="MyElement" /> 
     </xs:choice> 
    </xs:complexType> 
    </xs:element> 
</xs:schema> 

我猜你只想要這個

<xs:element name="MyElement"> 
    <xs:complexType> 
     <xs:sequence> 
     <xs:element name="Data2" type="xs:string" /> 
     </xs:sequence> 
     <xs:attribute name="Data1" type="xs:string" /> 
    </xs:complexType> 
    </xs:element> 

而且你的第一個例子看起來錯了,因爲你的XML節點應該轉換結束元素而不是序列的屬性

相關問題