简体   繁体   English

有没有办法限制 xsd 架构中的多个元素?

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

I was doing xsd schema and I was thinking is there a way to make restriction for multiple elements and not only for one at a time.我正在做 xsd 模式,我在想有没有办法对多个元素进行限制,而不仅仅是一次限制。 I want to do this so I can make the schema more readable.This is my schema:我想这样做,以便使架构更具可读性。这是我的架构:

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

I want to know if I can give minInclusive for all of the simple types which has minInclusive 0.0 and not individually.我想知道我是否可以为所有具有 minInclusive 0.0 而不是单独的简单类型提供 minInclusive。

You need to define your own common simple type, and use where applicable.您需要定义自己的通用简单类型,并在适用的情况下使用。 Any change to that simple type in one single spot will apply to all elements that are using it.在一个地方对该简单类型的任何更改都将应用于所有使用它的元素。

Please see below a conceptual example.请参阅下面的概念示例。

XML XML

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

XSD 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>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM