当前位置:首页>网络学院>程序开发>XML教程>文章内容

XML定义及使用实体

[ 来源: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

http://www.it55.com/

declaration -->
    如果你恰巧是个程序设计人员,你将发现XML 实体机制与程序语言中定义的常数之间的相似性(如C 里面那些使用#define 处理器指令进行宣告的常数或函式)。如同你稍后将见到的,实体机制也是将非XML 的数据含括到XML 文件中不可或缺的要项,例如影像的图形数据。

实体的型态

    实体在刚开始可能会让人有点迷惑,因为它们是以这么多种不同的方式出现。虽然在这个章节中出现的范例都有点抽象(在你见到细节部分与范例之前),但是了解这些讯息应该会让你在实体上的学习变得更容易。
    实体利用下面三种方式进行分类:
    一般的vs.参数的 。一般实体(general entity)包含了文件的内容。意即,可以用在文件元素内的XML 文字、其它的文字,或非文字数据。前面章节中所介绍的实体范例(title 与topics)都是一般实体。参数实体(parameter entity)则包含了可以被安插在DTD 中的XML 文字。在XML 的规格书中,无条件限制的实体这个词汇是指一般实体。
    内部的vs.外部的 。内部实体(internal entity)是一个包含在引号包围字符串内的实体(如前面章节中的title 实体)。外部实体(external entity)则是包含在个别档案中的实体(如前面章节中的topic 实体)。 www.it55.com在线教程
    已解析的vs.未解析的 。已解析的实体(parsed entity)是由XML 文字(字符数据、卷标或两者皆有)所组成的实体。当你把对已解析实体的参照放入文件时,该参照会被换成实体的内容数据(也称为置换本文(replacement text)),变成文件内容的一部份。XML 解析器会以扫描文字的方式对实体的内容进行处理。前面章节中所介绍的两个实体范例(title 与topics)都是已解析的实体。
    而未解析的实体则是包含了各种型态的数据:XML 资料,或占了大多数的非XML资料。非XML 数据可以是文字数据(如标题),或非文字数据(如影像的图形数据)。因为未解析实体通常不包括XML,所以它的内容并不是透过实体参照的方式直接放入文件中。然而,你可以将实体的名称指定成ENTITY 或ENTITIES 型态属性,如此应用程序便可以使用实体的名称与叙述,并对数据进行任意的处理。
    因为实体可以利用这三种方式来进行分类,而且每种方法都有两个类别,所以理论上实体可以分成八种,如下图所示:

www.it55.com在线教程

    然而,XML 并未提供图形外的三种实体型态,所以XML 只有五种实体类型,你将在本章中学得如何定义及使用这些属性型态:

(编辑:IT资讯之家 www.it55.com

返回顶部
共8页: 上一页 1 [2] [3] [4] [5] [6] [7] [8] 下一页  

网友评论

[以下评论为网友观点,不代表本站。请自觉遵守互联网相关政策法规,所有连带责任均有评论者自负。]
[不超过250字]

图片文章