有没有办法限制 xsd 模式中的多个元素?

Is there a way to make restriction on multiple elements in xsd schema?

我在做 xsd 架构,我在想有没有办法限制多个元素,而不是一次只限制一个元素。我想这样做,这样我就可以使模式更多 readable.This 是我的模式:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
       targetNamespace="https://www.w3schools.com"
       elementFormDefault="qualified"
       xmlns="https://www.w3schools.com">
<xs:element name="WorldWideHappiness" type="worldHappiness"/>
<xs:complexType name="worldHappiness">
    <xs:all>
        <xs:element name="Record" type="recordType" maxOccurs="1" minOccurs="0"/>
    </xs:all>
</xs:complexType>

<xs:complexType name="recordType">
    <xs:sequence>
        <xs:element name="Country" type="countryType" maxOccurs="1" minOccurs="0"/>
    </xs:sequence>
</xs:complexType>

<xs:complexType name="countryType">
    <xs:sequence>
        <xs:element name="Name" type="xs:string"/>
        <xs:element name="Region" type="xs:string"/>
        <xs:element name="HappinessRank">
            <xs:simpleType>
                <xs:restriction base="xs:int">
                    <xs:minInclusive value="1"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:element>

        <xs:element name="HappinessScore">
        <xs:simpleType>
            <xs:restriction base="xs:double">
                <xs:minInclusive value="0.0"/>
            </xs:restriction>
        </xs:simpleType>
        </xs:element>

        <xs:element name="LowerConfidenceInterval">
            <xs:simpleType>
                <xs:restriction base="xs:double">
                    <xs:minInclusive value="0.0"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:element>

        <xs:element name="UpperConfidenceInterval">
            <xs:simpleType>
                <xs:restriction base="xs:double">
                    <xs:minInclusive value="0.0"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:element>

        <xs:element name="Health">

            <xs:simpleType>
                <xs:restriction base="xs:double">
                    <xs:minInclusive value="0.0"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:element>

    </xs:sequence>
</xs:complexType></xs:schema>

我想知道我是否可以为所有具有 minInclusive 0.0 而不是单独的简单类型提供 minInclusive。

您需要定义自己的通用简单类型,并在适用的地方使用。 在一个位置对该简单类型所做的任何更改都将应用于所有使用它的元素。

请看下面的概念示例。

XML

<?xml version="1.0"?>
<root>
    <HappinessScore>0.1</HappinessScore>
    <LowerConfidenceInterval>0.75</LowerConfidenceInterval>
    <Health>770</Health>
</root>

XSD

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           elementFormDefault="qualified">
    <xs:element name="root">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="HappinessScore" type="decimalType"/>
                <xs:element name="LowerConfidenceInterval" type="decimalType"/>
                <xs:element name="Health" type="decimalType"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:simpleType name="decimalType">
        <xs:restriction base="xs:decimal">
            <xs:minInclusive value="0.0"/>
        </xs:restriction>
    </xs:simpleType>
</xs:schema>