可以通过为元素名建立别名的方式,但是用这种方式,该元素必须在schema根元素下,
相当于是声明了变量,再在xsd具体校验的地方引用。
例子:(忽略root/data/catalogID元素的大小写。即:catalogID和catalogid节点都可以通过)
原来的xsd文件内容:
<?xml version="1.0" encoding="UTF-8" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="catalogid" substitutionGroup="catalogID"/>
<xs:element name="root">
<xs:complexType>
<xs:sequence>
<xs:element name="data">
<xs:complexType>
<xs:all>
<xs:element name="catalogID">
<xs:simpleType>
<xs:restriction base="xs:string">
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:all>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
-----------------------------------------------------------------------------------------------------
修改后的xsd文件:
<?xml version="1.0" encoding="UTF-8" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="catalogID">
<xs:simpleType>
<xs:restriction base="xs:string">
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="catalogid" substitutionGroup="catalogID"/>
<xs:element name="root">
<xs:complexType>
<xs:sequence>
<xs:element name="data">
<xs:complexType>
<xs:all>
<xs:element ref="catalogID"/>
</xs:all>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
----------------------------------------------------------------------------------------------
测试xml:
<?xml version="1.0" encoding="GB2312"?>
<root>
<data>
<catalogid>A010407001</catalogid>
</data>
</root>