为了使XML文档规范化,对XML文档的书写进行约束

XML DTD

XML文档(test.xml)

<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE books SYSTEM "books.dtd">
<books>
<book>
<name>java</name>
<price>$16</price>
</book>
</books>

DTD约束文档(books.dtd)

<!ELEMENT books (book)>

<!ELEMENT book (name,price)>

<!ELEMENT name (#PCDATA)>

<!ELEMENT price (#PCDATA)>

也可以写在一起:

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

<!DOCTYPE users [

<!ELEMENT users (user*)>

<!ELEMENT user (id,username,password,email,birthday)>

<!ELEMENT id      (#PCDATA)>

<!ELEMENT username    (#PCDATA)>

<!ELEMENT password (#PCDATA)>

<!ELEMENT email    (#PCDATA)>

<!ELEMENT birthday    (#PCDATA)>

]>

<users>
<user>

<id>1</id>

<username>1</username>

<password>1</password>

<email>1</email>

</user>

</users>

引入外部DTD

本地DTD <!DOCTYPE root-element SYSTEM "filename">
公共DTD<!DOCTYPE root-element PUBLIC "DTD-NAME" "URL">

元素声明

<!ELEMENT element-name category>



<!ELEMENT element-name (element-content)>

符号使用



category



属性定义


实体定义

实体定义有点像C中的宏定义
例:
定义实体:<!ENTITY string “Hello World!”>
使用实体:&string;

XML Schema

xml Schema使用预先定义好的元素和属性开发的,其本身就是XML文档(这与DTD不同),通过Schema再来规定XML实例文档。
由于一个XML实例文档可以引入多个Schema,为了避免元素重名问题,每个Schema都应有一个名称空间(这里使用URI来区分)。
在定义Schema文档时要用到预先定义的属性和元素,需要引入W3C组织规定的scheme,即xmlns="http://www.w3.org/2001/XMLSchema"

XML文档(test.xml)

<?xml version="1.0" encoding="utf-8" ?>
<books  
        xmlns="http://www.dy-pc.com"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.dy-pc.com  test.xsd"
>
<book>
<name>java</name>
<price>$16</price>
</book>
</books>

约束文档(test.xsd)

<?xml version="1.0" encoding="utf-8" ?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
targetNameSpace="http://www.dy-pc.com"
elementFormDefault = "qualified"
>
<element name="books">
<complexType>
<sequence>
<element name="book">
<squence>
<element name="name" type="string" />
<element name="price" type="double" />
</squence>
</element>
</sequence>
</complexType>
</element>
</schema>

XML约束技术的更多相关文章

  1. xml约束技术之dtd

    DTD(文档类型定义)的作用是定义 XML 文档的合法构建模块.这篇文章作简单介绍下DTD的用法.想学习完整的请点击下面w3c的教程. 1.DTD官方教程 ##2.xml约束技术: DTD约束:语法相 ...

  2. 2.xml约束技术----------dtd约束

    1.xml的约束 (1)为什么需要定义约束了 比如现在定义一个person的xml文件,只想要这个文件里面保存人的信息,比如name age等,但是如果在xml文件中写了一个元素<猫>,发 ...

  3. 5.xml约束技术--------schema

    1.schema约束 (1)dtd语法:<!ELEMENT 元素名称 约束> (2)schema符合xml的语法,xml语句 (3)一个xml文件中只能有一个dtd,但是可以有多个sche ...

  4. javaweb学习总结八(xml约束DTD)

    一:XML约束概念 xml约束:可以编写一个文档来约束xml文件的书写规范. xml语言格式比较严谨,不可能让程序员随意编写,所以必须要有约束. 二:常用的xml约束技术 1:DTD,document ...

  5. JAVA基础学习之XMLCDATA区、XML处理指令、XML约束概述、JavaBean、XML解析(8)

    1.CDATA区在编写XML文件时,有些内容可能不想让解析引擎解析执行,而是当作原始内容处理.遇到此种情况,可以把这些内容放在CDATA区里,对于CDATA区域内的内容,XML解析程序不会处理,而是直 ...

  6. XML约束——Schema约束

    XML Schema 也是一种用于定义和描述 XML 文档结构与内容的模式语言,其出现是为了克服 DTD 的局限性 XML Schema VS DTD: •XML Schema符合XML语法结构. • ...

  7. XML约束——DTD约束

    参考: 方立勋老师的讲课视频.   什么是XML约束 •在XML技术里,可以编写一个文档来约束一个XML文档的书写规范,这称之为XML约束. 为什么需要XML约束 常用的约束技术 •XML DTD • ...

  8. 【风马一族_xml】Schema--- xml的约束技术

    Schema 是xml的约束技术,出现的目的是为了替代dtd 本身也是一个xml,非常方便使用xml的解析引擎进行解析 对名称空间有非常好的支持 支持更多的数据类型,并且支持用户自定义数据类型 可以进 ...

  9. JavaBean 内省API BeanUtils工具 泛型 xml xml约束

    1 什么是JavaBean?有何特征? 1)符合特定规则的类    2)JavaBean分二类:     a)侠义的JavaBean         .私有的字段(Field)         .对私 ...

随机推荐

  1. 【转】不用程序mysql也可以查询今天、昨天、7天、近30天、本月、上一月的数据

    今天   select * from 表名 where to_days(时间字段名) = to_days(now());   昨天 SELECT * FROM 表名 WHERE TO_DAYS( NO ...

  2. 嵌入式驱动开发之phy---fine Mac与Phy组成原理的简单分析

    关键字rj45.pci-e 1. general 下图是网口结构简图.网口由CPU.MAC和PHY三部分组成.DMA控制器通常属于CPU的一部分,用虚线放在这里是为了表示DMA控制器可能会参与到网口数 ...

  3. DIV高度设置全屏

    <div class="full"></div> .full{ height:100%; position:fixed; } 使用position的fixe ...

  4. Bootstrap的下拉菜单float问题

    在学习bootstrap中的下拉菜单时,遇到下面情况: <div class="dropdown"> <button class="btn btn-de ...

  5. SQL Server快捷方式丢了怎么启动

    为了帮助网友解决“SQL Server快捷方式丢了怎么启动”相关的问题,中国学网通过互联网对“SQL Server快捷方式丢了怎么启动”相关的解决方案进行了整理,用户详细问题包括:Microsoft ...

  6. android应用安全——通信安全(android https)

    这里先引入两篇文章: 1.Android网络编程——https 不验证证书方式(信任所有证书) 2.Android: Trusting SSL certificates android中实现Https ...

  7. Python全栈day26-27(面向对象进阶)

    参考 http://www.cnblogs.com/linhaifeng/articles/6204014.html 1,什么是反射 反射的概念是由Smith在1982年首次提出的,主要是指程序可以访 ...

  8. Eclipse MyBatis Generator插件安装

    目录 Eclipse MyBatis Generator插件安装 Eclipse MyBatis Generator插件安装 1.进入Eclipse Marketplace [Help] -> ...

  9. 巨蟒python全栈开发flask9 项目开始1

    1.项目需求分析 立项:Javis&&taisen(三个月全部,先模拟出一个玩具,硬件需要周期长一些) 想法 --- 需求分析: .通过玩具与孩子实时进行沟通 .希望玩具的知识渊博 . ...

  10. 改变label中的某字体颜色

    NSString *allString=@"你家在哪里,需要我送你么"; NSString *subString=@"在哪里"; UILabel *string ...