【问题标题】:specifying XML schema for a XML document for a particular string为特定字符串的 XML 文档指定 XML 模式
【发布时间】:2014-04-16 11:34:15
【问题描述】:

我有xsd如下

<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="College">
    <xs:complexType>
      <xs:sequence>
          <xs:element type="xs:string" name="Name" maxOccurs="unbounded" minOccurs="1"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

它必须只允许 2 个值示例 只允许 ABC 和 CBS

<college>
<Name>ABC</Name>
<Name>ABC</Name>
<Name>CBS</Name>
</college>

这是不允许的

<college>
<Name>ABC</Name>
<Name>ABC</Name>
<Name>CBS</Name>
<Name>XYZ</Name>
</college>

【问题讨论】:

    标签: xml xsd xsd-validation


    【解决方案1】:

    由于您有无数个选项,您可以使用枚举来限制它们。将您的 xs:element 声明替换为:

    <xs:element name="Name" maxOccurs="unbounded" minOccurs="1">
        <xs:simpleType>
            <xs:restriction base="xs:string">
                <xs:enumeration value="ABC"/>
                <xs:enumeration value="CBS"/>
            </xs:restriction>
        </xs:simpleType>
    </xs:element>
    

    【讨论】:

    • @DaliusSidlauskas 提出的解决方案与此等价。其中任何一个都可以工作。
    【解决方案2】:

    尝试模式匹配

    <xsd:element name="elementName">
        <xsd:simpleType>
            <xsd:restriction base="xsd:string">
                <xsd:pattern value="/^[ABC|CBS]$/"></xsd:pattern>
            </xsd:restriction>
        </xsd:simpleType>
    </xsd:element>   
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-01-02
      • 2011-07-24
      • 2011-02-03
      • 1970-01-01
      • 2017-01-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多