XML新手入门
XML 是可扩展标记语言(Extensible Markup Language)的缩写,其中的 标记(markup)是关键部分。您可以创建内容,然后使用限定标记标记它,从而使每个单词、短语或块成为可识别、可分类的信息。您创建的文件,或文档实例 由元素(标记)和内容构成。当从打印输出读取或以电子形式处理文档时,元素能够帮助更好地理解文档。元素的描述性越强,文档各部分越容易识别。自从出现标记至今,带有标记的内容就有一个优势,即在计算机系统缺失时,仍然可以通过标记理解打印出来数据。 标记语言从早期的私有公司和政府制定形式逐渐演变成标准通用标记语言(Standard Generalized Markup Language,SGML)、超文本标记语言(Hypertext Markup Language,HTML),并且最终演变成 XML。SGML 比较复杂,HTML(实际上仅是一组元素集)在识别信息方面不够强大。XML 则是一种易于使用和易于扩展的标记语言。 您可以使用 XML 创建自己的元素,从而能够更精确地表示自己的信息。您可以在文档内部识别每个部分,而不是将文档看作仅由标题和段落组成。为了提高效率,您可能需要定义数量一定的元素,并统一使用它们。(您可以在文档类型定义(Document Type Definition, DTD )或模式 (schema)中定义元素,稍后我将对此进行简要的描述)。一旦习惯使用 XML 之后,就可以在构建文件时尝试处理元素名称。 构建 XML如前所述,XML 文件由内容和标记组成。您通过以标记包围内容的方式将大部分内容包含在元素中。例如,假设您需要创建一本 XML 烹饪书。您需要用 XML 编写名为 Ice Cream Sundae 的食谱。为了标记食谱名,您需要将这个文本包含到元素中,即分别在文本的首末两端添加开始和结束标记。可以将元素命名为 您可以为某个文档或文档集创建元素名。可以创建规则让元素根据您的特定需求组合起来。元素名可以是比较具有针对性的,也可以是比较通用的。您还可以创建决定添加何种元素的规则。这些规则可以是严格的,也可以是松散的,这完全由您决定。一定要为文档创建元素,以识别您认为重要的部分。 开始创建 XML 文件XML 文档的第一行可以是一个 XML 声明。这是文件的可选部分,它将文件识别为 XML 文件,有助于工具和人类识别 XML(不会误认为是 SGML 或其他标记)。可以将这个声明简单地写成 创建根元素根元素的开始和结束标记用于包围 XML 文档的内容。一个文件只能有一个根元素,并且需要使用 “包装器” 包含它。清单 1 显示了经过删节的示例,其中的根元素名为 清单 1. 根元素<?xml version="1.0" encoding="UTF-8"?> <recipe> </recipe> 在构建文档时,内容和其他标记必须放在 命名元素到目前为止,都使用
我们继续以前面的示例为例,如果添加了名为 清单 2. 更多元素<?xml version="1.0" encoding="UTF-8"?> <recipe> <recipename>Ice Cream Sundae</recipename> <preptime>5 minutes</preptime> </recipe> XML 文档可以使用内部不包含任何内容的空标记,这些标记可以表示为单个标记,而不是一组开始和结束标记。以类似于 HTML 的文件为例,里面的 嵌套元素嵌套 即把某个元素放到其他元素的内部。这些新的元素称为子 元素,包含它们的元素称为父 元素。 一个常见的语法错误是父元素和子元素的错误嵌套。任何子元素都要完全包含在其父元素的开始和结束标记内部。每个同胞(Sibling)元素必须在下一个同胞元素开始之前结束。 清单 3 的代码显示了正确的嵌套。这些标记的开始和结束没有与其他标记混合 在一起。 清单 3. 正确嵌套的 XML 元素<?xml version="1.0" encoding="UTF-8"?> <recipe> <recipename>Ice Cream Sundae</recipename> <ingredlist> <listitem> <quantity>3</quantity> <itemdescription>chocolate syrup or chocolate fudge</itemdescription> </listitem> <listitem> <quantity>1</quantity> <itemdescription>nuts</itemdescription> </listitem> <listitem> <quantity>1</quantity> <itemdescription>cherry</itemdescription> </listitem> </ingredlist> <preptime>5 minutes</preptime> </recipe> 添加属性有时候要为元素添加属性。属性由一个名称-值对构成,值包含在双引号中( 您可以在元素的开始标记内部输入一个或多个属性,比如: 清单 4. 带有元素和属性的 XML 文件<?xml version="1.0" encoding="UTF-8"?> <recipe type="dessert"> <recipename cuisine="american" servings="1">Ice Cream Sundae</recipename> <preptime>5 minutes</preptime> </recipe> 您可以根据需要使用任意数量的属性。要考虑需要添加到文档的细节。如果要对文档分类,属性尤其有用,比如按照菜谱的 回页首 构造良好并且有效的 XML如果您根据结构规则创建 XML,就很容易实现构造良好的 XML。构造良好的 XML 即遵循所有 XML 规则创建的 XML:正确的元素命名,嵌套,属性命名等等。 要实现构造良好的 XML 取决于如何处理 XML。但考虑一下前面提到的示例,它要求根据菜谱类型进行分类。您需要确保每个 验证 就是根据元素规则检查文档的结构,以及如何为每个父元素定义子元素。这些规则是在 文档类型定义(Document Type Definition,DTD)或模式(schema )中定义的。验证要求您创建自己的 DTD 或 schema ,然后在 XML 文件中引用 DTD 或 schema 文件。 为了实现验证,必须在 XML 文档的顶部附近包含文档类型( 清单 5. DOCTYPE<!DOCTYPE MyDocs SYSTEM "filename.dtd"> 这个例子假设元素列表文件的名称是 filename.dtd,并且位于您的计算机上(如果指向公共文件位置,则 回页首 使用实体实体 可以是文本短语或特殊字符。它们可以指向内部或外部。必须正确地声明和表示实体,以避免错误和确保正确显示。 您不能直接在内容中输入特殊字符。如果要在文本中使用符号,必须使用它的字符代码将它设置为实体。您可以将短语(比如公司名)设置为实体,然后就可以在内容中使用该实体。为了设置实体,必须先为它创建一个名称,然后将它输入到内容中,以 and 符号( 清单 6. ENTITY<!DOCTYPE MyDocs SYSTEM "filename.dtd" [ <!ENTITY coname "Rabid Turtle Industries" ]> 使用实体可以避免反复输入相同的短语和信息。在很多情况下它还使得调整文本更加容易(变更公司名时),只需对实体定义进行简单调整。 回页首 避免错误在学习创建 XML 文件时,在 XML 编辑器中打开它,以检查它的结构是否良好,并且确保您遵循 XML 规则。例如,如果您使用 Windows? Internet Explorer?,就可以在浏览器中打开 XML。如果它能够显示 XML 元素、属性和内容,则表明 XML 是构造良好的。相反,如果显示错误,则很可能是出现语法错误,您需要小心检查文档,看看是不是丢失标记和标点符号或输入错误。 如在 嵌套元素 小节中提到的一样,包含其他元素的元素就是被包含元素的父元素。在下面的示例中, 清单 7. 构造良好的 XML<?xml version="1.0" encoding="UTF-8"?> <recipe type="dessert"> <recipename cuisine="american" servings="1">Ice Cream Sundae</recipename> <ingredlist> <listitem><quantity units="cups">0.5</quantity> <itemdescription>vanilla ice cream</itemdescription></listitem> <listitem><quantity units="tablespoons">3</quantity> <itemdescription>chocolate syrup or chocolate fudge</itemdescription></listitem> <listitem><quantity units="tablespoons">1</quantity> <itemdescription>nuts</itemdescription></listitem> <listitem><quantity units="each">1</quantity> <itemdescription>cherry</itemdescription></listitem> </ingredlist> <utensils> <listitem><quantity units="each">1</quantity> <utensilname>bowl</utensilname></listitem> <listitem><quantity units="each">1</quantity> <utensilname>spoons</utensilname></listitem> <listitem><quantity units="each">1</quantity> <utensilname>ice cream scoop</utensilname></listitem> </utensils> <directions> <step>Using ice cream scoop,place vanilla ice cream into bowl.</step> <step>Drizzle chocolate syrup or chocolate fudge over the ice cream.</step> <step>Sprinkle nuts over the mound of chocolate and ice cream.</step> <step>Place cherry on top of mound with stem pointing upward.</step> <step>Serve.</step> </directions> <variations> <option>Replace nuts with raisins.</option> <option>Use chocolate ice cream instead of vanilla ice cream.</option> </variations> <preptime>5 minutes</preptime> </recipe> 注意:换行符方便您阅读代码,它不会影响 XML。 您可以在测试文件上进行实践,去掉开始和结束标记,熟悉因此显示的错误消息。 回页首 查看 XML在 图 1 中,Internet Explorer 清晰显示了所有元素。内容包含在开始和结束标记之间。父元素旁边有小加号( 图 1. 收缩了一些同胞元素的示例 XML 实例(文件)回页首 结束语除了一些简单的规则之外,您可以随意设计 XML 元素和属性。XML 的规则并不难。真正困难的是 根据可分类性和可搜索性找出文档中有价值的内容,然后根据您的需要设计元素和属性。 当您有了明确的目标,并知道如何标记内容的时候,您可以构建高效的元素和属性了。从这个角度看,小心进行标记是创建构造良好并且有效的 XML 的根本条件。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |