合法的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. bzoj5328: [Sdoi2018]物理实验

    果然我还是太菜了,爆了一天才过....隔壁肉丝都不知道喊了多少句哎╮(╯▽╰)╭我又A了什么傻逼题(然鹅就是wf和国集的题QWQ) 其实这个题就是个裸题,但是我就是不会... 这个题第一步就是明显的旋 ...

  2. SQL Server 数据库备份策略,第一周运行失败的原因

    一般生产库,采用 每10分钟备份Log,每天备份Diff,每周备份Full的策略. 同时存在异地备份.异地备份可使用SQL Server本身的cmdshell存储过程,调用系统命令. 在为新数据库,建 ...

  3. js操作创建和操作外部样式的例子

    兼容IE8及以上的IE浏览器1. [代码][HTML]代码 <!DOCTYPE html><html lang="en">    <head>  ...

  4. pyspark 日期格式

    1. 获取当前日期 from pyspark.sql.functions import current_date spark.range(3).withColumn('date',current_da ...

  5. BZOJ_2225_[Spoj 2371]Another Longest Increasing_CDQ 分治+树状数组

    BZOJ_2225_[Spoj 2371]Another Longest Increasing_CDQ 分治+树状数组 Description        给定N个数对(xi, yi),求最长上升子 ...

  6. 【旧文章搬运】无Device的驱动如何通信

    原文发表于百度空间,2009-07-14========================================================================== 标准的驱动 ...

  7. Task运行带参数的函数

    Task<Int32>   task = Task.Run(() => fun("s", 9)); 函数定义: private Int32 frun(string ...

  8. MongoDb Samus c# Find函数的使用说明

    长活短说, 网上有一些是不对的 比如 Op.GreaterThan(...).LessThan(..) 不能这么用来表示 ( , ) 而应该这么用: var doc = new Document( a ...

  9. P3007 [USACO11JAN]大陆议会The Continental Cowngress(2-SAT)

    简述:给出 n 个法案, m 头牛的意见, 每头牛有两个表决 格式为 “支持或反对某法案”, 每头牛需要至少满足一个表决, 不可能成立的话输出 IMPOSSIBLE, 否则输出方案, Y代表能, N代 ...

  10. IT兄弟连 JavaWeb教程 Servlet表单乱码问题

    在使用原生的Servlet进行Web应用开发时经常会遇到一些中文乱码问题,造成乱码问题的原因只有一个:即客户端与服务端的字符编码不一致所导致的. 请求参数乱码问题 服务器端获取客户端传递过来的数据出现 ...