我有以下XML:
<customer>
<name>John Paul</name>
<cpf_cnpj>1376736333334</cpf_cnpj>
</customer>
<cpf_cnpj>
元素的最小大小必须为11,最大大小为15,并且只能有数字(0到9之间)字符。我的XSD看起来像这样:
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="customer">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string" minOccurs="1" maxOccurs="1" />
<xs:element name="cpf_cnpj" minOccurs="1" maxOccurs="1">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="11"/>
<xs:maxLength value="15"/>
<xs:pattern value="[0-9]{15}"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
我的问题是在xs:pattern
节点上,我不知道该使用什么,因为尽管事实上我的minLenght为11且maxLenght为15,但由于{15},XML如果a的值大小为11到14,则不解析。
如何使用11到15之间的可变大小,并且仅为此节点强制执行数字字符?
TKS!
答案 0 :(得分:4)
试试这个 <xs:pattern value="[0-9]{11-15}"/>
修改强>
试试这个(更正):
<xs:pattern value="[0-9]{11,15}"/>
答案 1 :(得分:1)
我刚刚测试了以下模式
<xs:pattern value="[0-9]+" />
这对我有用。基本上,使用模式允许任意长度的数字,然后使用minLength和maxLength字符串来强制执行长度。
所以你的例子中的XSD将是:
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="customer">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string" minOccurs="1" maxOccurs="1" />
<xs:element name="cpf_cnpj" minOccurs="1" maxOccurs="1">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="11"/>
<xs:maxLength value="15"/>
<xs:pattern value="[0-9]+"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>