合法的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. mongodb mongod 参数解释

    基本配置----------------------------------------------------------------------------------quiet # 安静输出-- ...

  2. maven安装的详细步骤

    1.下载maven的bin,在apache官方网站下载.window系统下的下载红色方框的 2.解压后, 把bin的位置设在环境变量里,新建环境变量 MAVEN_HOME.这个配置是方便以后更换mav ...

  3. re(正则表达式)模块

    一.最常用的匹配语法 re.match 从头开始匹配 re.search 匹配包含 re.findall 把所有匹配到的字符放到以列表中的元素返回 re.split  以匹配到的字符当做列表分隔符 r ...

  4. 「BZOJ3438」小M的作物(最小割

    3438: 小M的作物 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 1891  Solved: 801[Submit][Status][Discus ...

  5. 「LuoguP4752」牧 Divided Prime(判质数

    Description 给定一个数字 A,这个 A 由 a1,a2,⋯,aN相乘得到. 给定一个数字 B,这个 B 由 b1,b2,⋯,bM相乘得到. 如果 A/B 是一个质数,请输出YES,否则输出 ...

  6. fastText(三):微博短文本下fastText的应用(二)

    上一篇讲到,fastText在训练数据中过拟合的问题.接下来将介绍一些提高fastText泛化能力的尝试. 模型泛化使用过fastText的人,往往会被它的很多特性征服,例如训练速度.兼具word e ...

  7. bzoj 2238 Mst —— 树剖+mn标记永久化

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2238 看了半天... 首先,想要知道每条边删除之后的替代中最小的那个: 反过来看,每条不在 ...

  8. 网络爬虫之requests模块的使用+Github自动登入认证

    本篇博客将带领大家梳理爬虫中的requests模块,并结合Github的自动登入验证具体讲解requests模块的参数. 一.引入:   我们先来看如下的例子,初步体验下requests模块的使用: ...

  9. NYOJ4——ASCII码排序

    ASCII码排序 时间限制:3000 ms  |  内存限制:65535 KB 难度:2  描述:输入三个字符(可以重复)后,按各字符的ASCII码从小到大的顺序输出这三个字符.  输入:第一行输入一 ...

  10. mysql数据库基本操作(五)

    表纪录之查(单表查询)2 上一篇讲了4类查询的方式,现在接着上一篇继续看还有哪些方式. group by 分组查询 顾名思义,分组查询要分组,因为mysql5.7之后默认不支持group by语句,需 ...