我想有几个元素视频游戏的实例,每个都需要有一个或几个元素控制台,但没有在每个元素视频游戏中重复。元素控制台内容来自枚举。
我的视频游戏示例如下:
<xs:complexType name="tVideojuego">
<xs:complexContent>
<xs:extension base="a:tSoftware">
<xs:sequence>
<xs:element name="consola" maxOccurs="unbounded">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="XBox"/>
<xs:enumeration value="Play 4"/>
<xs:enumeration value="Nintendo Switch"/>
<xs:enumeration value="PC"/>
</xs:restriction>
</xs:simpleType>
<xs:unique name="consolaUnica">
<xs:selector xpath="consola"></xs:selector>
<xs:field xpath="."></xs:field>
</xs:unique>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
然而,在每个元素视频游戏中,我可以拥有多个PC,我不想允许它。
例如,不允许使用下一个视频游戏元素,因为pc出现3次,其中2次内容相同:
<ar:videojuego>
<id>videojuegoTheDivision2</id>
<nombre>The Division 2</nombre>
<cantidadArticulo>879</cantidadArticulo>
<empresa>Ubisoft</empresa>
<consola>PC</consola>
<consola>PC</consola>
<consola>Nintendo Switch</consola>
</ar:videojuego>
你在右边的行,但是xs:unique
只能引用子项,并且只能与一个元素相关联。因此约束需要继续包含consola
元素的元素。
这意味着您需要在使用tVideojuego
的地方应用约束,而不是在其定义中(这不是理想的)。
<?xml version="1.0" encoding="utf-8" ?>
<!--Created with Liquid Studio 2019 (https://www.liquid-technologies.com)-->
<xs:schema elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:complexType name="tSoftware" />
<xs:complexType name="tVideojuego">
<xs:complexContent>
<xs:extension base="tSoftware">
<xs:sequence>
<xs:element name="consola" maxOccurs="unbounded">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="XBox" />
<xs:enumeration value="Play 4" />
<xs:enumeration value="Nintendo Switch" />
<xs:enumeration value="PC" />
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="Sample">
<xs:complexType>
<xs:sequence>
<xs:element name="VideoGame" type="tVideojuego">
<xs:unique name="consolaUnica">
<xs:selector xpath="consola"></xs:selector>
<xs:field xpath="."></xs:field>
</xs:unique>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>