XSD替代联盟

时间:2017-02-08 16:26:21

标签: xml xsd

我正在研究xsd,我的系统限制了元素<union>的使用。以下是代码段:

<xsd: element name = 'CRN' minOccurs = "1">
  <xsd: simpleType>
   <xsd:union memberTypes = "fps:nonNegativeMax999IntType fps:FullPaymentSubmission_XType"/>
  /xsd:simpleType>

<xsd:simpleType name = "FullPaymentSubmission_XType">
  <xsd:restriction base="xsd:string">
   <xsd:enumeration value = "X"/>
  </xsd:restriction> 
</xsd:simpleType>

<xsd:simpleType name = "nonNegativeMax999IntType ">
  <xsd:restriction base="xsd:nonNegativeInteger">
   <xsd:maxInclusive value = "9999"/>
  </xsd:restriction> 
</xsd:simpleType>

请问有人可以建议替代方案我可以避免在我的xsd中使用<union>吗?

1 个答案:

答案 0 :(得分:1)

此XSD,

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="r">
    <xs:simpleType>
      <xs:restriction base="xs:string">
        <xs:pattern value="\d{1,4}"/>
        <xs:pattern value="X"/>
        <xs:pattern value="Y"/>
        <xs:pattern value="Z"/>
      </xs:restriction>
    </xs:simpleType>
  </xs:element>
</xs:schema>

允许CRN最多4个数字或XYZ。您可以针对任何其他要求调整正则表达式,例如可选的前导+或必要时排除前导0