当模式为整数但不是字符串时,我的XML模式有效。
我的XML for string给了我
对于'oldPhone'类型的模式'[a-z]',a不具有分面意义
XML:
<phone xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="./phone.xsd">
<oldPhone>
a
</oldPhone>
</phone>
XSD:
<xs:schema version="1.0"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<xs:simpleType name="oldPhone">
<xs:restriction base="xs:string">
<xs:pattern value="[a-z]"/>
</xs:restriction>
</xs:simpleType>
<xs:element name="phone">
<xs:complexType>
<xs:sequence>
<xs:element name = "oldPhone" type = "oldPhone"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
当我用xs:string
替换xs:integer
,从[a-z]
更改为[0-9]
并将XML中的输入更改为整数时,它就可以正常工作。
答案 0 :(得分:0)
由于值周围有空格,您的模式匹配失败。
它适用于xs:integer的原因是xs:integer具有隐式whiteSpace方面&#34; collapse&#34;,这会导致在应用模式匹配之前去除前导和尾随空格。您可以通过添加显式whiteSpace构面或使用xs:token作为基本类型而不是xs:string来实现与字符串相同的效果。
或者更改模式以允许前导和尾随空格。