[翻译]XML入门:第1级- 介绍XML

作者Rob Sheldon, 2014/03/26(第一次出版: 2012/09/20)

 

这个系列

 

  这篇文章是进入到该系列的一部分:XML的入门。

  自2003以来,XML一直是SQL标准的一部分,对于任何数据库管理员来说,它也是必不可少的,因为有很多动态管理视图都返回XML数据。现在的行业更是用文档标记定义的数据,对于数据库开发人员和数据库管理员来说,了解技术并知道使用XML是有意义的,这正变得比以往更重要。在这一系列文章中,Robert Sheldon展示他的才华使复杂变得简单。注:本系列文章可通过电子书获得。

  随着SQL Server 2000的发布,在SQL Server中首次提出对可扩展标记语言(XML)的支持。然而,与XML相关的特性仅限于重点为映射关系和XML数据的数据管理功能。例如,SQL Server 2000添加了XML子句,它允许您将关系查询结果返回为XML

  然而,直到添加了XML数据类型的SQL Server 2005发布时,对XML的支持才变得有趣。xml数据类型可以让你本地存储XML文档在列和配置类型变量。数据类型还支持一组方法,用于检索和修改XML文档中的特定组件。

  为了充分利用SQL Server支持的XML相关特性,你可能会发现对XML本身有一个基本的了解是很有用的。为此,XML系列的第一级阶梯解释了XML是什么,并描述构成XML文档的各种组件。

 

XML的概述

 

   类似于超文本标记语言(HTML),XML是一种标记语言,它使用标记来划定和描述与这些标记相关联的数据的性质。使XML可扩展的是它的自描述性质,即,你创建特定于XML文档中包含的数据值的标记。在HTML中,这些标签是预定义的。(XML的可扩展性在我们通过XML组件工作时会变得更清晰)。

 

  尽管XML具有可扩展性,但它仍然是一种标准语言,必须遵循万维网联盟(W3C)定义的一种特定的格式规则。由于这种标准化,不同于用于显示数据的HTML,这种语言被广泛地采纳用于传输和存储数据。XML使得在异构系统中轻松地共享数据成为可能,而不管硬件、操作系统或应用程序类型如何,XML的普遍采用意味着可以用很少的人工干预处理数据。同时, 你还可以控制如何描述数据,同时也控制数据是如何排列和显示的。

 

XML组成部分

 

  构成XML文档的主要组件和支配这些组件使用的规则通常非常简单,但为了通过SQL Server XML 解析器使XML文档能够正确处理,你必须严格遵守这些规则。

XML文档中主要包含两种类型的信息:要存储的数据和描述数据的标记。标签由一组角括号(<>)描述标签或与标记相关联的数据的描述性词或复合词(无空格)组成。正是由于这些标签的自描述性质,XML通常被认为是元语言。

 

  每个存储的离散数据在一个打开标记和一个结束标记中,如下面的例子所示:

<Person>John Doe</Person>

  在这种情况下,打开标记是<Person >,结束标记是</Person>。注意,前斜杠在标签后面的标记描述之前。前斜杠必须位于所有结束标记之前,但标签的语言必须与打开标记相同,在上面的示例中是Person。我可以选择一个名字,而不是Person,包括一个与Person无关的名字,但一个好的做法是总是提供标记名称,最好描述在打开和关闭标签中包含的数据。在这种情况下,标签是描述一个Person的名字,某普通的人,因此标签名<Person>

  同时,标记和封闭的数据代表一个元素。然而,一个元素并不总是包含数据。空元素可以有两种方式表达。第一种方法是指定打开和关闭标记,但不包含数据,如下面的示例中所示:

<Person></Person>

   表示空元素的另一种方法是只使用一组括号,但仍然包含前斜杠:

    <Person />

  同样,只有当元素不包含值时,才可以使用此方法。正如您稍后在XML系列的楼梯中看到的,一个模式可能需要一个没有值的元素。在这种情况下,可以使用缩短的格式来表示元素的两个标记。

  无论一个元素是否包含一个值,当使用这两个标记时,打开和关闭标记必须完全匹配,直到大写(除了结束标记中的前斜杠)。例如,下面的元素在SQLServer解析器中生成一个错误,因为两个标记之间的情况不同:

<person>John Doe</Person>

  打开标记中的描述性单词都是小写的;但是,结束标记中的描述性单词以大写字母开头。打开和关闭标记必须匹配为合适的或格式良好的XML。

你可以,无论如何,互相嵌入元素。在下面的示例中,我将<Person>元素中的两个实例嵌入到<People> 元素中:

<People>

<Person>John Doe</Person>

<Person>Jane Doe</Person>

