事先声明:搞定不是精通,只是能够运用!
其实schema很简单,之前写过DTD,比DTD学习成本还低!最近做的项目基于文件系统的,一堆的xml文件,所以想写个验证,也方便IDE操作,既然推荐Schema,那就用Schema
不废话,看xml文件。
Xml代码
- <?xml version="1.0" encoding="gb2312"?>
- <tests id="1" name="2">
- <name>Ivan</name>
- <test id="test1">
- <name>hi</name>
- </test>
- <test id="test2">
- <name>hello</name>
- </test>
- </tests>
这个应该算是个比较典型的xml文件了。看schema怎么写。
Xml代码
- <?xml version="1.0" encoding="UTF-8"?>
- <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.javaeye.com"
- xmlns:tns="http://www.javaeye.com"
- elementFormDefault="qualified">
- <!-- 一个tests标签-->
- <xs:element name="tests">
- <!-- 由于tests标签由属性和其它标签组成,所以是复合类型 -->
- <xs:complexType>
- <!-- 这是一个序列,包含所有的子标签-->
- <xs:sequence>
- <!--叫name的子标签-->
- <xs:element name="name"/>
- <!--叫test的子标签,maxOccurs是出现的次数,这里不定,能多次出现-->
- <xs:element name="test" maxOccurs="unbounded">
- <!--又是一个复合类型-->
- <xs:complexType>
- <xs:sequence>
- <xs:element name="name"/>
- </xs:sequence>
- <!--test的id属性-->
- <xs:attribute name="id"/>
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- <!--testsde id和name属性-->
- <xs:attribute name="id"/>
- <xs:attribute name="name"/>
- </xs:complexType>
- </xs:element>
- </xs:schema>
很简单吧!其实就是个xml文件而已!敲一遍就知道是什么意思了!
将Schema添加到xml文件里面,如下:
Xml代码
- <?xml version="1.0" encoding="gb2312"?>
- <tests id="1" name="2" xmlns="http://www.stsoft.com.cn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.javaeye.com ../test.xsd">
- <name>Ivan</name>
- <test id="test1">
- <name>hi</name>
- </test>
- <test id="test2">
- <name>hello</name>
- </test>
- </tests>
这样就可以了,../test.xsd是相对路径,如果test.xsd和xml在同一目录下,直接写名字就可以了。
应该没多少人会用到Schema,知识积累,以备后用