今天折腾xml 真的是折腾的心焦力瘁,关键不是xml 而是schema ,一个代替DTD 而来的schema,这个东西真的很强大。
我先说一下我遇到的情况,我在sublimetext里面写xml ,但是写的时候,schema里约束的是 age 是integer 的类型,但是我仍然可以在浏览器里正常的运行起来,这个就很尴尬了,为此我纠结了良久,最终找到了突破点。
下面是我的xml源文件
xml/stuInform.xml
<?xml version="1.0" encoding="utf-8"?>
<student
xmlns="http://www.bikeqx.com"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.bikeqx.com note.xsd"
>
<instan>
<nam>张三</nam>
<age>18</age>
</instan>
<instan>
<nam>张三</nam>
<age>18</age>
</instan>
<instan>
<nam>张三</nam>
<age>18</age>
</instan>
<instan>
<nam>张三</nam>
<age>18</age>
</instan>
<instan>
<nam>张三</nam>
<age>18</age>
</instan>
</student>
下面是我的schema
<?xml version="1.0" encoding="utf-8"?>
<xs:schema
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns="http://www.bikeqx.com"
targetNamespace="http://www.bikeqx.com"
elementFormDefault="qualified"
>
<xs:element name="student">
<xs:complexType>
<xs:sequence>
<xs:element name="instan" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="nam" type="xs:string"/>
<xs:element name="age" type="xs:integer"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
之所以出现我之前描述的那种情况是因为,schema输入运行前约束,而不是运行时,当我们在IDE内编辑一份xml文档时,这时候schema的作用马上就出来了,它能根据schema的定义告诉我们哪里有错。
所以编写xml ,不管是测试也好,都要在ide里编写,这样才能更好的检查错误。
时间不早了今天就写这么多,想了解更多xml的资源,请登录w3cschool