【问题标题】:XSD - how to add two 'ref' to the same elementXSD - 如何将两个“引用”添加到同一个元素
【发布时间】:2013-04-02 16:49:48
【问题描述】:

我一直在尝试形成这个 XSD,有人可以帮忙吗...

我有一个元素“国家”如下:

<xs:element name="country">
    <xs:complexType>
        <xs:sequence>
            <xs:element name="id" type="xs:long" minOccurs="0" />
            <xs:element name="isoCode" type="xs:string" minOccurs="0" />
            <xs:element name="currencyCode" type="xs:string" minOccurs="0" />
        </xs:sequence>
    </xs:complexType>
</xs:element>

现在,我需要用两个元素“源国家”和“目标国家”来形成 XSD,它们都应该引用“国家”。有人可以帮我形成那个 XSD。

<xs:element name="crossCountries">
    <xs:complexType>
        <xs:sequence>
            <xs:element name="id" type="xs:long" minOccurs="0" />

            <xs:element ref="country" />   <!-- Source Country -->

            <xs:element ref="country" />   <!-- Destination Country -->

        </xs:sequence>
    </xs:complexType>
</xs:element>

【问题讨论】:

    标签: xsd element ref


    【解决方案1】:

    您不能引用一个元素并为该引用分配不同的标记名称。相反,您要做的是为该元素定义内容模型(复杂类型会这样做)并在不同命名的标签下重用它。

    <xs:complexType name="country">
        <xs:sequence>
            <xs:element name="id" type="xs:long" minOccurs="0" />
            <xs:element name="isoCode" type="xs:string" minOccurs="0" />
            <xs:element name="currencyCode" type="xs:string" minOccurs="0" />
        </xs:sequence>
    </xs:complexType>
    

    然后:

    <xs:element name="crossCountries">
      <xs:complexType>
        <xs:sequence>
            <xs:element name="id" type="xs:long" minOccurs="0" />
    
            <xs:element name="sourceCountry" type="country" />   <!-- Source Country -->
    
            <xs:element name="destinationCountry" type="country" />   <!-- Destination Country -->
    
        </xs:sequence>
      </xs:complexType>
    </xs:element>
    

    【讨论】:

      猜你喜欢
      • 2017-11-21
      • 1970-01-01
      • 2022-07-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多