本文描述了构建良好的XML需要遵循的规则。作者详细介绍了构建XML需要考虑的元素,如何命名约定、正确的标记嵌套、属性规则、声明和实体,以及DTD和schema的验证,十分便于新手开始学习了解XML。

AD: 2013大数据全球技术峰会课程PPT下载

 

构造良好并且有效的 XML

如果您根据结构规则创建 XML,就很容易实现构造良好的 XML。构造良好的 XML 即遵循所有 XML 规则创建的 XML:正确的元素命名,嵌套,属性命名等等。

要实现构造良好的 XML 取决于如何处理 XML。但考虑一下前面提到的示例,它要求根据菜谱类型进行分类。您需要确保每个 ﹤recipe﹥ 元素都包含 type 属性,以对菜谱进行分类。能够正确验证并确保存在属性值是非常重要的(避免出现双关语)。

验证 就是根据元素规则检查文档的结构,以及如何为每个父元素定义子元素。这些规则是在 文档类型定义(Document Type Definition,DTD)或模式(schema )中定义的。验证要求您创建自己的 DTD 或 schema ,然后在 XML 文件中引用 DTD 或 schema 文件。

为了实现验证,必须在 XML 文档的顶部附近包含文档类型(DOCTYPE)。这行代码将引用用于验证文档的 DTD 或 schema (元素和规则列表)。例如,DOCTYPE 可能类似于 清单 5。

清单 5. DOCTYPE

﹤!DOCTYPE MyDocs SYSTEM "filename.dtd"﹥

这个例子假设元素列表文件的名称是 filename.dtd,并且位于您的计算机上(如果指向公共文件位置,则 SYSTEM 和 PUBLIC 是相对的)。

使用实体

实体 可以是文本短语或特殊字符。它们可以指向内部或外部。必须正确地声明和表示实体,以避免错误和确保正确显示。

您不能直接在内容中输入特殊字符。如果要在文本中使用符号,必须使用它的字符代码将它设置为实体。您可以将短语(比如公司名)设置为实体,然后就可以在内容中使用该实体。为了设置实体,必须先为它创建一个名称,然后将它输入到内容中,以 and 符号(&)开始,并以分号(;)结束 — 例如,&coname;。然后在 DOCTYPE 的方括号([])内部输入代码,如 清单 6 所示。这个代码识别表示实体的文本。

清单 6. ENTITY

﹤!DOCTYPE MyDocs SYSTEM "filename.dtd" [ ﹤!ENTITY coname "Rabid Turtle
Industries"
]﹥

使用实体可以避免反复输入相同的短语和信息。在很多情况下它还使得调整文本更加容易(变更公司名时),只需对实体定义进行简单调整。

避免错误

在学习创建 XML 文件时,在 XML 编辑器中打开它,以检查它的结构是否良好,并且确保您遵循 XML 规则。例如,如果您使用 Windows® Internet Explorer®,就可以在浏览器中打开 XML。如果它能够显示 XML 元素、属性和内容,则表明 XML 是构造良好的。相反,如果显示错误,则很可能是出现语法错误,您需要小心检查文档,看看是不是丢失标记和标点符号或输入错误。

如在 嵌套元素 小节中提到的一样,包含其他元素的元素就是被包含元素的父元素。在下面的示例中,﹤recipe﹥ 是根元素,并且包含文件的完整内容。父元素 ﹤recipe﹥ 包含的子元素有 ﹤recipename﹥、﹤ingredlist﹥、﹤directions﹥ 等等。在这种结构中,﹤recipename﹥、﹤ingredlist﹥ 和 ﹤directions﹥ 成了同胞元素。此外,还要正确嵌套同胞 元素。清单 7 给出了构造良好并且正确嵌套的 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 的根本条件。

