5分钟搞定Schema

事先声明:搞定不是精通,只是能够运用!
其实schema很简单,之前写过DTD,比DTD学习成本还低!最近做的项目基于文件系统的,一堆的xml文件,所以想写个验证,也方便IDE操作,既然推荐Schema,那就用Schema
不废话,看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 version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.iteye.com"
        xmlns:tns="http://www.iteye.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 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.iteye.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,知识积累,以备后用

你可能感兴趣的:(xml,ide)