`
阅读更多

1DTD - XML 建立主组件群(blocks
    <body>....</body>之类的标签是XMLHTML文件的主组件群(blocks)。

1.1XML文件的组件群
    DTD来看,所有的XML文件(和HTML文件)都是由接下来的简单组件群组成的:Elements元素;Attributes 属性;Entities实体;PCDATA 被解析的字符数据(Parsed Character Data);CDATA 字符数据值(Character Data)。下面是每个组件群的简短解释。

1.2元素(Elements
    元素是XMLHTML文件的主组件群(main building blocks)。HTML元素的实例是"body" "table"XML元素实例是"note" "message"。元素可以包括文本、其它元素或者空值。空值html元素的实例是"hr", "br" "img"
例如:
<body>body text in between</body>
<message>some message in between</message>

1.3属性(Attributes
    属性提供关于元素的额外信息(extra information about elements)。属性总是置于元素的开始标签里面。属性一般是以名称(name/值(value这样的形势一对对的出现。下面的“img”元素就是关于源文件的补充信息:
<img src="computer.gif" />
   
元素名称是“img”。属性名称“src”。属性值是"computer.gif"。因为元素自身是空值,所以它是以“/”结束的。

1.4实体(Entities
    实体是对于定义普通文件(define common text)的变量。实体参数是定义实体的参数。很多人都知道HTML实体参数:"&nbsp;"。这里的"no-breaking-space"实体是在HTML中用来在文本中插入一个额外空间的。当XML剖析器解析文件时,实体就会得到扩展。下面(表1)的实体是在XML中预定的:

1

字符

字符实体

&

&amp;&#38;

'

&apos;&#39;

>

&gt;&#62;

<

&lt;&#60;

"

&quot;&#34;

1.5 PCDATA
    PCDATA的意思是被解析的字符数据。把字符数据当作XML元素的开始标签与结束标签之间的文本。剖析器会分析PCDATA文本。文本中的标签会被当作标示的字体,实体将会扩展。

1.6 CDATA
    CDATA也是字符数据的意思。剖析器不会解析CDATA文本。文本中的标签不会作为标示字体,实体也将不会得到扩展。

2.元素定义
2.1元素声明
    元素声明语法如下:
<!ELEMENT name content>
   
其中,name是一个标准的XML标记的名字。Centent
由以下三种之一组成:
关键字
EMPTY
关键字
ANY
描述包含在本元素中的子元素的顺序和重复次数的内容模型。

2.2元素内容类型(Element Content Model
    元素内容通常有五种类型:EMPTYANY#PCDATA、子元素型和混合型。


2.2.1 EMPTY类型
    EMPTY用于定义空元素,该元素只可能有属性而不会有字符数据或子元素。其形式为<swt/><swt></swt>。声明空元素的语法如下:
<!ELEMENT emptyelement EMPTY>

2.2.2 ANY类型
    该元素可以包含DTD中定义的其他任何元素或已编译的字符数据。声明该元素的语法如下:
<!ELEMENT anyelement ANY>

2.2.3 #PCDATA类型
    不包含其它任何元素而只包含字符数据的元素,用关键字#PCDATA进行定义,它代表已编译的字符数据(parsed character dataPCDATA可以包含除标记以外的一切字符,包括数字、字母和符号等。被定义为包含PCDATA的元素不能包含任何其它子元素。示例如下:
<!ELEMENT title(#PCDATA)>

2.2.4 子元素类型
    元素可以包含一系列的子元素,子元素内容模型用于指定某个元素可以包含哪些子元素,如:
<!ELEMENT message(header,body,signature,footer)>//message元素包含四个子元素,依次是headerbodysignaturefooter元素。
    根据子元素间的关系,子元素内容模型可以有两种可能的结构:序列和选择。
序列。其所有子元素必须出现且仅出现一次,这种结果成为序列。使用序列时应注意,首先,序列中不能出现
#PCDATA;其次,子元素自身还可以包含其它子元素。
选择。元素间的选择可以进行如下声明:
<!ELEMENT elem(subelem1|subelem2|subelem3)>//将子元素用竖线进行分隔,表明elem元素的子元素为subelem1subelem2subelem3三者之一,但不能同时包含其中的两个或三个子元素。
    序列和选择这两种结构可以结合使用。

2.2.5 混合类型
    若某元素既包含子元素又包含已编译的字符数据,则该元素具有混合内容。其声明如下:
<!ELEMENT pick(#PCDATA|one|two|three)*>
   
为避免产生错误,混合内容元素的声明必须遵循这一格式。即采用单一的一组可选项,以#PCDATA开始,后面是混合内容中可能出现的子元素类型,每种只需声明一次。除此之外,“*”
必须放在右括号之后。下面的声明是错误的:
<!ELEMENT pick(one|#PCDATA|two*|three)>

2.3元素出现次数指示符(Element Occurrence Indicator见表2

2

符号

代表标记出现的次数

不出现或只出现一次

*

不出现或可出现多次

+

必须出现一次以上

无符号

只能出现一次

  

3.属性定义
3.1
属性声明
   
属性声明的语法如下:
<!ATTLIST Element_name Attribute_name Type Defualt_value>
   
其中,ATTLIST关键字用来定义元素所具有的属性,Element_name是元素名,Attribute_name是该元素所具有的属性名,Type是属性的类型,Defualt_value是属性的默认值。注意:在一个给定的元素中不能有两个属性同名;若属性值中含有双撇号,则该属性值应用单撇号括起来。如:
<job comments=’He said,”I can paint only red door” ’>Door Painter</job>

3.2 属性类型
   
XML中共有10种属性类型(attribute-type):(见表3

3

属性值类别

描述

CDATA

属性值仅仅是一般的文字。与#PCDATA元素声明类似。

<!ATTLIST AnElem attr CDATA #REQUIRED>

Enumerated

列出该属性的取值范围,一次只能有一个属性值能够赋予属性。

<!ATTLIST play position (center|forward|defense) ”center”>

NMTOKEN

表示属性值只能由字母或下划线_开始,之后是字母、数字、下划线、短横线或圆点,且不能含有空格。

NMTOKENS

表示属性值能够由多个nmtoken组成,每个nmtoken之间用空格隔开。

ID

ID类型用于标识文档中的元素。该属性在xml文件中是唯一的。同时,每个元素最多只能具有一个ID类型的属性。

<!ALLTIST author authorID ID #REQUIRED >

IDREF/ IDREFS

IDREF表示该属性值是参考了另一个id属性;IDREFS表示该属性值是参考了多个id属性,这些id属性的值用空格隔开。

DTD定义:

<!ELEMENT bookInfo(publishers,authors,books)>

<!ELEMENT publishers(publisher+)>

<!ELEMENT publisher(pname,address)>

<!ATTLIST publisher publisherID ID #REQUIRED>

<!ELEMENT pname(#PCDATA)>

<!ELEMENT address(#PCDATA)>

<!ELEMENT authors(author+)>

<!ELEMENT author(aname,age,sex)>

<!ATTLIST author authorID ID #REQUIRED>

<!ELEMENT aname(#PCDATA)>

<!ELEMENT age(#PCDATA)>

<!ELEMENT sex(#PCDATA)>

<!ELEMENT books(book*)>

<!ELEMENT book(title,price,year)>

<!ATTLIST book publisher IDREF #REQUIRED

author IDREFS #REQUIRED>

<!ELEMENT title(#PCDATA)>

<!ELEMENT price(#PCDATA)>

<!ELEMENT year(#PCDATA)>

对应的XML文档:

<bookInfo>

<publishers>

<publisher publisherID=”p001”>

<pname>tsinghua university press</pname>

<address>Beijing</address>

</publisher>

<publisher publisherID=”p002”>

<pname>electronic industy press</pname>

<address>Beijing</address>

</publisher>

</publishers>

<authors>

<author authorID=”a001”>

<aname>Mary</aname>

<age>34</age>

<sex>male</sex>

</author>

<author authored=”a002”>

<aname>Tom</aname>

<age>39</age>

<sex>female</sex>

</author>

</authors>

<books>

<book publisher=”p001” author=”a001 a002”>

<title>XML</title>

<price>22</price>

<year>2007</year>

</book>

</books>

</bookInfo>

ENTITY

表示该属性的设定值是一个外部实体(entity),如一个图片文件。

ENTITYS

该属性值包含了多个外部entity,不同的entity之间用空格隔开。

NOTATION

属性值是在DTD中声明过的notation(声明用什么应用软件解读某些二进制文件,如图片)。

<!NOTATION gif SYSTEM “GIF_Viewer”>

<!NOTATION jpg SYSTEM “JPG_Viewer”>

<!NOTATION png SYSTEM “PNG_Viewer”>

<!ELEMENT img #PCDATA>

<!ATTLIST img src CDATA #REQUIRED

NOTATIONpng|jpg|gif#REQUIRED >

//其中,type属性的值可以为pngjpggif之一,且每个值均与一个相应的<!NOTATION>声明相对应。

3.3 属性默认值
   
属性声明可以给属性指定一个默认值,使得当在XML文档中未明确地指定该属性的值时,XML处理器会将此默认值作为该属性的值。属性的默认值可用#REQUIRED#IMPLIED#FIXED和字符串定义,见表4

</table
分享到:
评论

相关推荐

    mybatis-3-config.dtd mybatis-3-mapper.dtd

    在MyBatis中,`mybatis-3-config.dtd` 和 `mybatis-3-mapper.dtd` 是两个至关重要的DTD(Document Type Definition)文件,它们定义了MyBatis配置文件和映射文件的结构和规则。 首先,让我们深入了解一下`mybatis-3...

    DTD 总结 DTD 总结 DTD 总结

    **DTD(Document Type Definition)**是XML文档类型定义的缩写,它是一种规范,用于定义XML文档的结构和限制。DTD允许我们为XML文档创建一套预定义的规则,确保文档内容遵循特定的格式,便于数据交换和处理。下面将...

    DTD的CHM帮助文档

    **DTD(Document Type Definition)** 是XML(Extensible Markup Language)文档类型定义的缩写,它是XML规范的一部分,用于定义XML文档的结构和元素。在XML文档中,DTD的作用是确保文档内容遵循预设的规则,即所有...

    使用DTD验证XML文档

    使用DTD验证XML文档 一、 DTD的定义: a) DTD是Document Type Defintion的缩写,即文档类型定义。DTD用来描述XML文档的结构。 二、 DTD可能包含的内容: a) 元素的定义规则。 b) 元素之间的关系规则。 c) 属性的定义...

    sql-map-2.dtd和sql-map-config-2.dtd

    本文将深入探讨与“sql-map-2.dtd”和“sql-map-config-2.dtd”相关的知识点,以及它们在Ibatis中的作用。 Ibatis是一个轻量级的ORM(对象关系映射)框架,它允许开发者将SQL语句直接写在配置文件中,通过XML映射...

    DTD验证XML详解

    DTD(Document Type Definition)是XML的一个重要组成部分,它定义了XML文档的结构和规则,确保XML文档的一致性和合法性。本文将深入探讨DTD验证XML的概念、原理以及如何进行实践操作。 XML文档通过DTD来规定其元素...

    DTD 教程 DTD 实例

    **DTD(Document Type Definition)教程** DTD 是 XML(Extensible Markup Language)文档的结构定义工具,它用于描述 XML 文档的元素、属性、实体等结构,确保 XML 文档的合法性。DTD 的作用在于提供一种机制,使...

    Struts2的DTD配置文件struts-2.3.dtd

    为了在Eclipse这样的集成开发环境中获得代码提示和自动完成,我们需要引入DTD(文档类型定义)文件,例如`struts-2.3.dtd`。 DTD是一个XML规范,它定义了一组元素和属性,以及它们的结构和限制。`struts-2.3.dtd`为...

    DTD的定义、规则和编写

    ### DTD的定义、规则和编写 #### 一、DTD概述 **文档类型定义**(Document Type Definition, DTD)是一套关于标记语言的语法规则,主要用于定义XML文档的结构和内容。DTD作为XML 1.0规范的一部分,是XML文件验证的...

    struts2 配置dtd 自动提示

    为了在开发环境中获得更好的代码辅助和提示,我们需要使IDE(例如Eclipse)理解`struts.xml`文件的结构,这通常通过引用DTD(文档类型定义)来实现。 在标题和描述中提到的"struts2 配置dtd 自动提示"是指在Eclipse...

    使用DTD实现文档结构定义

    1.掌握DTD基本语法规范 2.掌握DTD对元素的声明 实验内容: 1.改正以下message.xml文档的语法错误,并将内部DTD改为外部DTD,并要求验证文档有效性。 &lt;!DOCTYPE myMessage [ &lt;!ELEMENT myMessage (message)&gt; &lt;!...

    struts+spring+mybatis+hibernate的dtd文件

    DTD(Document Type Definition)是XML文档类型定义,用于描述XML文档结构的一种规范。在Java Web开发中,Struts、Spring、MyBatis和Hibernate这四个框架各有其特定的配置文件,而这些配置文件有时会使用DTD来定义...

    hibernate-configuration-3.0.dtd、hibernate-mapping-3.0.dtd

    《深入理解Hibernate配置与映射:hibernate-configuration-3.0.dtd与hibernate-mapping-3.0.dtd解析》 在Java世界里,Hibernate作为一款强大的对象关系映射(ORM)框架,极大地简化了数据库操作。而`hibernate-...

    mybatis-3-config/mapper.dtd 解决mybatis头文件报错

    然后打开eclipse -&gt;Window-&gt;prefenrence-&gt;XML-&gt;XML Catalog-&gt;User Specifiled Entreis-&gt;Add-&gt;Location(此处是你放dtd文件的位置例如:‪D:\mybatis\mybatis-3-config.dtd)-&gt;Key(如果更改config,此处应该是:-//...

Global site tag (gtag.js) - Google Analytics

4

属性内定值

描述

#REQUIRED

表示在标记中必须出现此属性。

#IMPLIED

标记中可以不出现此属性。即该属性不是必须使用。

#FIXED

属性的值是固定的某个值。

字符串

标记中如没有指定属性的值,那么此字符串就是此属性的值。