</People>

  注意,每个<Person>元素本身都是完整的。它包括打开和关闭标签和它们所附的数据。嵌入在其他元素的元素称为子元素,或者,在某些情况下,子单元。在这种情况下,外部元素<People>是父元素。XML文档最高级别的父元素被认为是根元素。所有XML文档必须有一个且只有一个根元素。因此,上面例子中的<People>元素是两个<People>元素的父元素,它是XML文档的根元素。

  SQL Server还允许您将XML片段存储在XML列或变量中。片段是一段没有根元素的XML代码,如以下示例所示的两个元素:

<Person>John Doe</Person>

<Place>Seattle, WA</Place>

  元素必须仍然是格式良好的XML,也就是说,有包含数据的匹配标记,但它们不一定是XML文档。正如您稍后在XML系列的楼梯中看到的,您可以指定在XML列或变量中只允许XML文档,但现在只知道SQL Server区分XML文档和片段,可以存储两者。

  当你在其他元素中嵌入元素时,必须确保在结束父元素之前完成子元素。例如,在下面的示例中,我在<People>元素之前结束< Person>元素,这将导致SQLServer XML解析器产生错误:

<People><Person>John Doe</People></Person>

  无论多少个级别包含嵌入元素,你都必须确保你的子元素是完整的。在下面这个例子里,<FirstName>和<LastName> 元素嵌入在每个<Person>元素,并且<Person>元素嵌入在<People>元素中:

<People>

<Person>

<FirstName>John</FirstName>

<LastName>Doe</LastName>

</Person>

<Person>

<FirstName>Jane</FirstName>

<LastName>Doe</LastName>

</Person>

</People>

  在这种情况下,<Person>元素充当子元素和父元素。但是请注意,每个嵌入的元素,不管级别如何,完全属于父元素的打开和关闭标记。例如,<FirstName> 和<LastName> 元素的第一个实例完全属于<Person>元素的第一个实例中,和两个实例<<Person>元素完全属于<Person>的元素,这是文档的根元素。

  元素也可以具有与它们相关的属性。属性是一个可以分配值的属性。属性被定义为元素的打开标记的一部分。在下面的示例中,我将id属性添加到<<Person>元素的每个实例中:

<People>

<Person id="1234">

<FirstName>John</FirstName>

<LastName>Doe</LastName>

</Person>

<Person id="5678">

<FirstName>Jane</FirstName>

<LastName>Doe</LastName>

</Person>

</People>

  如示例所示,属性包含属性名称(在本例中是id),后面是等号和属性值,包含在双引号中。因此,<<Person>元素第一个实例的id属性的值为1234,而该元素的第二个实例的id属性值为5678。

  在许多XML文档中包含的另一个组件是声明,它至少指定文档符合的XML标准的版本。到目前为止,只有两个版本:1.0和1.1。如果使用XML 1.0,声明不是必要的;然而,XML 1.1需要一个声明。出于这个原因,您应该知道如何在XML文档中包含声明。

  如果你包含一个声明,则必须将其放置在文档的开头,开始声明<?打开标签,并用它结束吗?>结束标记。此外,还必须包含XML关键字(小写)和版本属性(也小写)。另一个通常包含的属性是可选的,即编码,它指定用于XML文档的字符编码。在下面的例子中,我有一个声明,指定版本1.0和UTF-8编码,这意味着数据存储为一个8位Unicode字符序列:

<?xml version="1.0" encoding="UTF-8"?>

<People>

<Person id="1234">

<FirstName>John</FirstName>

<LastName>Doe</LastName>

</Person>

<Person id="5678">

<FirstName>Jane</FirstName>

<LastName>Doe</LastName>

</Person>

</People>

  您还可以在XML文件添加注释。这样做,只需在注释前面加上<!-- 标签并结束时用它--> 标记。,它正如我在下面的例子中所做的::

<?xml version="1.0" encoding="UTF-8"?>

<!-- A list of current clients -->

<People>

<Person id="1234">

<FirstName>John</FirstName>

<LastName>Doe</LastName>

</Person>

<Person id="5678">

<FirstName>Jane</FirstName>

<LastName>Doe</LastName>

</Person>

</People>

  正如您所看到的,我已经添加了注释一个当前客户列表,我已经将它们包含在注释标签中了。SQL Server XML分析器将忽略任何的标签,所以你可以使用评论功能不仅提供对XML文档的数据信息,而且还保留部分你想抓住但是你不想作为文档的一部分进行处理的XML代码

  使用XML时的另一个考虑是,某些字符在元素值中出现时无法解析。例如,你不能有一个符号(&)在一个元素的值,正如我在下面的例子中做<favoritebook > 子元素时:

