【问题标题】:Is there a way to nest complexTypes without a wrapper tag?有没有办法在没有包装标签的情况下嵌套 complexTypes?
【发布时间】:2017-02-24 18:05:04
【问题描述】:

我有一个<choice>,我需要从它的当前元素中提取它自己的类型(以便其他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>

这可行,但只允许我将type1type2s 放在标签MyTypeInClass 中,这是我不想要的。有什么想法吗?

【问题讨论】:

    标签: xml xsd xsd-validation xml-validation


    【解决方案1】:

    使用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>  
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-31
      • 2014-05-16
      • 1970-01-01
      • 1970-01-01
      • 2019-08-12
      • 2023-04-09
      相关资源
      最近更新 更多