2017-02-24 52 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

相关问题