XML新手入门 创建构造良好的XML(1)
XML新手入门 创建构造良好的XML(1)
本文描述了构建良好的XML需要遵循的规则。作者详细介绍了构建XML需要考虑的元素,如何命名约定、正确的标记嵌套、属性规则、声明和实体,以及DTD和schema的验证,十分便于新手开始学习了解XML。
如果您是 XML 新手,本文将为您介绍 XML 文档的基础结构,以及创建构造良好的 XML 需要遵循的规则,包括命名约定、正确的标记嵌套、属性规则、声明和实体。您还可以从本文了解到 DTD 和 schema 的验证。
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 的食谱。为了标记食谱名,您需要将这个文本包含到元素中,即分别在文本的首末两端添加开始和结束标记。可以将元素命名为 recipename。要标记元素的开始标记,像这样将元素名放到尖括号中(﹤﹥):﹤recipename﹥。然后输入文本 Ice Cream Sundae。在文本的后面输入结束标记,即将元素名放在尖括号内,然后在元素名前面加上一个终止斜杠(/),比如:﹤/recipename﹥。这些标记构成一个元素,您可以在元素的内部添加内容或其他元素。
您可以为某个文档或文档集创建元素名。可以创建规则让元素根据您的特定需求组合起来。元素名可以是比较具有针对性的,也可以是比较通用的。您还可以创建决定添加何种元素的规则。这些规则可以是严格的,也可以是松散的,这完全由您决定。一定要为文档创建元素,以识别您认为重要的部分。
开始创建 XML 文件
XML 文档的第一行可以是一个 XML 声明。这是文件的可选部分,它将文件识别为 XML 文件,有助于工具和人类识别 XML(不会误认为是 SGML 或其他标记)。可以将这个声明简单地写成 ﹤?xml?﹥,或包含 XML 版本(﹤?xml version="1.0"?﹥),甚至包含字符编码,比如针对 Unicode 的 ﹤?xml version="1.0" encoding="utf-8"?﹥。因为这个声明必须出现在文件的开头,所以如果打算将多个小的 XML 文件合并为一个大 XML 文件,则可以忽略这个可选信息。
创建根元素
根元素的开始和结束标记用于包围 XML 文档的内容。一个文件只能有一个根元素,并且需要使用 “包装器” 包含它。清单 1 显示了经过删节的示例,其中的根元素名为 ﹤recipe﹥。(参见 下载 小节获得完整的 XML 文件)。
清单 1. 根元素
﹤?xml version="1.0" encoding="UTF-8"?﹥
﹤recipe﹥
﹤/recipe﹥
在构建文档时,内容和其他标记必须放在 ﹤recipe﹥ 和 ﹤/recipe﹥ 之间。
命名元素
标记的大小写保持一致
创建 XML 时,要确保开始和结束标记的大小写是一致的。如果大小写不一致,在使用或查看 XML 时将出现错误。例如,如果大小写不一致,Internet Explorer 将不能显示文件的内容,但它会显示开始和结束标记不一致的消息。
到目前为止,都使用 ﹤recipe﹥ 作为根元素。在 XML 中,先要为元素选择名称,然后再根据这些名称定义相应的 DTD 或 schema。创建名称时可以使用英文字母、数字和特殊字符,比如下划线(_)。下面给出命名时需要注意的地方:
元素名中不能出现空格。
名称只能以英文字母开始,不能是数字或符号。(在第一个字母之后就可以使用字母、数字或规定的符号,或它们的混合)。
对大小写没有限制,但前后要保持一致,以免造成混乱。
我们继续以前面的示例为例,如果添加了名为 ﹤recipename﹥ 的元素,它将有一个开始标记 ﹤recipename﹥ 和相应的结束标记 ﹤/recipename﹥。
清单 2. 更多元素
﹤?xml version="1.0" encoding="UTF-8"?﹥
﹤recipe﹥
﹤recipename﹥Ice Cream Sundae﹤/recipename﹥
﹤preptime﹥5 minutes﹤/preptime﹥
﹤/recipe﹥
XML 文档可以使用内部不包含任何内容的空标记,这些标记可以表示为单个标记,而不是一组开始和结束标记。以类似于 HTML 的文件为例,里面的 ﹤img src="mylogo.gif"﹥ 是一个独立的元素。它不包含任何子元素或文本,因此它是一个空元素,您可以将它表示为 ﹤img src="mylogo.gif" /﹥(以一个空格和熟悉的终止斜杠结束)。
嵌套元素
嵌套 即把某个元素放到其他元素的内部。这些新的元素称为子 元素,包含它们的元素称为父 元素。﹤recipe﹥ 根元素中嵌套有几个其他元素,如 清单 3 所示。这些嵌套的子元素包括 ﹤recipename﹥、﹤ingredlist﹥ 和 ﹤preptime﹥。﹤ingredlist﹥ 元素内部包含多个子元素 ﹤listitem﹥。XML 文档可以使用多层嵌套。
一个常见的语法错误是父元素和子元素的错误嵌套。任何子元素都要完全包含在其父元素的开始和结束标记内部。每个同胞(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﹥
添加属性
有时候要为元素添加属性。属性由一个名称-值对构成,值包含在双引号中("),比如:type="dessert"。属性是在使用元素时存储额外信息的一种方式。在同一个文档中,可以根据需要对每个元素的不同实例采用不同的属性值。
您可以在元素的开始标记内部输入一个或多个属性,比如:﹤recipe type="dessert"﹥。如果要添加多个属性,各个属性之间使用空格分开,比如:﹤recipename cuisine="american" servings="1"﹥。清单 4 显示了当前的 XML 文件。
清单 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﹥
您可以根据需要使用任意数量的属性。要考虑需要添加到文档的细节。如果要对文档分类,属性尤其有用,比如按照菜谱的 type 进行分类。属性名可以包含在元素名中使用的字符,规则也是类似的,即字符之间不能带有空格,名称只能以字母开始。
XML新手入门 创建构造良好的XML(1)的更多相关文章
- XML新手入门 创建构造良好的XML(2)
本文描述了构建良好的XML需要遵循的规则.作者详细介绍了构建XML需要考虑的元素,如何命名约定.正确的标记嵌套.属性规则.声明和实体,以及DTD和schema的验证,十分便于新手开始学习了解XML. ...
- XML 新手入门基础知识(复制,留着自己看)
如果您是 XML 新手,本文将为您介绍 XML 文档的基础结构,以及创建构造良好的 XML 需要遵循的规则,包括命名约定.正确的标记嵌套.属性规则.声明和实体.您还可以从本文了解到 DTD 和 sch ...
- XML 新手入门基础知识
XML 是可扩展标记语言(Extensible Markup Language)的缩写,其中的 标记(markup)是关键部分.您可以创建内容,然后使用限定标记标记它,从而使每个单词.短语或块成为可识 ...
- XML系列之--创建电文格式的XML(一)
关于XML,学校那会,老师在口中仅仅提及,自己也未曾深入接触过,仅是些将最基本XML文件内容显示在web定义的表格中之类的简单操作,如今项目中的收发电文涉及到复杂XML的操作.趁此契机好好回顾下XML ...
- XML系列之--解析电文格式的XML(二)
上一节介绍了XML的结构以及如何创建.讲到了XML可作为一种简单文本存储数据,把数据存储起来,以XML的方式进行传递.当接收到XML时,必不可少的就是对其进行解析,捞取有效数据,或者将第三方数据以节点 ...
- 使用.NET中的XML注释(二) -- 创建帮助文档入门篇
一.摘要 在本系列的第一篇文章介绍了.NET中XML注释的用途, 本篇文章将讲解如何使用XML注释生成与MSDN一样的帮助文件.主要介绍NDoc的继承者:SandCastle. 二.背景 要生成帮助文 ...
- XML学习入门
很久没更新博客了.来一发! 关于XML,当时没学过感觉难吧?其实XML还是蛮好学的,这里留下一些入门级别的内容. XML中dtd(文档类型定义)的主要用处是约束xml,也可以去约束html,xhtml ...
- XML从入门到深入(超详细)
一:什么是XML XML (eXtensible Markup Language)指可扩展标记语言,标准通用标记语言的子集,简称XML.是一种用于标记电子文件使其具有结构性的标记语言. XML可以标记 ...
- ASP.NET - 演练:创建网页以显示 XML 数据
数据通常是以 XML 格式提供给 Web 应用程序的.但是,XML 数据本质上是分层的,因此您可能希望能够在基于列表的控件中使用 XML 数据,如 GridView 或 DropDownList 控件 ...
随机推荐
- Excel Aspose.Cells 设置单元格格式 为数字
Workbook workbook = new Workbook(); //工作簿 Worksheet sheet = workbook.Worksheets[]; //工作表 sheet.Cells ...
- [转]mac下Python升级到指定的版本
以2.7升级到3.3为例1.删除原版本a)删除系统库中的版本sudo rm -R /System/Library/Frameworks/Python.framework/Versions/2.7 b) ...
- 负载均衡集群之LVS持久链接
原理--> 通过构建一个hash表,利用CIP与RS的对应关系,来保持来自一个CIP的各种服务都走同一个RS 目的--> 保持持久链接的同时,将多个服务合并起来,例如http和https ...
- C语言做一个通讯录程序(在console里面运行)
最近复习C语言的时候看到网上有个C语言通讯录的小项目,于是看了下那个程序实现的大概的功能,然后自己也跟着做了个.代码还算简洁,贴上来给有需要的人. // // main.m // AdressBook ...
- 利用fiddler录制脚本
特性说明: 版本:V4.4 用途:将fiddler抓取的请求,导出为jmx格式,方便jmeter直接调用 新增功能: 1.在测试计划下,新增[HTTP请求默认值],内容为空,后续需将站点的IP和端口填 ...
- Socket基础(一)
OSI七层模型: 物理层:比特,数据链路层:帧,网络层:包,传输层及以上:报文.因为不用,不做详解. TCP/IP模型:这个常用,详解. 链路层:负责在两个相邻节点上线路上的无差错传输数据,以帧为单位 ...
- 35+雪花Logos设计灵感
快中秋节放假了,给大家分享一些雪花Logos设计灵感,陶冶下心情吧! 原文地址:http://www.goodfav.com/35-snowflake-logos-ideas-17134.html V ...
- 一次使用Eclipse Memory Analyzer分析Tomcat内存溢出
转:http://tivan.iteye.com/blog/1487855 前言 在平时开发.测试过程中.甚至是生产环境中,有时会遇到OutOfMemoryError,Java堆溢出了,这表明程序有严 ...
- cf471A MUH and Sticks
A. MUH and Sticks time limit per test 1 second memory limit per test 256 megabytes input standard in ...
- app行业发展趋势
近日,移动开放平台发布了2014年第一季度App开发行业报告.报告中对目前国内app开发者的分布情况,个人开发者和企业开发者的开发领域,相应比例以及提交应用过程中出现的问题做出统计,为如何建立一个更好 ...
