xsd文件adapter-mapper.xsd:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.fgi.net.cn"
xmlns:ad="http://www.fgi.net.cn"
elementFormDefault="qualified">
<xs:element name="node">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string"/>
<xs:element ref="ad:adapters"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="adapters">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" ref="ad:adapter"/>
</xs:sequence>
</xs:complexType>
<xs:unique name="adapterUnique">
<xs:selector xpath="ad:adapter"/>
<xs:field xpath="@name"/>
</xs:unique>
</xs:element>
<xs:element name="adapter">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required"/>
<xs:attribute name="httpMethod" type="ad:httpMethodType" use="required"/>
</xs:complexType>
</xs:element>
<xs:simpleType name="httpMethodType">
<xs:restriction base="xs:string">
<xs:enumeration value="get"/>
<xs:enumeration value="post"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>
其中要注意的是默认命名空间上要加前缀,比如xmlns:ad=“http://www.fgi.net.cn”,xs:selector标签的xpath属性和xs:element标签的ref属性要加前缀,引用自定义类型type属性也需要加前缀。
要校验的adapter-mapper.xml
<?xml version="1.0" encoding="UTF-8"?>
<node xmlns="http://www.fgi.net.cn"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.fgi.net.cn http://www.fgi.net.cn/adapter-mapper.xsd">
<name>adapter-demo</name>
<adapters>
<adapter name="aa" httpMethod="get"/>
<adapter name="bb" httpMethod="get"/>
</adapters>
</node>
这样是可以校验通过的,如果adapter的name一样,会提示错误: