当前位置: 澳门新濠3559 > 编程 > 正文

文档可根据某种DTD语法规则验证格式是否符合此

时间:2019-10-07 13:19来源:编程
一.什么是DTD ENUMERATED(DTD没有此关键字):表示枚举,只能从枚举列表中任选其一(a|b|c) 属性 一个标签可以有多个属性,每个属性都有它自己的名称和取值例如:Person name=”Shawn” age=”

一.什么是DTD

    ENUMERATED(DTD没有此关键字):表示枚举,只能从枚举列表中任选其一(a|b|c)

属性

一个标签可以有多个属性,每个属性都有它自己的名称和取值

例如:<Person name=”Shawn” age=”24”/>

属性的名在定义时要遵循和XML元素相同的命名规则

属性的值需要用单引号或双引号括起来,如果属性值中有"则需要换成'

注释

<!--注释内容—>

注释可以出现在XML文档中的任意位置,除了整个文档的最前面,也就是必须保证文档声明是文档的第一行

注释不能嵌套注释

                     DTD约束

                                     1)导入dtd方式

                                               内部导入

                                                                

<!DOCTYPE note [

  <!ELEMENT note (to,from,heading,body)>

  <!ELEMENT to      (#PCDATA)>

  <!ELEMENT from    (#PCDATA)>

  <!ELEMENT heading (#PCDATA)>

  <!ELEMENT body    (#PCDATA)>

]>

 

                                               外部导入

                            本地文件系统:                      

                                                       

<!DOCTYPE note SYSTEM "note.dtd">

 

                            公共的外部导入:

                                              

<!DOCTYPE 根元素 PUBLIC "http://gz.itcast.cn/itcast.dtd">

        

                            2)DTD语法

                                     约束标签

                                               <!ELEMENT 元素名称 类别>  或 <!ELEMENT 元素名称 (元素内容)>

 

                                     类别:

                                                        空标签: EMPTY。 表示元素一定是空元素。

                                                        普通字符串: (#PCDATA)。表示元素的内容一定是普通字符串(不能含有子标签)。

                                                        任何内容: ANY。表示元素的内容可以是任意内容(包括子标签)

 

                                     (元素内容):

                                                        顺序问题:

                                                                 <!ELEMENT 元素名称 (子元素名称 1,子元素名称 2,.....)>: 按顺序出现子标签

 

                                                        次数问题:

                                                                           标签   :  必须且只出现1次。

                                                                           标签   : 至少出现1次

                                                                     标签*   : 0或n次。

                                                                           标签?  : 0 或1次。

                                     约束属性

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

 

                                               默认值:

                                                                 #澳门新濠3559,REQUIRED 属性值是必需的

                                                                 #IMPLIED   属性不是必需的

                                                                 #FIXED value 属性不是必须的,但属性值是固定的

 

                                               属性类型:控制属性值的

                                                        CDATA :表示普通字符串

                                                        (en1|en2|..): 表示一定是任选其中的一个值

                                                        ID:表示在一个xml文档中该属性值必须唯一。值不能以数字开头

 

五.使用DTD定义属性

 

元素

一个XML标签就是一个元素

一个标签分为开始标签、结束标签和标签体

如果标签的开始标签和结束标签中没有标签体,可以将开始标签和结束标签合并,这样的标签就叫做自闭标签

如:<a></a>可以直接写成 <a/>

一个标签中也可以包含任意多个子标签,但是嵌套关系一定要清晰

例如<a>dsfds<b>sdf</a></b>即为错误的嵌套关系

一个格式良好的XML要包含并且只能包含一个根标签,其他的标签都应该是这个根标签的子孙标签

区分大小写,例如,<P>和<p>是两个不同的标签

不能以数字或标点符号或""开头

不能以XML(或xml、Xml等)开头

不能包含空格

名称中间不能包含冒号(:)

                     Schema约束

                            名称空间:告诉xml文档的哪个元素被哪个schema文档约束。 在一个xml文档中,不同的标签可以受到不同的schema文档的约束。

 

                             1)一个名称空间受到schema文档约束的情况

                             2)多个名称空间受到多个schema文档约束的情况

                             3)默认名称空间的情况

                             4)没有名称空间的情况

 

