2017-02-24 84 views
1

我有一個<choice>,我需要將它的當前元素拖放到它自己的類型中(這樣它可以被其他complexTypes引用)。有沒有辦法做到這一點,而不需要包裝標籤?有沒有一種方法來嵌套complexTypes沒有包裝標籤?

這是我到目前爲止有:

複雜類型:

<xs:complexType name="MyType"> 
     <xs:choice minOccurs="0" maxOccurs="unbounded"> 
      <xs:element ref="type1"/> 
      <xs:element ref="type2"/> 
     </xs:choice> 
</xs:complexType> 

和引用它

<xs:complexType name="AdaptabilitySettingMetadataBase" abstract="true"> 
    <xs:sequence> 
     <!-- other elements --> 
     <xs:element name="MyTypeInClass" type="MyType" 
        minOccurs="0" maxOccurs="unbounded"/> 
    </xs:sequence> 
</xs:complexType> 

這工作,但只允許我把type1type2在標籤MyTypeInClass內,我不想要。有任何想法嗎?

回答

0

使用xs:group而不是xs:complexType實現自己的目標:

<?xml version="1.0" encoding="UTF-8"?> 
<xs:schema xmlns:ds="http://www.w3.org/2000/09/xmldsig#" 
      xmlns:xs="http://www.w3.org/2001/XMLSchema" 
      xmlns="http://www.esocial.gov.br/schema/evt/evtCS/v02_02_00" 
      targetNamespace="http://www.esocial.gov.br/schema/evt/evtCS/v02_02_00" 
      elementFormDefault="qualified" attributeFormDefault="unqualified"> 

    <xs:element name="elem1"/> 
    <xs:element name="elem2"/> 

    <xs:group name="MyType"> 
    <xs:choice> 
     <xs:element ref="elem1"/> 
     <xs:element ref="elem2"/> 
    </xs:choice> 
    </xs:group> 

    <xs:complexType name="AdaptabilitySettingMetadataBase" abstract="true"> 
    <xs:sequence> 
     <!-- other elements --> 
     <xs:group ref="MyType" minOccurs="0" maxOccurs="unbounded"/> 
    </xs:sequence> 
    </xs:complexType>  
</xs:schema> 
+0

謝謝!這正是我需要的 – chama

相關問題