<?xml version="1.0" encoding="UTF-8"?>

<!-- A list of current clients -->

<People>

<Person id="1234">

<FirstName>John</FirstName>

<LastName>Doe</LastName>

</Person>

<Person id="5678">

<FirstName>Jane</FirstName>

<LastName>Doe</LastName>

<FavoriteBook>Crime & Punishment</FavoriteBook>

</Person>

</People>

  如果我试图将分配XML文档的XML列或变量,< favoritebook >子元素会导致解析器生成错误因为 Crime & Punishment的值包括符号。您必须用一个实体引用替换这种类型的字符,该实体引用告诉解析器保留它原来打算的字符。实体引用从一个符号开始和结束于分号在包括多个字符代码之间表示原始值。为一个符号,实体引用应为&;,我在下面的例子中使用:

<?xml version="1.0" encoding="UTF-8"?>

<!-- A list of current clients -->

<People>

<Person id="1234">

<FirstName>John</FirstName>

<LastName>Doe</LastName>

</Person>

<Person id="5678">

<FirstName>Jane</FirstName>

<LastName>Doe</LastName>

<FavoriteBook>Crime & Punishment</FavoriteBook>

</Person>

</People>

  注意,我用&取代&;实体引用。现在XML解析器将处理< favoritebook >元素没有问题。但需要注意的是,符号不是唯一的字符,将产生一个错误。XML标准标识了应该用实体引用替换的五个字符,正如我在上面的示例中所做的那样:

  • Less than (<): 替换 <
  • Greater than (>): 替换 >
  • Ampersand (&): 替换 &
  • Apostrophe ('): 替换 '
  • Quotation mark ("):替换 "

  该示例提出的另一个问题是,子元素不必相同从一个父实例到下一个父实例。你可以看到,在<Person>元素的第一个实例只包含<FirstName> 和 <LastName> 子元素,但<Person>元第二实例包含<FirstName>和<LastName> 子元素,以及< favoritebook >元素。只要您的子元素格式良好,就可以包含划定和定义数据所需的任何元素。

 

总结

 

  在这一层中,我们研究了构成XML文档的主要组件。元素作为所有XML文档的基本构建块,每个元素都由一个打开标记和一个结束标记来描述,并且数据值本身被包含在这两个标记之间。元素可以相互嵌入,但一个元素——根——必须充当XML文档中所有其他元素的父元素。元素也可以包含属性,这些属性被定义为元素的打开标记的一部分。

  与知道如何组合XML文档一样方便,这个级别的目的并不是训练您如何创建这些类型的文档,而是提供对XML的介绍,这样您就可以更有效地在SQL Server中使用XML。在下一个层次,我们将研究如何在SQL Server中实现XML数据类型,以及如何将其分配给列和变量以存储XML文档和XML片段。

 

链接:http://www.sqlservercentral.com/articles/Stairway+Series/Introduction+to+XML/92780/

 

转载于:https://www.cnblogs.com/caiduncheng/p/7565528.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
XML Contents Translator 是专门开发的软件工具,旨在帮助人们以最小的努力打开 XML 文档并翻译其内容。XML 文件会经常用于一些应用程序的语言文件,而我们通过使用 XML Contents Translator 则可以很快速的利用软件中的谷歌在线翻译功能完成语言翻译XML 文件翻译工具 Xml Content Translator 中文版 XML 文件翻译工具 Xml Content Translator 中文版 XML Contents Translator 特色: 便携式应用程序的便利性 由于该产品是便携式的,因此不需要安装过程。这意味着,未经您的许可,它不会像安装程序通常那样将任何新项目添加到Windows注册表和硬盘驱动器。删除磁盘后,将不会有任何残留物留在磁盘上。 另一个值得注意的方面是,您可以轻松地将程序文件复制到USB闪存驱动器,因此,可以随身携带XML Contents Translator,并在您接触的任何PC上运行它。 使用方法和可用选项 此应用程序使您可以使用内置文件浏览器以及“拖放”功能来打开项目,这些功能可增强易用性。它使您可以查看项目包含的每个标签以及使用的语言。 您可以从下拉菜单中轻松选择自己喜欢的语言,并在谷歌翻译的帮助下让程序翻译短语和表达方式。也可以手动输入翻译,转到下一个空白行,然后将结果保存到自定义位置。 表现与结论 CPU 和内存使用量微不足道,这意味着计算机的性能完全不会受到影响,您可以轻松地将其与其他实用程序一起运行而不会遇到任何问题。响应时间很好,该界面适合所有类型的用户,并且在我们的测试中未记录任何错误,崩溃或错误。 总而言之,XML Contents Translator 被证明是用于翻译 XML 内容的非常简单但有用的软件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值