我有以下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>
xml提取应该能够包含列表中的多个值,但是限制它们输入上面的枚举值,例如,&lt; days&gt; Saturday,Wednesday&lt; / days&gt;。这可能吗?
答案 0 :(得分:4)
如果您可以松开逗号(在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>
你基本上使用的是一个列表,所以这样的东西是完全有效的:
<?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>
要在此处积极主动......例如,如果某人可能希望确保值的唯一性,则无法在XSD中强制执行此操作。
答案 1 :(得分:1)
因为您提到了用户输入,所以使用正则表达式可以更好地处理您的用例:
.*day(,.*day)*
您可以将*.day
替换为(Monday|Tuesday|...)
。
答案 2 :(得分:0)
如上所述,但要明确说明:
<xs:simpleType name="DayOfWeek">
<xs:restriction base="xs:string">
<xs:pattern value="(Mon|Tues|Wed)(,(Mon|Tues|Wed))*"/>
</xs:restriction>
</xs:simpleType>
此表达式包含您想要的值加 这也允许“Mon,Mon,Mon,Tues,Mon”这可能不是一个大问题,这取决于您在阅读后如何使用数据。我的意思是如果他们是旗帜那么:周一,周一,周一不是问题。