Xml 在XSD中验证管道分隔字符串

Xml 在XSD中验证管道分隔字符串,xml,xsd,xsd-validation,msxml,xsd-1.0,Xml,Xsd,Xsd Validation,Msxml,Xsd 1.0,我有一个用例,需要在XSD属性值中验证管道分隔字符串 例如: XML属性 <Fruits Names="Apple|Grapes|Banana"> 我现在写了一些类似的东西 <xs:simpleType name="Fruits"> <xs:restriction base="xs:string"> <xs:pattern value="Apple*|Grapes*|Banana" ></xs

我有一个用例,需要在XSD属性值中验证管道分隔字符串

例如: XML属性

<Fruits Names="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#中使用它,所以我想我只能使用XSD1.0。

我建议您放弃
分隔符,改用空格(

即:


然后,以下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>

想知道当发现芒果、猕猴桃和樱桃时会发生什么…:-)
<Fruits Names="Apple Grapes Banana"/>
<?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>