XML的文档规则

转载 2006年06月07日 10:48:00

XML,或称为可扩展标记语言(Extensible Markup Language),是一种您可以用来创建自己的标记的标记语言。它由万维网协会(W3C)创建,用来克服 HTML(即超文本标记语言(Hypertext Markup Language),它是所有网页的基础)的局限。和 HTML 一样,XML 基于 SGML — 标准通用标记语言(Standard Generalized Markup Language)。尽管 SGML 已在出版业使用了数十年,但其理解方面的复杂性使许多本打算使用它的人望而却步(SGML 也代表“听起来很棒,但或许以后会用(Sounds great, maybe later)”)。XML 是为 Web 设计的。

 

XML 文档必须包含在一个单一元素中。这个单一元素称为根元素,它包含文档中所有文本和所有其它元素。在下面的示例中,XML 文档包含在一个单一元素 <greeting> 中。请注意文档有一行注释在根元素之外;那是完全合乎规则的。

code style="FONT-SIZE: 12px; FONT-FAMILY: Courier New, Courier, monospace"> <?xml version="1.0"?> <!-- A well-formed document --> <greeting> Hello, World! </greeting>

下面是一个不包含单一根元素的文档:


<?xml version="1.0"?>
<!-- An invalid document -->
<greeting>
  Hello, World!
</greeting>
<greeting>
  Hola, el Mundo!
</greeting>
          

不管该文档可能包含什么信息,XML 解析器都会拒绝它。

XML 元素不能重叠。

 

结束标记是必需的不能省去任何结束标记。在下面第一个示例中,标记是不合乎规则的,因为没有结束段落(</p>)标记。尽管这在 HTML(以及某些情况下在 SGML)中可以接受,但 XML 解析器将拒绝它。


<!-- NOT legal XML markup -->
<p>Yada yada yada...
<p>Yada yada yada...
<p>...
          

如果一个元素根本不包含标记,则称为空元素;HTML 换行(<br>)和图像(<img>)元素就是两个例子。在 XML 文档的空元素中,您可以把结束斜杠放在开始标记中。下面的两个换行元素和两个图像元素对于 XML 解析器来说是一回事:


<!-- Two equivalent break elements -->
<br></br>
<br />

<!-- Two equivalent image elements -->
<img src="../img/c.gif"></img>
<img src="../img/c.gif" />
XML 文档中的属性有两个规则:
  • 属性必须有值
  • 那些值必须用引号括起。
比较下面的两个示例。顶部的标记在 HTML 中是合乎规则的,但在 XML 中则不是。为了在 XML 中取得相同结果,
您必须给属性赋值,而且必须把值括在引号中。

<!-- NOT legal XML markup -->
<ol compact>

<!-- legal XML markup -->
<ol compact="yes">
          
