在xsd中引用元素的内容

时间:2019-01-21 14:23:58

标签: xsd

是否可以在xsd中引用一个元素,以便将其内容写入另一个元素?

我想到诸如“送货地址”和“账单地址”之类的东西。 如果选择“计费地址”与“收货地址”相同,则将字段“收货地址”中的内容写入“计费地址”。

我是xsd / xml的新手,欢迎提出建议和批评。

这是我到目前为止所拥有的...

<xsd:group name="c_Shipping_Adress">
    <xsd:element name="shipping_address">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element name="Title"/>
                <xsd:element name="First_Name"/>
                <xsd:element name="Last_Name"/>
                <xsd:element name="Street"/>
                <xsd:element name="Zip"/>
                <xsd:element name="City"/>
            </xsd:sequence>
        </xsd:complexType>
    </xsd:element>
</xsd:group>
<xsd:group name="c_Billing_Adress">
        <xsd:element name="billing_address">
            <xsd:complexType>
                <xsd:choice>
                    <xsd:element name="is_same_as_shipping_address">
                        <xsd:group ref="shipping_address"/>
                    </xsd:element>
                    <xsd:group name="is_not_same_as_shipping_address">
                            <xsd:sequence>
                                <xsd:element name="Title"/>
                                <xsd:element name="First_Name"/>
                                <xsd:element name="Last_Name"/>
                                <xsd:element name="Street"/>
                                <xsd:element name="Zip"/>
                                <xsd:element name="City"/>
                            </xsd:sequence>
                    </xsd:group>
                </xsd:choice>
            </xsd:complexType>
        </xsd:element>
</xsd:group>

1 个答案:

答案 0 :(得分:0)

说实话,它不是很清楚您的要求,并且您的XSD的结构不正确,因此很难确定您的意图。但是希望以下内容可以提供足够的基础。

enter image description here

<?xml version="1.0" encoding="utf-8" ?>
<!--Created with Liquid Studio 2019 BETA (https://www.liquid-technologies.com)-->
<xs:schema elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="Root">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="ShippingAddress" type="AddressType" />
                <xs:element name="BillingAddress" type="AddressType" />
                <xs:element name="OtherAddress">
                    <xs:complexType>
                        <xs:complexContent>
                            <xs:extension base="AddressType">
                                <xs:sequence>
                                    <xs:element name="ExtraThing" type="xs:string" />
                                </xs:sequence>
                            </xs:extension>
                        </xs:complexContent>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:complexType name="AddressType">
        <xs:sequence>
            <xs:element name="Title"  type="xs:string" />
            <xs:element name="First_Name"  type="xs:string" />
            <xs:element name="Last_Name" type="xs:string"  />
            <xs:element name="Street"  type="xs:string" />
            <xs:element name="Zip"  type="xs:string" />
            <xs:element name="City" type="xs:string"  />
        </xs:sequence>
    </xs:complexType>
</xs:schema>