合法的XML和形式良好的XML ?

拥有正确语法的 XML 被称为“形式良好”的 XML。

  1. 第一行是 XML 声明。它定义 XML 的版本 (1.0) 和所使用的编码 (ISO-8859-1 = Latin-1/西欧字符集)。
  2. XML 文档必须有根元素
  3. XML 文档必须有关闭标签
  4. XML 标签对大小写敏感
  5. XML 元素必须被正确的嵌套
  6. XML 属性必须加引号

通过 DTD 验证的 XML 是“合法”的 XML。

DTD

定义:DTD(文档类型定义)的作用是定义 XML 文档的合法构建模块。它使用一系列的合法元素来定义文档结构。

DTD声明

内部的 DOCTYPE 声明

代码示例:

1 <!DOCTYPE note [
2 <!ELEMENT note (to,from,heading,body)>
3 <!ELEMENT to (#PCDATA)>
4 <!ELEMENT from (#PCDATA)>
5 <!ELEMENT heading (#PCDATA)>
6 <!ELEMENT body (#PCDATA)>
7 ]>

代码解释:

2 此文档是 note 类型的文档

3 note 元素有四个元素:"to、from、heading,、body"

4 to 元素为 "#PCDATA" 类型

外部文档声明

<!DOCTYPE note SYSTEM "note.dtd">
//note.dtd
<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>

为什么使用 DTD

  1. 通过 DTD,每一个 XML 文件均可携带一个有关其自身格式的描述。
  2. 通过 DTD,独立的团体可一致地使用某个标准的 DTD 来交换数据。
  3. 应用程序也可使用某个标准的 DTD 来验证从外部接收到的数据。
  4. 使用 DTD 来验证自身的数据。

DTD构建模块

构建模块有如下几种,所有的XML都是由其构成

  • 元素
  • 属性
  • 实体
  • PCDATA

    PCDATA 的意思是被解析的字符数据(parsed character data)。

    可把字符数据想象为 XML 元素的开始标签与结束标签之间的文本。

    PCDATA 是会被解析器解析的文本。这些文本将被解析器检查实体以及标记。文本中的标签会被当作标记来处理,而实体会被展开。不过,被解析的字符数据不应当包含任何 &、< 或者 > 字符;需要使用 &、< 以及 > 实体来分别替换它们。
  • CDATA

    CDATA 的意思是字符数据(character data)。

    CDATA 是不会被解析器解析的文本。在这些文本中的标签不会被当作标记来对待,其中的实体也不会被展开。

DTD元素

//声明一个元素
//grammer
<!ELEMENT 元素名称 类别>
<!ELEMENT 元素名称 (元素内容)>
//声明一个空元素
//grammer
<!ELEMENT 元素名称 EMPTY>
//eg:
<!ELEMENT br EMPTY>
//声明只有 PCDATA 的元素
//grammer
<!ELEMENT 元素名称 (#PCDATA)>
//eg:
<!ELEMENT from (#PCDATA)>
//声明带有任何内容元素
//grammer
<!ELEMENT 元素名称 ANY>
//eg:
<!ELEMENT note ANY>
//带有子元素(序列)的元素
//grammer
<!ELEMENT 元素名称 (子元素名称 1)>
<!ELEMENT 元素名称 (子元素名称 1,子元素名称 2,.....)>
//eg:
<!ELEMENT note (to,from,heading,body)>//后续子元素出现顺序一样
//声明只出现一次的元素
//grammer
<!ELEMENT 元素名称 (子元素名称)>
//eg:
<!ELEMENT note (message)>
//声明最少出现一次的元素
//grammer
<!ELEMENT 元素名称 (子元素名称+)>
//eg:
<!ELEMENT note (message+)>
//声明出现零次或多次的元素
//grammer
<!ELEMENT 元素名称 (子元素名称*)>
//eg:
<!ELEMENT note (message*)>
//声明出现零次或一次的元素
//grammer
<!ELEMENT 元素名称 (子元素名称?)>
//eg:
<!ELEMENT note (message?)>
//声明“非.../既...”类型的内容
//eg:
<!ELEMENT note (to,from,header,(message|body))>
//声明混合型的内容
//eg:
<!ELEMENT note (#PCDATA|to|from|header|message)*>

DTD属性

属性格式

<!ATTLIST 元素名称 属性名称 属性类型 默认值>

属性类型默认值请参考:http://www.w3school.com.cn/dtd/dtd_attributes.asp

DTD实体

什么是实体?

实体是用于定义引用普通文本或特殊字符的快捷方式的变量。

实体引用是对实体的引用。

实体可在内部或外部进行声明。

内部实体声明

//grammer
<!ENTITY 实体名称 "实体的值">
//DTD
<!ENTITY writer "Bill Gates">
<!ENTITY copyright "Copyright W3School.com.cn">
//XML
<author>&writer;&copyright;</author>

外部实体声明

//grammer
<!ENTITY 实体名称 SYSTEM "URI/URL">
//DTD
<!ENTITY writer SYSTEM "http://www.w3school.com.cn/dtd/entities.dtd">
<!ENTITY copyright SYSTEM "http://www.w3school.com.cn/dtd/entities.dtd">
//XML
<author>&writer;&copyright;</author>

XML Schema(XSD)

定义:是基于XML 的 DTD 替代者,描述 XML 文档的结构。

代码示例:

<xs:element name="note">

<xs:complexType>
<xs:sequence>
<xs:element name="to" type="xs:string"/>
<xs:element name="from" type="xs:string"/>
<xs:element name="heading" type="xs:string"/>
<xs:element name="body" type="xs:string"/>
</xs:sequence>
</xs:complexType> </xs:element>

XML验证的更多相关文章

  1. Java工具类——通过配置XML验证Map

    Java工具类--通过配置XML验证Map 背景 在JavaWeb项目中,接收前端过来的参数时通常是使用我们的实体类进行接收的.但是呢,我们不能去决定已经搭建好的框架是怎么样的,在我接触的框架中有一种 ...

  2. 雷林鹏分享:XML 验证

    XML 验证 拥有正确语法的 XML 被称为"形式良好"的 XML. 通过 DTD 验证的XML是"合法"的 XML. 形式良好的 XML 文档 "形 ...

  3. 雷林鹏分享:XML 验证器

    XML 验证器 使用我们的 XML 验证器来对您的 XML 文件进行语法检查. XML 错误会终止您的程序 XML 文档中的错误会终止您的 XML 应用程序. W3C 的 XML 规范声明:如果 XM ...

  4. struts2框架xml验证

    struts2验证分为3步: 1.获取需要验证的信息,使用同名属性,提供getter,setter方法.然后框架使用反射将值自动注入. 2.对信息进行验证,成功失败作出对应的选择. xml验证和手动验 ...

  5. XML 验证器

    XML 错误会终止您的程序 XML 文档中的错误会终止你的 XML 程序. W3C 的 XML 规范声明:如果 XML 文档存在错误,那么程序就不应当继续处理这个文档.理由是,XML 软件应当轻巧,快 ...

  6. Java使用Schema模式对XML验证

    XML允许创作者定义自己的标签,因其灵活的特性让其难以编写和解析.因此必须使用某种模式来约束其结构.目前最流行的这种模式有两种:DTD和SCHEMA,而后者以其独特的优势即将取代DTD模式,目前只是过 ...

  7. DTD -- XML验证

    DTD(文档类型定义)的作用是定义 XML 文档的合法构建模块. DTD 可被成行地声明于 XML 文档中,也可作为一个外部引用. DTD简介 内部的 DOCTYPE 声明 假如 DTD 被包含在您的 ...

  8. XML 验证

    拥有正确语法的 XML 被称为“形式良好”的 XML. 通过 DTD 验证的 XML 是“合法”的 XML. 形式良好的 XML 文档 “形式良好”或“结构良好”的 XML 文档拥有正确的语法. “形 ...

  9. 关闭英文拼写检查,关闭xml验证

    http://blog.sina.com.cn/s/blog_70b623e4010173ce.html eclipse里面的许多设置对于国内开发者日常使用不太适用,反而会成为干扰.既然是完全可配置的 ...

随机推荐

  1. YTU 2429: C语言习题 学生成绩输入和输出

    2429: C语言习题 学生成绩输入和输出 时间限制: 1 Sec  内存限制: 128 MB 提交: 1897  解决: 812 题目描述 编写一个函数print,打印一个学生的成绩数组,该数组中有 ...

  2. codeforces 433C. Ryouko's Memory Note 解题报告

    题目链接:http://codeforces.com/problemset/problem/433/C 题目意思:一本书有 n 页,每页的编号依次从 1 到 n 编排.如果从页 x 翻到页 y,那么| ...

  3. ss连接不上

    突然ss就连接不上了,而vps的ip能ping通,ssh也能登录. 折腾了半天都没解决. 后来解决了,关键点有两个 (1)更改ss的服务端口,原本是9000,随便改为其他的: (2)在switch里设 ...

  4. Runtime.getRuntime().addShutdownHook(Thread)

    Runtime.getRuntime().addShutdownHook(Thread)为虚拟机添加关闭时添加钩子线程

  5. Tomcat 系统架构与设计模式之一

    Tomcat 系统架构与设计模式,第 1 部分: 工作原理 来自:http://www.ibm.com/developerworks/cn/java/j-lo-tomcat1/index.html 这 ...

  6. python-dev 安装错误

    /******************************************************************** * python-dev 安装错误 * 说明: * 今天在安 ...

  7. 怎么解决Failed to load the JNI shared library

    怎么解决Failed to load the JNIshared library   解决Failed to load the JNIshared library唯一的方法就是重新安装eclipse, ...

  8. C:static 关键字、静态变量、跨类访问数据

    static 在OC中的使用 参考1   参考2   参考3   参保4    参考5 跨类访问成员 参考 +号方法就是类方法(静态方法),说明不用创建对象,可以直接通过类型去直接调用这个方法,在OC ...

  9. oracle 查看表是否存在、包含某字段的表、表是否包含字段

    表是否存在: select count(*) from user_tables where table_name = #{tablename} 包含某个字段的表 select * from user_ ...

  10. 019--python内置函数

    一.内置高阶函数 map函数:接收两个数据 函数和序列,map()将函数调用'映射'到序列身上,并返回一个含有所有返回值的一个列表 num1 = [1,2,3,4,5] num2 = [5,4,3,2 ...