XML约束--能够看懂约束内容,根据约束内容写出符合规则的xml文件。 DTD约束 1)导入dtd方式 内部导入 !DOCTYPE note [ !ELEMENT note (to...

引入外部DTD文件(网络上的dtd文件)

      枚举:表示只能在一定的范围内出现值,但是每次只能出现其中的一个

引用实体(用在XML中的实体)

声明实体:<!ENTITY 实体名称 "实体内容">

引用:&实体名称;

XML约束--能够看懂约束内容,根据约束内容写出符合规则的xml文件。

引入外部DTD文件

 

实体

实体可以理解为对一段内容的引用,如果有一段内容使用频繁且不易书写,可用定义实体的方法

XML约束,xml

>

      表示只能出现任意一个子元素(枚举)

XML约束

在XML技术里,可以编写一个文档来约束XML文档的写法,我们称之为XML约束

这样可以:
规范不同应用的XML文档的写法

对XML进行校验
常见的XML约束技术有
  1. XML DTD
  2. XML Schema

复杂元素:有子元素的元素 如:子元素后面的符号表示子元素出现的次数

      EMPTY:元素为空(不能有内容)

DTD语法

? :表示零次或者一次

6.定义实体

约束XML元素

<!ELEMENT 元素名称 元素约束>

元素约束的内容可以写以下范围内格式:

存放类型:

ANY:当前声明的元素可以包含任何声明的子元素

EMPTY:当前声明的元素不能包含任何元素

存放内容:

<!ELEMENT "元素名" (可以包含的元素的名称)>

小括号中的内容可以有多个元素的名称

如果用","分割这些元素表明这些元素必须依照顺序出现

如果用"|"分割这些元素表明只能出现这些元素中的一个

" "表明内容可以出现一次或多次

"*"表明内容可以出现零次或多次

"?"表明内容可以出现零次或一次

#PCDATA表明该元素可以包含标签体

可以利用()进行组操作

例子:<!ELEMENT MYLIFE ((TITLE*,AUTHOR?,EMAIL)*|COMMENT)>

<!ELEMENT age>

  语法:<!ENTITY 实体名称 "实体内容">

文档声明

用来声明XML的基本属性,用来指挥解析引擎如何去解析当前XML

通常一个XML都要包含并且只能包含一个文档声明

XML的文档必须在整个XML的最前面,在文档声明之前不能有任何内容

<?xml version=”1.0”?>

version是必须存在的属性,表明当前xml所遵循规范的版本,目前最新为1.0

<?xml version=”1.0” encoding=”utf-8” standalone=”yes”?>

encoding用来指定XML文档的字符集编码,encoding指定的编码表应与文档实际保存的编码相同,否则会出现乱码问题。

standalone用来指明当前XML文档是否是一个独立的XML,默认为yes,如果当前文档依赖其他文档而存在则需要将此值置为no

<!DOCTYPE 根元素名称 SYSTEM “dtd路径”>

      ANY:任意类型

XML概述

可扩展的标记语言(eXtensible Markup Language),简称XML,是一种标记语言。

现实生活中存在着大量的数据,在这些数据之间往往存在一定的关系,我们希望能在计算机保存和处理这些数据的同时能够保存和处理他们的关系。

XML就是为了解决这样的需求而产生的数据存储格式。

属性的约束: #REQUIRED:属性必须存在

2.判断元素是简单元素还是复杂元素

内部引入:在XML内部直接写DTD约束

在文档声明下直接写如下指令

<!DOCTYPE 根元素名称 [dtd约束的内容]>

ANY:任意类型

      (#PCDATA):约束name是字符串类型

在XML中引入DTD约束的方法有两种:

<!ELEMENT name>

    <!DOCTYPE 根元素名称 [dtd内容]>

参数实体(用在DTD文件中的实体)

声明实体:<!ENTITY % 实体名称 "实体内容">

引用:%实体名称;

* :表示零次或者多次

3.在XML文件中引入dtd文件

外部引入:

本地文件引入:该DTD文件在本地硬盘中

<!DOCTYPE 根元素名称 SYSTEM "文件所在的路径">

公共位置文件引入:

<!DOCTYPE 根元素名称 PUBLIC "dtd名称" "dtd文件所在URL">

<!DOCTYPE 根元素名称{

    直接值:表示属性的取值为该默认值

处理指令

简称PI(Processing Instruction).

处理指令用来指挥解析引擎如何解析XML文档内容

<?xml-stylesheet type=”text/css” href=”1.css”?>

声明就是一个处理指令

属性类型:CDATA: 字符串 如:<!ATTLIST birthday ATT CDATA #REQUIRED>

    <!ENTITY linyi "林祎">

约束XML属性

<!ATTLIST 元素名 属性名 属性类型 属性约束>

属性类型:

CDATA:表明该属性的值是一个普通的文本值

ENUMERATED:表明该属性的值只能取指定范围内的其中之一

ID:表明该属性在整个文档中必须唯一,ID类型的属性值必须以字母或者下划线开头,不能以数字开头,不能包含空格

属性约束:

#REQUIRED:表明当前这个属性是必须存在的属性

#IMPLIED:表明当前这个属性是可选的属性

#FIXED "固定值":表明当前这个属性具有一个固定值,不能指定其他的值

"默认值":表明当前属性具有一个默认值,亦可指定其他值

语法:<!ATTLIST 元素名称 属性名称 属性类型 属性的约束>

  属性约束:

XML校验方法

Eclipse自带有XML文件的语法校验

浏览器中也自带有XML文件的校验引擎

亦可用用JS代码校验

   1: 创建xml文档解析器对象

   2: var xmldoc = new ActiveXObject("Microsoft.XMLDOM");

   3: 开启xml校验

   4: xmldoc.validateOnParse = "true";

   5: 装载xml文档

   6: xmldoc.load("book.xml");

   7: 获取错误信息

   8: xmldoc.parseError.reason;  

   9: xmldoc.parseError.line

枚举 : 表示只能在一定的范围内出现值,但是只能每次出现其中的一个 。如:<!ATTLIST age ATT2 #REQUIRED>

    子元素使用竖线(|)隔开

XML语法

#IMPLIED:属性可有可无

 

DTD技术

DTD(Document Type Definition),文档类型定义,用来约束XML文档的写法

DTD文件是以.dtd结尾的文件

子元素直接使用逗号进行隔开 ,表示元素出现的顺序

 

存储的格式大致如下:

<?xml version="1.0"?>
<小纸条>
 <收件人>大元</收件人>
 <發件人>小張</發件人>
 <主題>問候</主題>
 <具體內容>早啊,飯吃了沒? </具體內容>
</小纸条>

在XML语言中,它允许用户自定义标签,每一个标签用于描述一段数据;

一个标签分为开始标签、结束标签与标签体,标签体中又可以嵌套其他标签,以此来表示数据的层级关系;

XML本质上是一段字符串,具有跨平台性,因此XML常被用于在不同系统之间进行数据交换。

<!ELEMENT students>

    <!ELEMENT 元素名称 (子元素名称,用英文逗号隔开)>

XML文件

XML是一种数据存储格式,我们可以遵照这种格式写出XML数据并保存到一个后缀为.xml的文件中

XML文件是保存XML数据的一种方式,XML数据也可以以其他的方式存在,如在内存中构建XML数据,所以XML语言并不只是狭隘的XML文件。

引入内部DTD文件

       :表示一次或多次

CDATA区与转义字符

<![CDATA[转义的内容]]>

当XML中一段内容不希望被解析器解析时可以把它放在CDATA区中

例如你想呈现一段XML文档的语法<?xml version=”1.0”?>

可以把它放在CDATA区中<![CDATA[<?xml version=”1.0”?>]]>

转义字符

有些较短的特殊字符可以直接用转义字符表示
& ---> &amp; 

< ---> &lt;

> ---> &gt;

" ---> &quot;

' ---> &apos;

无 :子元素只能出现一次

5.使用dtd定义属性

简单元素:没有子元素的元素 如:约束: : 约束name是字符串类型

    <!DOCTYPE 根元素名称 SYSTEM "dtd路径">

#FIXED: 表示一个固定值,如:<!ATTLIST sex ATT4 CDATA #FIXED "ABC">

    表示子元素出现的次数

子元素直接使用|隔开,表示元素只能出现其中的任意一个

      表示子元素出现的顺序

直接值:不写属性,使用直接值,写了属性,使用设置那个值,如:<!ATTLIST school ATT5 CDATA "WWW">

    注意:定义实体需要写在内部dtd中,如果写在外部的dtd里面,在某些浏览器下得不到实体内容

四.使用DTD定义元素

4.使用dtd定义元素

DTD分为内部DTD和外部DTDA,外部DTD又分为system和public。

 

:表示一次或者多次

  (2)使用内部的dtd文件

<!ELEMENT student>

  语法:<!ATTLIST 元素名称 属性名称 属性类型 属性约束>

二.DTD的分类

    子元素使用逗号(,)隔开

三.DTD的引入

  (3)使用外部的dtd文件

它是标准通用标记语言和[1]可扩展标记语言1.0版规格的一部分,文档可根据某种DTD语法规则验证格式是否符合此规则。

DTD(Document Type Definition),文档类型定义,DTD文件应使用UTF-8或Unicode

<!DOCTYPE 根元素名称 PUBLIC "DTD名称" “DTD文档的URL”>

  属性类型:

EMPTY : 元素为空

1.XML中有多少个元素,就在dtd文件中写几个 <!ELEMENT>

ID: 值只能是字母或者下划线开头,如:<!ATTLIST name ATT3 ID #REQUIRED>

    #REQUIRED:表示该属性必须出现

示例下载:person-xml.zip

 

 

    #FIXED :表示属性的值为一个固定值,#FIXED "固定值"

  (1)引入外部的dtd文件

    ID:表示属性的取值不能重复,属性的值只能由字母、下划线开始,不能出现空白字符

    子元素只能出现一次

    <!ELEMENT name (子元素1,子元素2,...)>

  简单元素:没有子元素

  复杂元素;有子元素的元素

    #IMPLIED:表示该属性可有可无

    <!DOCTYPE 根元素名称 PUBLIC "dtd名称" "dtd路径">

    CDATA:表示属性的取值为普通的文本字符串

    &linyi;

    <!ELEMENT name (#PCDATA)>

  语法:<!ELEMENT 元素名 约束>

      *:表示任意次

  复杂元素:有子元素

  简单元素:没有子元素的元素

      ?:表示零次或一次

  用法:在XML文件中使用 &实体名称; 引用

    <!ELEMENT 元素名称 (#PCDATA)>

编辑:编程 本文来源:文档可根据某种DTD语法规则验证格式是否符合此

关键词: 澳门新濠3559