[ 来源:www.it55.com | 作者: | 时间:2007-07-14 | 收藏 | 推荐 ] 【大 中 小】
XML 的实体机制是一种节省大量时间的工具,而且也是将多种不同型态的数据并入XML 文件中的方法。在XML 文件中,你可以将经常使用的XML 文字区段定义成实体,可以快速地将XML文字加入到你需要的任何地方,也可以将外部的档案定义成实体,然后将档案的数据附加到文件;这些数据可以由XML 本文或其它的文字或非文字数据所组成。
你可以使用类似用来在有效的XML 文件中宣告元素或属性的语法,在文件型态定义(DTD)中进行实体的定义。第五章已经讨论过DTD 与文件的型态宣告。
在本章中,首先你将学到一些使用实体的基本技巧,以及为实体进行分类的方法。接着你将学到如何宣告每一种不同的实体型态,以及如何将实体加到文件中需要的地方。再来你将学习如何使用两种可以让你将任何型态字符加入到各种本文中的XML 特性:字符参照与预先定义实体。最后本章将以实作的练习作为结束,让你对于在有效的XML 文件中运用实体能够有更多的实际经验。
实体的定义与分类
XML 的规格书中将「实体」这个词汇做了广泛的应用,一般的意思是指与XML 文件相关联的任何下列型式的储存单元。 www.it55.com
有效的XML 文件本身
外部的DTD 子集(已于第五章的 <使用外部DTD 子集> 中做过讨论)
定义成DTD 中外部实体的外部档案,以及实体参照的运用
在DTD 中定义内部实体的引号包围字符串,以及实体参照的运用
笔者将扼要地定义最后两项。注意列表中的前三类储存单元都是档案,而最后一项则是引号包围的字符串。
然而,本章将实体用在较狭义的领域:参考最后两项的储存单元-那就是,在文件中的DTD 中定义成外部档案或引号包围字符串,并在文件中以实体参照的方式运作。例如,下面的DTD 将外部档案Topics.xml(一个拥有包含在文件中全部文章所涵盖的标题列表的档案)定义成名为topics 的外部实体,并且将引号包围字符串(「A Short History of XML」)定义成名为title 的内部实体:
<!DOCTYPE ARTICLE
[
<!ELEMENT ARTICLE (TITLEPAGE,INTRODUCTION,SECTION*)> sflj www.it55.com kg^&fgd
<!ELEMENT TITLEPAGE (#PCDATA)>
<!ELEMENT INTRODUCTION (#PCDATA)>
<!ELEMENT SECTION (#PCDATA)>
<!ENTITY topics SYSTEM "Topics.xml">
<!ENTITY title "A Short History of XML">
]
>
你可以借着简单地含括实体参照&topics,来将标题的完整列表放在文章中你需要的任何地方(例如,在摘要、序文或结论)。如下列的元素所示:
<INTRODUCTION>
This article will cover the following topics:
&topics;
</INTRODUCTION>
接下来你就可以含括实体参照&title 来将文章放在需要的地方;如元素所示:
<TITLEPAGE>
Title:&title;
Author:Michael Young
</TITLEPAGE>
实体的机制对于储存常用的XML 文字区段特别有用。例如,如果文章标题遍布在文章里多个位置,使用实体(如之前范例中所示)能减少输入,帮助确保一致性,并且让修改标题变得更容易。你也可以借着简单地在DTD 中编辑实体宣告来修改整个标题,大概如下所示:
<!ENTITY title "A Long History of XML"><!--modified entity
(编辑:IT资讯之家 www.it55.com)