学习笔记-XML、DTD与Schema
2014-11-12 21:02
302 查看
最近简单的了解并学习了XML,DTD,和XMLSchema的一些基本应用,总结如下:
书写格式:
上述为一个XML文档实例,包含的结构有:
XML文档声明:version表示XML规范版本,其实就只有1.0这个版本,encoding表示字符编码集,XML文档是一种树结构,主体由一个个标签组成:
XML文档必须得有一个并且只能有一个根标签
每一个标签必须有开始标签和结束标签<标签></标签>,或者在开始标签中就结束掉<标签 />。
标签名不能以"_"或者数字开始。
标签名中的大小写严格要求,开始标签和结束标签必须一致。
属性:位于开始标签中,结构:key="value" key是属性的名字,value是属性的值,值必须用引号包裹,单双引号均可,如果值中含有双引号,那么整个值必须用单引号包裹。
这里DOCTYPE中的note为根标签的名字ELEMENT里定义的是note下的3个子标签(a,b,c),并且子标签为"#PCDATA"类型
ATTLIST为属性的声明
ENTITY是定义一个实体,用"& ;"来引用实体里的值
1、创建一个schema:
1.1 创建一个后缀为xsd的文件,文件格式为xml。
1.3 在schema标签中添加命名空间:
1.3.1 首先引入xmlns:xs="http://www.w3.org/2001/XMLSchema"。
1.3.2 targetNamespace="http://www.example.org/Schema_test"声明一个我们自己的命名空间(uri)。
1.3.3 xmlns:tns="http://www.example.org/Schema_test" 。
1.3.4 elementFormDefault="qualified"严格按照我们的schema文档约束我们要编写的xml文件。
1.4 然后我们就可以在schema标签中添加其他标签来编写我们的xml约束。
2、将schema文档引入要约束的xml文件
2.1 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"要引入我们的schema文档需要使用这个命名空间中的属性。
2.2 xsi:schemaLocation="http://www.example.org/Schema_test Schema_test.xsd"使用上面引入的命名空间xsi中的schemalocation读取我们的schema文档,首先要填入我们的schema文档的命名空间的uri,然后空格,再填入我们的schema文档的名字。
2.3 再通过引入命名空间的方法,将我们的schema文档的命名空间引入。
3、简单元素:
xml:<elementname>信息<elementname>
schema:<element name="标签名" type="信息的类型">
4、对简单元素内容的约束:
4.1首先在我们要约束的元素中添加一个simpleType的标签
4.2然后在simpleType中添加一个restricetion标签,这个标签中有一个重要的属性:base,需要填入我们这个信息类型是基于哪一种类型的。
4.3在restricetion标签中,我们就可以加入我们对信息内容的一个具体的约束了:
4.3.1枚举约束 enumeration
例:在A、B、C、D中任取一
4.3.2对大小值的限定
mininclusive 设定最小值,包含最小值
minEnclusive 设定最小值,但是不包含最小值
maxinclusive 设定最大值,包含最大值
maxEnclusive 设定最大值,但是不包含最大值
例:取大于100,小于等于1000的值
4.3.3样式约束
[a-zA-Z]这一位字符,在a-z的大小写中任选一个填入
male|female这里需要多选一来填入信息内容
([a-z][0-9])+ 这里小写字母+一位数字的格式重复(可以1次可以多次)
5、复合元素的约束:
5.1首先我们在要约束的元素中添加一个complexType的标签。
5.2然后我们要填入指示器(sequence)。
5.3添加子元素,子元素可以是复合元素也可以是简单元素。
6.属性定义
6.1定义的格式:<attribute name="xxx" type="yyy"/>
6.2属性定义可以定义在complexType中
6.3属性定义中use表示这个属性是否需要出现在元素中
optional:可出现可不出现
prohibited:不能出现
required:必须出现
6.4如果要在简单元素中添加属性,还是需要complexType,只是我们需要在这个标签中使用simplecontent标签,其中使用extension标签,用来扩展我们的简单元素,添加属性。
7.顺序指示器
7.1sequence:指定了子元素必须出现并且要按照定义的顺序依次出现。
7.2all:指定了子元素可以以任意顺序出现,只出现一次。
7.3choice:指定子元素中,仅可以出现一个(可以使用maxOccurs修改)。
8.数量指示器
这种指示器不是以元素(标签)的形式出现,而是以子元素的属性的方式出现。 minOccurs 设置出现的最少次数;maxOccurs设置出现的最多次数
XML
是一种可扩展的标记性语言,用来存储和传输数据书写格式:
<?xml version="1.0" encoding="UTF-8"?> <!-- xml文档声明 --> <note name="test"> <a>这是</a> <b>一个</b> <c>测试</c> </note>
上述为一个XML文档实例,包含的结构有:
XML文档声明:version表示XML规范版本,其实就只有1.0这个版本,encoding表示字符编码集,XML文档是一种树结构,主体由一个个标签组成:
XML文档必须得有一个并且只能有一个根标签
每一个标签必须有开始标签和结束标签<标签></标签>,或者在开始标签中就结束掉<标签 />。
标签名不能以"_"或者数字开始。
标签名中的大小写严格要求,开始标签和结束标签必须一致。
属性:位于开始标签中,结构:key="value" key是属性的名字,value是属性的值,值必须用引号包裹,单双引号均可,如果值中含有双引号,那么整个值必须用单引号包裹。
DTD
在实际开发中,我们通常需要我们的XML文件符合我们的格式要求,所以我们就可以使用DTD去约束XML的编写。DTD可被成行的声明于XML文档中,也可作为一个外部引用。<?xml version="1.0" encoding="UTF-8"?> <!-- xml文档声明 --> <!DOCTYPE note [ <!ELEMENT note (a,b,c)> <!ELEMENT a (#PCDATA)> <!ELEMENT b (#PCDATA)> <!ELEMENT c (#PCDATA)> <!ATTLIST note name CDATA "test"> <!ENTITY hehe "测试"> ]> <note name="test"> <a>这是</a> <b>一个</b> <c>&hehe;</c> </note>
这里DOCTYPE中的note为根标签的名字ELEMENT里定义的是note下的3个子标签(a,b,c),并且子标签为"#PCDATA"类型
ATTLIST为属性的声明
ENTITY是定义一个实体,用"& ;"来引用实体里的值
XML Schema
Schema使用XML语言编写,实现对XML文档的约束,下面对Schema如何实现约束进行讲解。1、创建一个schema:
1.1 创建一个后缀为xsd的文件,文件格式为xml。
<?xml version="1.0" encoding="UTF-8"?> <schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.org/Schema_test" xmlns:tns="http://www.example.org/Schema_test" elementFormDefault="qualified"> <element name="note"></element> </schema>1.2 以schema标签为跟标签
1.3 在schema标签中添加命名空间:
1.3.1 首先引入xmlns:xs="http://www.w3.org/2001/XMLSchema"。
1.3.2 targetNamespace="http://www.example.org/Schema_test"声明一个我们自己的命名空间(uri)。
1.3.3 xmlns:tns="http://www.example.org/Schema_test" 。
1.3.4 elementFormDefault="qualified"严格按照我们的schema文档约束我们要编写的xml文件。
1.4 然后我们就可以在schema标签中添加其他标签来编写我们的xml约束。
2、将schema文档引入要约束的xml文件
<?xml version="1.0" encoding="UTF-8"?> <note xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.example.org/Schema_test Schema_test.xsd" xmlns="http://www.example.org/Schema_test"> </note>在根标签中,加入:
2.1 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"要引入我们的schema文档需要使用这个命名空间中的属性。
2.2 xsi:schemaLocation="http://www.example.org/Schema_test Schema_test.xsd"使用上面引入的命名空间xsi中的schemalocation读取我们的schema文档,首先要填入我们的schema文档的命名空间的uri,然后空格,再填入我们的schema文档的名字。
2.3 再通过引入命名空间的方法,将我们的schema文档的命名空间引入。
3、简单元素:
xml:<elementname>信息<elementname>
schema:<element name="标签名" type="信息的类型">
<element name="note" type="string"></element>
4、对简单元素内容的约束:
4.1首先在我们要约束的元素中添加一个simpleType的标签
4.2然后在simpleType中添加一个restricetion标签,这个标签中有一个重要的属性:base,需要填入我们这个信息类型是基于哪一种类型的。
4.3在restricetion标签中,我们就可以加入我们对信息内容的一个具体的约束了:
4.3.1枚举约束 enumeration
<simpleType> <restriction base="string"> <enumeration value="A"></enumeration> <enumeration value="B"></enumeration> <enumeration value="C"></enumeration> <enumeration value="D"></enumeration> </restriction> </simpleType>
例:在A、B、C、D中任取一
4.3.2对大小值的限定
mininclusive 设定最小值,包含最小值
minEnclusive 设定最小值,但是不包含最小值
maxinclusive 设定最大值,包含最大值
maxEnclusive 设定最大值,但是不包含最大值
<simpleType> <restriction base="integer"> <maxInclusive value="1000"></maxInclusive> <minExclusive value="100"></minExclusive> </restriction> </simpleType>
例:取大于100,小于等于1000的值
4.3.3样式约束
[a-zA-Z]这一位字符,在a-z的大小写中任选一个填入
male|female这里需要多选一来填入信息内容
([a-z][0-9])+ 这里小写字母+一位数字的格式重复(可以1次可以多次)
<simpleType> <restriction base="string"> <pattern value="[1-9][0-9]{3}-([a-z][A-Z]){4}%(audi|benz)"></pattern> </restriction> </simpleType>例:定义一个元素,四位整数+'-'+8位大小写间隔的字符+'%'+ 'audi'和'benz'中的一个
5、复合元素的约束:
5.1首先我们在要约束的元素中添加一个complexType的标签。
5.2然后我们要填入指示器(sequence)。
5.3添加子元素,子元素可以是复合元素也可以是简单元素。
<complexType name="type_note"> <sequence> <element name="A"></element> <element name="B"></element> <element name="C"></element> <element name="D"></element> </sequence> </complexType>
6.属性定义
6.1定义的格式:<attribute name="xxx" type="yyy"/>
6.2属性定义可以定义在complexType中
6.3属性定义中use表示这个属性是否需要出现在元素中
optional:可出现可不出现
prohibited:不能出现
required:必须出现
6.4如果要在简单元素中添加属性,还是需要complexType,只是我们需要在这个标签中使用simplecontent标签,其中使用extension标签,用来扩展我们的简单元素,添加属性。
7.顺序指示器
7.1sequence:指定了子元素必须出现并且要按照定义的顺序依次出现。
7.2all:指定了子元素可以以任意顺序出现,只出现一次。
7.3choice:指定子元素中,仅可以出现一个(可以使用maxOccurs修改)。
8.数量指示器
这种指示器不是以元素(标签)的形式出现,而是以子元素的属性的方式出现。 minOccurs 设置出现的最少次数;maxOccurs设置出现的最多次数
相关文章推荐
- xml学习笔记——dtd和schema
- JavaWeb学习笔记之xml&DTD&schema
- AS3----Spring 框架学习笔记(二)----xml智能提示DTD文件
- Sharepoint学习笔记—Site Definition系列-- 4、相对快捷地创建List Definition的Schema.xml文件
- 疯狂XML学习笔记(3)-----------XML与DTD
- XML学习笔记之文档类型定义(DTD) 和实体(ENTITY)
- Xml学习笔记:(一)schema元素类型
- 疯狂XML学习笔记(8)---------schema 的简单类型
- XML学习笔记(二):XML规范:DTD详解
- XML-Schema学习笔记
- XML DTD 语言学习笔记
- xml学习笔记三-DTD
- Solr5.2.1学习笔记-2-深入理解schema.xml
- XML学习笔记之DTD之元素(ELEMENT)
- 学习笔记——XML的DTD语义约束
- [XML学习笔记]004DTD的使用
- WebService学习笔记-XML&Schema&HTTP
- xml学习笔记2--DTD约束
- WebService学习笔记-XML&Schema&HTTP
- 【代码笔记】XML深入学习:DTD约束与DTD语法(1)