2014-12-04 78 views
1

我需要一個XSD來支持可能具有不同頂層元素名稱的XML,但XML中的所有元素都是相同的。XSD支持具有不同名稱的頂層元素

不確定是否可能,值得一問。

例如:

<abc> 
    <name></name> 
    <address></address> 
    <phone> 
    <home></home> 
    <cell></cell> 
    </phone> 
</abc> 

<xyz> 
    <name></name> 
    <address></address> 
    <phone> 
    <home></home> 
    <cell></cell> 
    </phone> 
</zyx> 

例XSD:

<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <xs:element name="abc"> 
    <xs:complexType> 
     <xs:sequence> 
     <xs:element type="xs:string" name="name"/> 
     <xs:element type="xs:string" name="address"/> 
     <xs:element name="phone"> 
      <xs:complexType> 
      <xs:sequence> 
       <xs:element type="xs:string" name="home"/> 
       <xs:element type="xs:string" name="cell"/> 
      </xs:sequence> 
      </xs:complexType> 
     </xs:element> 
     </xs:sequence> 
    </xs:complexType> 
    </xs:element> 
</xs:schema> 

回答

3

當然,簡單地命名complexType,全局定義它,並且在聲明引用它可能的根元素:

<?xml version="1.0" encoding="UTF-8"?> 
<xs:schema attributeFormDefault="unqualified" 
      elementFormDefault="qualified" 
      xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <xs:element name="abc" type="CommonType"/> 
    <xs:element name="xyz" type="CommonType"/> 
    <xs:complexType name="CommonType"> 
    <xs:sequence> 
     <xs:element type="xs:string" name="name"/> 
     <xs:element type="xs:string" name="address"/> 
     <xs:element name="phone"> 
     <xs:complexType> 
      <xs:sequence> 
      <xs:element type="xs:string" name="home"/> 
      <xs:element type="xs:string" name="cell"/> 
      </xs:sequence> 
     </xs:complexType> 
     </xs:element> 
    </xs:sequence> 
    </xs:complexType> 
</xs:schema> 
+0

太棒了!謝謝! – pnvang 2014-12-04 21:02:07

相關問題