验证 XSD 中的竖线分隔字符串
validate pipe-separated string in XSD
我有一个用例,我需要在 XSD 属性值中验证管道分隔的字符串。
示例:
XML 属性
<Fruits Names="Apple|Grapes|Banana">
我想编写一个 XSD 模式,其中 Fruits 属性名称允许以下 3 个值的以下和其他有效组合。
Apple
Banana
Grapes
Apple|Banana
Grapes|Banana
Apple|Grapes
Banana|Grapes
Grapes|apple
Apple|Grapes|Banana
我目前写了类似
的东西
<xs:simpleType name="Fruits">
<xs:restriction base="xs:string">
<xs:pattern value="Apple*|Grapes*|Banana" ></xs:pattern>
</xs:restriction>
</xs:simpleType>
我想在C#中使用这个,所以我想我只能使用XSD 1.0.
我建议您放弃 |
分隔符,改用 space (</code>)。</p>
<p>即:</p>
<pre><code><Fruits Names="Apple Grapes Banana"/>
那么,以下XSD将满足您的要求:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Fruits">
<xs:complexType>
<xs:attribute name="Names">
<xs:simpleType>
<xs:list itemType="FruitTypes"/>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:simpleType name="FruitTypes">
<xs:restriction base="xs:string">
<xs:enumeration value="Apple"/>
<xs:enumeration value="Grapes"/>
<xs:enumeration value="BAnana"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>
我有一个用例,我需要在 XSD 属性值中验证管道分隔的字符串。
示例: XML 属性
<Fruits Names="Apple|Grapes|Banana">
我想编写一个 XSD 模式,其中 Fruits 属性名称允许以下 3 个值的以下和其他有效组合。
Apple
Banana
Grapes
Apple|Banana
Grapes|Banana
Apple|Grapes
Banana|Grapes
Grapes|apple
Apple|Grapes|Banana
我目前写了类似
的东西 <xs:simpleType name="Fruits">
<xs:restriction base="xs:string">
<xs:pattern value="Apple*|Grapes*|Banana" ></xs:pattern>
</xs:restriction>
</xs:simpleType>
我想在C#中使用这个,所以我想我只能使用XSD 1.0.
我建议您放弃 |
分隔符,改用 space (</code>)。</p>
<p>即:</p>
<pre><code><Fruits Names="Apple Grapes Banana"/>
那么,以下XSD将满足您的要求:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Fruits">
<xs:complexType>
<xs:attribute name="Names">
<xs:simpleType>
<xs:list itemType="FruitTypes"/>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:simpleType name="FruitTypes">
<xs:restriction base="xs:string">
<xs:enumeration value="Apple"/>
<xs:enumeration value="Grapes"/>
<xs:enumeration value="BAnana"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>