0

我有一个元素“方法”和“名称”,如下所示:我想根据“方法”中的值将“名称”中的引用从“group1”更改为“group2”,因为我想更改限制。

有可能这样做吗?

<xs:element name="Method" type="xs:string" />

<xs:element name="Name">
    <xs:complexType>
        <xs:sequence>
            <xs:choice maxOccurs="unbounded">
                <xs:element ref="group1" />
            </xs:choice>
        </xs:sequence>
    </xs:complexType>
</xs:element>


<xs:element name="group1">
    <xs:simpleType>
        <xs:restriction base="xs:string">
            <xs:enumeration value="ABC" />
            <xs:enumeration value="PQR" />
        </xs:restriction>
    </xs:simpleType>
</xs:element>

<xs:element name="group2">
    <xs:simpleType>
        <xs:restriction base="xs:string">
            <xs:enumeration value="XYZ" />
            <xs:enumeration value="ABC" />
        </xs:restriction>
    </xs:simpleType>
</xs:element>
4

1 回答 1

1

对于 XSD 1.0,您必须在 XML Schema 之外验证这样的约束。考虑使用 XSLT 进行额外验证或使用 Schematron。

对于 XSD 1.1,您可以使用条件类型赋值。见xs:alternative。但是请注意,您必须进行一些重组。xs:alternative测试可以引用元素本身的属性和常量,而不是文档中的任意元素;甚至不允许相对引用其他元素或属性。

于 2013-10-08T11:18:27.670 回答