xsd 从枚举或等效类型中选择多个值

Zer*_*ite 2 xml xsd

我有以下 XSD 示例

<xs:element name="days" minOccurs="0">
    <xs:simpleType>
        <xs:restriction base="xs:string">
            <xs:enumeration value="Monday"/>
            <xs:enumeration value="Tuesday"/>
            <xs:enumeration value="Wednesday"/>
            <xs:enumeration value="Thursday"/>
            <xs:enumeration value="Friday"/>
            <xs:enumeration value="Saturday"/>
            <xs:enumeration value="Sunday"/>
        </xs:restriction>
    </xs:simpleType>
</xs:element>
Run Code Online (Sandbox Code Playgroud)

xml 提取应该能够包含列表中的多个值,但将它们输入的内容限制在上面的枚举中,例如,<days>星期六、星期三</days>。这可能吗?

Pet*_*dea 5

如果您可以松开逗号(在 XSD 中不支持作为分隔符),并且满足于空格,那么这就是您的解决方案:

<?xml version="1.0" encoding="utf-8" ?>
<!-- XML Schema generated by QTAssistant/XSD Module (http://www.paschidev.com) -->
<xsd:schema elementFormDefault="qualified" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <xsd:element name="days">
        <xsd:simpleType>
            <xsd:list>
                <xsd:simpleType>
                    <xsd:restriction base="xsd:string">
                        <xsd:enumeration value="Monday"/>
                        <xsd:enumeration value="Tuesday"/>
                        <xsd:enumeration value="Wednesday"/>
                        <xsd:enumeration value="Thursday"/>
                        <xsd:enumeration value="Friday"/>
                        <xsd:enumeration value="Saturday"/>
                        <xsd:enumeration value="Sunday"/>
                    </xsd:restriction>                  
                </xsd:simpleType>               
            </xsd:list>
        </xsd:simpleType>
    </xsd:element>
</xsd:schema>
Run Code Online (Sandbox Code Playgroud)

你基本上是在使用一个列表,因此这样的事情是完全有效的:

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<!-- Sample XML generated by QTAssistant (http://www.paschidev.com) -->
<days xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">Monday Tuesday Wednesday </days>
Run Code Online (Sandbox Code Playgroud)

在这里积极主动……例如,如果您可能想要确保值的唯一性,那么这不能在 XSD 中强制执行。