Xml 工会的XSD备选方案

Xml 工会的XSD备选方案,xml,xsd,Xml,Xsd,我正在使用xsd,我的系统对元素的使用提出了限制。下面是代码片段: <xsd: element name = 'CRN' minOccurs = "1"> <xsd: simpleType> <xsd:union memberTypes = "fps:nonNegativeMax999IntType fps:FullPaymentSubmission_XType"/> /xsd:simpleType> <xsd:simpleType

我正在使用xsd,我的系统对元素
的使用提出了限制。下面是代码片段:

<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:simpleType>
有人能为我的xsd中避免使用
提供一个替代方案吗?

这个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位或
X
Y
Z
。您可以根据任何其他要求调整正则表达式,如可选的前导
+
,或在必要时排除前导
0
s。

如果您确实希望允许字符串值
X
和0到9999之间的整数,则很难进行调整,但是如果您使用从
xs:string
派生的单个simpleType,其中枚举了所有选项(
)。例如,您可能希望为所有这些整数值生成代码。或者你可以试着写一个正则表达式。