XML

原创
2012/05/23 20:56
阅读数 646

XML

xml数据传输真给力,可以异结构,异平台传输

<?xml version="1.0" encoding="utf-8"?>

<?前后不能有空格,后面跟的xml是处理指令表示此文件以xml格式处理,

version是属性,属性值必须用双引号或者单引号括起来,xml默认编码是utf-8,

所以可以不指定encoding="utf-8"。

校验xml的两种方式DTD和Schema

DTD

例:users.dtd                                                        users.xml 

<!ELEMENT root(id,name)>  //元素                           <!DOCTYPE root SYSTEM users.dtd> //引入dtd

<!ELEMENT id(#PCDATA)>                                       <root>          

<!ELEMENT name(#PCDATA)>                                     <id>&at;1001</id>     //表示@1001

<!ENTITY at "@">              //实体                                <name pet="dog">John</name>

<!ATTLIST name pet CDATA #REQUIRED> //属性      </root> 

普通实体: xml中定义,xml中使用 &实体名;<!ENTITY at "@"> &at;
参数实体 :dtd中定义,dtd中使用 %实体名;<!ENTITY %at "@"> %at;

Schema

提供了比DTD更细粒度的数据类型来验证xml,schema它本身也是xml文件,而dtd不是,既然schema是xml文件

那schema是谁来验证呢?显然是dtd,

所以可以看到Schema文件的开头都会引入 xmlns:xs="http://www.w3.org/2001/XMLSchema"

而命名空间xs所绑定的地址就是用来schema的dtd文件,这是固定格式

例:users.xsd

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"

    xmlns="http://www.default.com/roottargetNamespace="http://www.urspace.com/root">

    <xs:element name="root" type="myType" />

    <xs:complexType name="myType">

        <xs:sequence><xs:element name="id" type="xs:string" />...</xs:sequence>

    </xs:complexType>

</xs:schema>

targetNameSpace表示此schema将要验证的xml的命名空间,若xml没有命名空间,可以使用如下方式引入schema

users.xml(没定义命名空间)

<root xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" xs:noNamespaceSchemaLocation="users.xsd" >       

users.xml(定义了命名空间)

<root xmlns="http://www.urspace.com/root"     //这个和schema中的targetNamespace匹配

xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"

xs:schemaLocation="http://www.default.com/root users.xsd" >  //前面是schema命名空间空格后面是具体地址

 注:在xml中引入schema,xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"是固定的,

只能用于xml实例文档,通常xml的默认命名空间和验证它的schema的默认命名空间相同(实现标签复用)

<!--貌似struts2的校验框架中出现过,用来写regex-->
<![CDATA[这里的数据不会被xml解析(即会被原样输出)]]>


 

 

展开阅读全文
xml
加载中
点击加入讨论🔥(5) 发布并加入讨论🔥
打赏
5 评论
3 收藏
0
分享
返回顶部
顶部