我如何使具有枚举内容的xml元素不可重复

时间:2019-04-05 14:16:12

标签: xml xsd

我想拥有几个元素电子游戏实例,每个实例都需要一个或多个元素控制台,但是不必在每个元素电子游戏中重复进行。 元素控制台的内容来自枚举。

我的视频游戏示例如下:

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

1 个答案:

答案 0 :(得分:0)

您在右行,但是level=error msg="Failed to retrieve auth configuration for ingress my-namespace/configuration-docs-ingress: failed to load auth credentials: secret \"my-namespace\"/\"access-secret\" not found" 只能引用子项,并且只能与一个元素相关联。因此,约束需要放在元素包含xs:unique元素上。

这意味着您需要在使用consola的地方应用约束,而不是在其定义中(这并不理想)。

tVideojuego

enter image description here