您可以使用单引号,也可以使用双引号,但要始终保持一致。
如果属性值包含单引号或双引号,则您可以使用另一种引号来括起该值(如 name="Doug's car"),或使用实体 &quot; 代表双引号,使用 &apos; 代表单引号。实体是一个符号(如 &quot;),XML 解析器会用其它文本代替该符号(如 ")。
 


大多数 XML 文档以 XML 声明作为开始,它向解析器提供了关于文档的基本信息。建议使用 XML 声明,但它不是必需的。如果有的话,那么它
一定是文档的第一样东西。

声明最多可以包含三个名称-值对(许多人称它们为属性,尽管在技术上它们并不是)。version 是使用的 XML 版本;目前该值必须是 1.0
encoding 是该文档所使用的字符集。该声明中引用的 ISO-8859-1 字符集包括大多数西欧语言用到的所有字符。如没有指定 encoding
XML 解析器会假定字符在 UTF-8 字符集中,这是一个几乎支持世界上所有语言的字符和象形文字的 Unicode 标准。

<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>

最后,standalone(可以是 yesno)定义了是否可以在不读取任何其它文件的情况下处理该文档。例如,如果 XML 文档没有引用任何
其它文件,则您可以指定 standalone="yes"。如果 XML 文档引用其它描述该文档可以包含什么的文件(马上会详细介绍这些文件),则
您可以指定 standalone="no"。因为 standalone="no" 是缺省的,所以您很少会在 XML 声明中看到 standalone

 

您或许会在一个 XML 文档中发现其它几项:

  • 注释:注释可以出现在文档的任何位置;它们甚至可以出现在根元素的前面或后面。注释以 <!-- 开始,以 --> 结束。注释不能在结束部分以外包含双连字符(--);除此之外,注释可以包含任何内容。最重要的是,注释内的任何标记都被忽略;如果您希望除去 XML 文档的一块较大部分,只需用注释括住那个部分即可。(要恢复这个注释掉的部分,只需除去注释标记即可。)下面是包含注释的标记:

<!-- Here's a PI for Cocoon: -->
<?cocoon-process type="sql"?>
          
  • 处理指令:处理指令是为使用一段特殊代码而设计的标记。在上面的示例中,有一个用于 Cocoon 的处理指令(有时称为 PI),Cocoon 是来自 Apache 软件基金会(Apache Software Foundation)的 XML 处理框架。当 Cocoon 处理 XML 文档时,它会寻找以 cocoon-process 开头的处理指令,然后相应地处理 XML 文档。在该示例中,type="sql" 属性告诉 Cocoon:XML 文档包含一个 SQL 语句。

<!-- Here's an entity: -->
<!ENTITY dw "developerWorks">
          
  • 实体:上面的示例为文档定义了一个实体。无论 XML 处理器在何处找到字符串 &dw;,它都会用字符串 developerWorks 代替该实体。XML 规范还定义了五个您可以用来替代不同的特殊字符的实体。这些实体是:
    • &lt; 代表小于符号
    • &gt; 代表大于符号
    • &quot; 代表一个双引号
    • &apos; 代表一个单引号(或撇号)
    • &amp; 代表一个“与”符号。

XML 的能力来自它的灵活性,即您和我以及数百万其他人可以定义我们自己的标记来描述我们的数据。记得表示个人姓名和地址的样本 XML 文档吗?那个文档包括表示个人尊称的 <title> 元素,这是对元素名称非常合理的选择。如果您经营一家网上书店,您或许会创建一个表示书名的 <title> 元素。如果您经营一家网上抵押放款公司,您或许会创建表示一份财产名称的 <title> 元素。所有这些都是合理的选择,但它们都用相同的名称创建元素。如何分辨某个特定的 <title> 元素指的是人、书籍还是一份财产呢?可以使用名称空间

要使用名称空间,您要定义一个名称空间前缀,然后将它映射至一个特殊字符串。下面介绍如何定义我们这三个 <title> 元素的名称空间前缀:


<?xml version="1.0"?>
<customer_summary
  xmlns:addr="http://www.xyz.com/addresses/"
  xmlns:books="http://www.zyx.com/books/"
  xmlns:mortgage="http://www.yyz.com/title/"
>
... <addr:name><title>Mrs.</title> ... </addr:name> ...
... <books:title>Lord of the Rings</books:title> ...
... <mortgage:title>NC2948-388-1983</mortgage:title> ...
          

在该示例中,三个名称空间前缀是 addrbooksmortgage。请注意,为特定元素定义名称空间意味着该元素的所有子元素都属于同一名称空间。第一个 <title> 元素属于 addr 名称空间,因为其父元素 <addr:Name> 属于该名称空间。

最后要指出的是:名称空间定义中的字符串仅仅是字符串。对,这些字符串看似 URL,其实不是。您可以定义 xmlns:addr="mike",那也是有效的。名称空间唯一的重要性在于其唯一性;这就是为什么大多数名称空间定义看起来象 URL 的原因。XML 解析器不会到 http://www.zyx.com/books/ 去搜索 DTD 或模式,它只是把那个文本作为字符串使用。这有些令人困惑,但名称空间就是这样工作的。

 

XML 命名规则及最佳命名习惯

XML 命名规则 XML 元素必须遵循以下命名规则: 名称可以含字母、数字以及其他的字符名称不能以数字或者标点符号开始名称不能以字符 “xml”(或者 XML、Xml)开始名称不能包含空格...
  • tfhui928
  • tfhui928
  • 2013年09月24日 17:01
  • 1056

Android编码规范之命名规则

命名规则包名 包名 此包中包含 com.xx.应用名称缩写.activity 页面用到的Activity类 (activitie层级名用户界面层) com.xx.应用名称缩写.fra...
  • xiao198504
  • xiao198504
  • 2016年08月17日 16:10
  • 2225

XML 属性

XML elements can have attributes in the start tag, just like HTML.XML 元素可以像HTML那样在起始标签内书写属性。Attribut...
  • phqm
  • phqm
  • 2008年03月21日 15:07
  • 4412

XML文档规则

下面总结几点XML的简单文档规则   1.XML文档有且仅有一个根元素     2.XML的语法是严格区分大小写的     3.如果不需要子内容,那么该XML元素就是一个空元素,写成:  ...
  • ray8567548
  • ray8567548
  • 2013年07月26日 15:43
  • 920

XML之Well-Formed文档规则

由于课程原因,近日粗略学习XML,载以博客是为担心忘记,以供日后复习之用。    XML标准中明确规定了XML文件应当遵守的规则,大致上分成基本规则和DTD(Document Type Definit...
  • qq_34992930
  • qq_34992930
  • 2017年02月28日 23:17
  • 144

XML中属性的定义方式

根据一段时间XML的学习,发现没有什么规矩可以告诉我们什么时候该使用属性,而什么时候该使用子元素。     通过对比属性和子元素的区别,显而易见,子元素相对属性更有优势。 属性无法包含多重...
  • liusure09
  • liusure09
  • 2016年01月24日 17:59
  • 862

XML文件详解以及解析

一、xml基础详解: 1、概述:     xml:即可扩展标记语言,xml是互联网数据传输的重要工具,它可以跨越互联网任何的平台,不受编程语言和操作系统的限制,可以说它是一个拥有互联网最高...
  • Com_ma
  • Com_ma
  • 2017年06月15日 11:27
  • 1042

XML的DTD的规则的介绍

XML的主要的功能就是配置文件、数据传输、数据存储 配置文件:我们常用的框架Struts2 、Spring、Hibernate、Ibaits等一些Web框架都需要使用xml文件进行配置。 数据传输:W...
  • u011955252
  • u011955252
  • 2015年11月13日 14:13
  • 848

DTD规范XML文档

DTD是Document Type Definition (文档类型定义)的缩写。DTD指定XML文档必须遵守一系列规则。 DTD分为外部DTD和内部DTD两种: 1)使用内部DTD格式: ...
  • u014135961
  • u014135961
  • 2015年09月03日 19:07
  • 1426

Java中的类、方法、属性的命名规则

在面向对象编程中,对于类,对象,方法,变量等方面的命名是非常有技巧的。比如,大小写的区分,使用不同字母开头等等。但究其本,追其源,在为一个资源其名称的时候,应该本着描述性以及唯一性这两大特征来命名,才...
  • u010867294
  • u010867294
  • 2015年07月08日 11:06
  • 13019
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:XML的文档规则
举报原因:
原因补充:

(最多只允许输入30个字)