XML新手入门 创建构造良好的XML(2)的更多相关文章

  1. XML新手入门 创建构造良好的XML(1)

    XML新手入门 创建构造良好的XML(1) 2009-03-19 09:24 Kay Whatley IBM Developerworks 我要评论(0) 字号:T | T 本文描述了构建良好的XML ...

  2. XML 新手入门基础知识(复制,留着自己看)

    如果您是 XML 新手,本文将为您介绍 XML 文档的基础结构,以及创建构造良好的 XML 需要遵循的规则,包括命名约定.正确的标记嵌套.属性规则.声明和实体.您还可以从本文了解到 DTD 和 sch ...

  3. XML 新手入门基础知识

    XML 是可扩展标记语言(Extensible Markup Language)的缩写,其中的 标记(markup)是关键部分.您可以创建内容,然后使用限定标记标记它,从而使每个单词.短语或块成为可识 ...

  4. XML系列之--创建电文格式的XML(一)

    关于XML,学校那会,老师在口中仅仅提及,自己也未曾深入接触过,仅是些将最基本XML文件内容显示在web定义的表格中之类的简单操作,如今项目中的收发电文涉及到复杂XML的操作.趁此契机好好回顾下XML ...

  5. XML系列之--解析电文格式的XML(二)

    上一节介绍了XML的结构以及如何创建.讲到了XML可作为一种简单文本存储数据,把数据存储起来,以XML的方式进行传递.当接收到XML时,必不可少的就是对其进行解析,捞取有效数据,或者将第三方数据以节点 ...

  6. 使用.NET中的XML注释(二) -- 创建帮助文档入门篇

    一.摘要 在本系列的第一篇文章介绍了.NET中XML注释的用途, 本篇文章将讲解如何使用XML注释生成与MSDN一样的帮助文件.主要介绍NDoc的继承者:SandCastle. 二.背景 要生成帮助文 ...

  7. XML学习入门

    很久没更新博客了.来一发! 关于XML,当时没学过感觉难吧?其实XML还是蛮好学的,这里留下一些入门级别的内容. XML中dtd(文档类型定义)的主要用处是约束xml,也可以去约束html,xhtml ...

  8. XML从入门到深入(超详细)

    一:什么是XML XML (eXtensible Markup Language)指可扩展标记语言,标准通用标记语言的子集,简称XML.是一种用于标记电子文件使其具有结构性的标记语言. XML可以标记 ...

  9. ASP.NET - 演练:创建网页以显示 XML 数据

    数据通常是以 XML 格式提供给 Web 应用程序的.但是,XML 数据本质上是分层的,因此您可能希望能够在基于列表的控件中使用 XML 数据,如 GridView 或 DropDownList 控件 ...

随机推荐

  1. 从外部导入jar包的三种方式

    我们在用Eclipse开发程序的时候,经常要用到第三方jar包.引入jar包不是一个小问题,由于jar包位置不清楚,而浪费时间.下面配图说明3种Eclipse引入jar包的方式. 1.最常用的普通操作 ...

  2. 加载php_curl.dll和php_openssl.dll出错原因及解决办法

    今天在XP下安装PHP开发环境时,需要加载php_curl.dll这个动态库,自己想当然的在php.ini里把extension=php_curl.dll打开以为就可以了.可以在apache的logs ...

  3. du与df为什么有时候会有差异

    以下仅为本人理解,非官方! du命令:统计父目录的目录项,若目录项存在,则进行查找 df命令:统计inode节点,根据inode节点存储的块大小进行统计 差异原因: 当一个文件被进程调用后,复制文件到 ...

  4. performance_schema 变量

    performance_schema 这个变量来控制performance_schema库的禁用和启用 1.performance_schema的值说明 performance_schema=1 表示 ...

  5. Hibernate HQL基础 使用参数占位符

    在HQL中有两种方法实现使用参数占用符 1.使用? 使用?设置参数占位符,之后通过setString()和setInteger()等方法为其赋值.如: Query query = session.cr ...

  6. POP3、SMTP、IMAP和Exchange都是个什么玩意?

    很多时候一直对POP3.SMTP.IMAP和Exchange等迷迷糊糊的.下面就整理说明一下: 当前常用的电子邮件协议有SMTP.POP3.IMAP4,它们都隶属于TCP/IP协议簇,默认状态下,分别 ...

  7. C# Directory类

    Directory类 是一个静态类,常用的地方为创建目录和目录管理. 一下来看看它提供的操作. 1.CreateDirectory 根据指定路径创建目录.有重载,允许一次过创建多个目录. 2.Dele ...

  8. Permutation Sequence 解答

    Question The set [1,2,3,…,n] contains a total of n! unique permutations. By listing and labeling all ...

  9. SVN trunk、branch、tag的用法

    Subversion有一个很标准的目录结构,是这样的.比如项目是proj,svn地址为svn://proj/,那么标准的svn布局是svn://proj/|+-trunk+-branches+-tag ...

  10. eclipse中如何创建maven项目

    1.在eclipse中,file-->new-->maven project,勾选Create a simple project,点击next. 2.添加项目信息,点击finish.(pa ...