摘要:请注意,正斜杠位于结束标记中的标记描述之前。正斜杠必须在所有结束标签之前,但标签的语言必须与开头标签相同,上面的示例是。无论元素是否包含值,只要使用两个标签,开始和关闭标签必须完全匹配,精确到大小写除了结束标签中的正斜杠。
By Rob Sheldon, 2014/03/26 (首次发表于: 2012/09/20)
关于系列本文属于进阶系列:XML进阶
自2003年以来,XML一直是SQL标准的一部分,许多动态管理视图也返回XML数据,所以,对于每一个数据库管理员而言,同样是至关重要的。现在,这个行业更多地用于由文档标记定义的数据,数据库开发人员和数据库管理员比以往任何时候都更了解XML技术和使用它的方式。 在这一系列文章中,罗伯特·谢尔顿(Robert Sheldon)将尽力把复杂的东西简单化。 注意:这一系列的文章已经可作为电子书获取。
可扩展标记语言(XML)首先在SQL Server的SQL Server 2000发行版中提供支持。然而,与XML相关的功能仅限于专注于映射关系数据和XML数据的数据管理功能。例如,SQL Server 2000中添加了FOR 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文档的主要组件和支配这些组件使用的规则通常非常简单,但为了使XML文档能够被SQL Server XML解析器正确处理,你必须严格遵守一些规则。
XML文档中主要包含两种类型的信息:要存储的数据和描述数据的标签。 标签由一组尖括号(<>)组成,它们包含描述与标签相关联的数据的描述性词或复合词(无空格)。 正是由于这些标签的自描述性质,XML通常被认为是元语言。
每个离散的存储数据片段都被封装在开始标签和结束标签中,如下例所示:
John Doe
在这种情况下,开始标签是
同样的,标签和封闭的数据代表一个单一的元素。 但是,元素并不总是包含数据。 一个空的元素可以以两种方式之一呈现。 第一个是通过指定打开和关闭标签,但不包括数据,如下例所示:
表示一个空白元素的另一种方法是只使用一组括号,但仍包括正斜杠:
再者,只有当元素不包含值时,才能使用这个方法。 以后你在XML进阶系列中可能看到模式需要一个没有值的元素。 在这种情况下,可以使用缩写格式来表示元素的两个标签。
无论元素是否包含值,只要使用两个标签,开始和关闭标签必须完全匹配,精确到大小写(除了结束标签中的正斜杠)。 例如,以下元素在SQL Server XML解析器中生成错误,因为两个标签不能匹配:
John Doe Person>
开始标签中的描述性文字都是小写的; 然而,结束标签中的描述性词应以大写字母开头。 开始和结束标签必须匹配,以被认为是适当的或者格式良好的XML。
但是你可以将元素嵌入到彼此中。 在以下示例中,我将
John Doe Jane Doe
请注意,每个
SQL Server还允许将XML片段存储在XML列或变量中。 片段是没有根元素的XML代码块,例如以下示例中显示的两个元素:
John Doe Seattle, WA
元素必须仍然是格式良好的XML,也就是具有包含数据的匹配标签,但它们不一定是XML文档。 像以后你将在XML进阶系列中看到的那样,你可以指定只允许在XML列或变量中使用XML文档,但现在只要知道SQL Server可以区分和存储XML文档和片段即可。
在其他元素中嵌入元素时,必须确保子元素在完成父元素之前已经完成。 例如,在以下示例中,我在
John Doe
你必须确保无论多少级别包含嵌入元素,你的子元素都是完整的。 在下面的示例中,
John Doe Jane Doe
在这种情况下,
元素也可以具有与它们相关联的属性。 属性是可以赋值的属性。 该属性被定义为元素的开始标签的一部分。 在以下示例中,我已经将id属性添加到
John Doe Jane Doe
如示例所示,属性由属性名称(在这种情况下为id),后跟等号,属性值由双引号括起来。因此,
许多XML文档中包含的另一个组件是声明,它至少指定了文档符合的XML标准的版本。到目前为止,只有两个版本:1.0和1.1。如果使用XML 1.0,声明是不必要的;但是XML 1.1需要声明。因此,你应该知道如何在XML文档中包含声明。
如果你包含声明,则必须将其放在文档的开头,用<?打开标签,并使用?>关闭标签结束。另外,你必须包含xml关键字(小写)和版本属性(也是小写)。通常包括的另一个属性(尽管是可选的)是编码,它指定用于XML文档的字符编码。在下面的示例中,我包括一个声明,它指定版本1.0和UTF-8的编码,这意味着数据被存储为8位Unicode字符序列:
John Doe Jane Doe
您还可以向XML文档添加注释。 要做到这一点,只需在<! - 标签之前注释,并将其结束于 - >标签,就像我在下面的例子中所做的那样:
John Doe Jane Doe
正如你所看到的那样,我已经添加了评论当前客户端的列表,附加在注释标签中。 SQL Server XML解析器将忽略标签内的任何内容,因此你不仅可以使用注释功能提供有关XML文档及其数据的信息,还可以挂起保留不想作为文档进行处理的XML代码部分。
另一个使用XML时要考虑的是,当元素值出现时,某些字符将无法解析。 例如,您不能在元素的值中包含&符(&),就像我在以下示例中的
John Doe Jane Doe Crime & Punishment
如果我尝试将此XML文档分配给XML列或变量,则
John Doe Jane Doe Crime & Punishment
请注意,我已经用了&amp;实体参考。现在XML解析器处理
小于(<):替换为&lt;
大于(>):替换为&gt;
和号(&):替换&amp;
撇号("):替换为"
引号(“):替换为”
该示例提出的另一个问题是子元素不一定要从一个父实例到另一个父实例相同。你可以看到,
在这个级别,我们已经看到组成一个XML文档需要的主要组件。 元素作为所有XML文档的基本构建块,每个元素由开始标签和结束标签划定,数据值本身被包含在这两个标签之间。 元素可以彼此嵌入,但是一个元素 - 根 - 必须作为XML文档中所有其他元素的父元素。 元素还可以包括被定义为元素的开始标签的一部分的属性。
我们已经尽可能方便地了解了如何组织一个XML文档,但本课程的目的并不是培养如何创建这些类型的文档,而是提供XML的介绍以便大家能更有效地在SQL Server中使用XML工作 。 在下一节,我们将介绍如何在SQL Server中实现XML数据类型,以及如何将其分配给列和变量以便存储XML文档和XML片段。
原文
Stairway to XML: Level 1 - Introduction to XMLBy Rob Sheldon, 2014/03/26 (first published: 2012/09/20)
The SeriesThis article is part of the Stairway Series: Stairway to >XML
XML has been part of the SQL Standard since 2003, and it is also essential for any DBA because so many of the dynamic management views return XML data. Now that the industry is more used to data defined by document markup, it is becoming more important than ever for Database Developers and DBAs to understand the technology and to know where it makes sense to use XML. In this series of articles, Robert Sheldon flexes his talent to make the complicated seem simple. Note: This series of articles is now available as an eBook.
Support for the eXtensible Markup Language (XML) was first introduced in SQL Server with the release of SQL Server 2000. However, XML-related features were limited to data management capabilities that focused on mapping relational and XML data. For example, SQL Server 2000 added the FOR XML clause, which lets you return relational query results as XML.
However, it wasn’t until the release of SQL Server 2005—when the XML data type was added—that support for XML got interesting. The XML data type lets you natively store XML documents in columns and variables configured with that type. The data type also supports a set of methods you can use to retrieve and modify specific components within the XML document.
To take full advantage of the XML-related features supported in SQL Server, you might find it useful to have a fundamental understanding of XML itself. To that end, this first Level of the Stairway to XML series explains what XML is and describes the various components that make up an XML document.
An Overview of XMLSimilar to the HyperText Markup Language (HTML), XML is a markup language that uses tags to delineate and describe the nature of the data associated with those tags. What makes XML extensible is its self-describing nature, that is, you create tags that are specific to the data values contained in the XML document. In HTML, those tags are pre-defined. (XML’s extensible nature will become clearer as we work through the XML components.)
Despite its extensibility, XML is still a standardized language that must conform to a specific set of formatting rules, as defined by the World Wide Web Consortium (W3C). Because of this standardization, the language has been widely adopted in order to transport and store data, unlike HTML, which is used to display data. XML makes it possible to easily share data among heterogeneous systems, regardless of hardware, operating system, or application type, and XML’s universal adoption means that data can be processed with little human intervention. At the same time, you can control how the data is described, while also controlling how the data is ordered and displayed.
XML ComponentsThe primary components that make up an XML document—and the rules that govern the use of >those components—are generally very straightforward, but you must adhere strictly to these rules in order for an XML document to be properly processed by the SQL Server XML parser.
There are primarily two types of information included in an XML document: the data to be stored and the tags that describe the data. A tag is made up of a set of angle brackets (< >) that enclose a descriptive word or compound word (no spaces) that describes the data associated with the tag. It’s because of the self-describing nature of these tags that XML is often considered a meta-language.
Each discrete piece of stored data is enclosed in an opening tag and a closing tag, as shown in the following example:
John Doe
In this case, the opening tag is
Together, the tags and enclosed data represent a single element. However, an element does not always have to contain data. An empty element can be rendered in one of two ways. The first is by specifying the opening and closing tags, but including no data, as I do in the following example:
Another way to represent an empty element is use only one set of brackets, but still include the forward slash:
Again, this method can be used only when an element contains no value. As you’ll see later in the Stairway to XML series, a schema might require an element for which there is no value. In that case, you can use the shortened format to represent the both tags of the element.
Whether or not an element contains a value, whenever both tags are used, the opening and closing tags must match exactly, down to the capitalization (except for the forward slash in the closing tag). For instance, the following element generates an error in the SQL Server XML parser because the case is different between the two tags:
John Doe
The descriptive word in the opening tag is all lowercase; however, the descriptive word in the closing tag begins with a capital letter. The opening and closing tags must match to be considered proper, or well formed, XML.
You can, however, embed elements within each other. In the following example, I embed two instances of the
John Doe Jane Doe
Notice that each
SQL Server also permits you to store XML fragments in an XML column or variable. A fragment is a chunk of XML code without a root element, such as the two elements shown in the following example:
John Doe Seattle, WA
The elements must still be well formed XML, that is, have matching tags that enclose the data, but they don’t have to be an XML document. As you’ll see later in the Stairway to XML series, you can specify that only XML documents be permitted in an XML column or variable, but for now just know that SQL Server distinguishes between XML documents and fragments and can store both.
When you embed elements within other elements, you must ensure that the child elements are complete before you end the parent element. For instance, in the following example, I end the
John Doe
You must ensure that your child elements are complete no matter how many levels contain embedded elements. In this following example, the
John Doe Jane Doe
In this case, the
Elements can also have attributes associated with them. An attribute is a property to which you can assign a value. The attribute is defined as part of the element’s opening tag. In the following example, I’ve added the id attribute to each instance of the
John Doe Jane Doe
As the example demonstrates, an attribute consists of the attribute name (in this case, id), followed by an equal sign and the attribute value, enclosed in double quotes. So the id attribute for the first instance of the
Another component contained in many XML documents is the declaration, which at a minimum specifies the version of the XML standard that the document conforms to. To date, there are only two versions: 1.0 and 1.1. If using XML 1.0, the declaration is not necessary; however, XML 1.1 requires one. For that reason, you should be aware of how to include a declaration in your XML document.
If you include a declaration, you must place it at the beginning of the document, start the declaration with the opening tag, and end it with the ?> closing tag. In addition, you must include the xml keyword (lowercase) and the version attribute (also lowercase). Another attribute commonly included, although optional, is encoding, which specifies the character encoding used for the XML document. In the following example, I include a declaration that specifies version
1.0 and an encoding of UTF-8, which means the data is stored as a sequence of 8-bit Unicode characters:
John Doe Jane Doe
You can also add comments to your XML documents. To do so, simply precede the comment with the -- tag and end it with the --> tag, as I’ve done in the following example:
John Doe Jane Doe
As you can see, I’ve added the comment A list of current clients, which I’ve enclosed in the comment tags. The SQL Server XML parser will ignore anything within the tags, so you can use the commenting feature not only to provide information about the XML document and its data, but also to preserve parts of the XML code that you want to hang on to but you don’t want to have processed as part of the document.
Another consideration when working with XML is that certain characters cannot be parsed when they appear in element values. For example, you cannot include an ampersand (&) in an element’s value, as I’ve done in the
John Doe Jane Doe Crime & Punishment
If I try to assign this XML document to an XML column or variable, the
John Doe Jane Doe Crime & Punishment
Notice that I’ve replaced the ampersand with the & entity reference. Now the XML parser will handle the
Less than (<): replace with <
Greater than (>): replace with >
Ampersand (&): replace with &
Apostrophe ("): replace with "
Quotation mark ("): replace with "
Another issue that the example raises is the fact that the child elements do not have to be the same from one parent instance to the next. As you can see, the first instance of the
In this Level, we’ve looked at the primary components that make up an XML document. Elements serve as the basic building blocks for all XML documents, with each element being delineated by an opening tag and a closing tag and the data value itself being enclosed between those two tags. Elements can be embedded within each other, but one element—the root—must act as the parent to all other elements in an XML document. An element can also include attributes, which are defined as part of an element’s opening tag.
As handy as it might be to know how to put together an XML document, the purpose of this Level has not been to train you in how to create these types of documents, but rather to provide an introduction to XML so you can more effectively work with XML in SQL Server. In the next Level, we’ll look at how the XML data type is implemented in SQL Server and how it can be assigned to columns and variables in order to store both XML documents and XML fragments.
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/110373.html
摘要:简介原文链接简称是一种轻量级,解释型的编程语言,其函数是一等公民。标准的目标是让任何一种程序设计语言能操控使用任何一种标记语言编写出的任何一份文档。核心规定了如何映射基于的文档结构,以便简化对文档的任意部分的访问和操作。 JavaScript 简介 原文链接 JavaScript ( 简称:JS ) 是一种 轻量级,解释型 的编程语言,其函数是一等公民。众所周知,它是用于网页开发的脚...
摘要:精致从细节做起。标准会在每年的月发布一次,作为当年的正式版本,便是年发布的正式版本。支持情况各大浏览器对的支持情况浏览器支持情况对的支持情况支持情况。在浏览器中基于实现的已经成为的重要组成部分。 精致从细节做起。前端的工作也有一段时间了,大大小小的前端框架都有接触过,越是深入学习越是感觉之前的学习过于粗糙,基础不够扎实,于是准备近期把JavaScript的基础知识点梳理一下,查缺补漏,...
摘要:用来作为静态资源服务浏览器缓存跨域防盗链等。非服务器动态运行生成的文件。防盗链配置配置实例这里只允许头为的地址和搜索过来的,可以便于优化 Nginx用来作为静态资源web服务;CDN、浏览器缓存、跨域、防盗链等。 非服务器动态运行生成的文件。 类型 种类 浏览器端渲染 HTML、CSS、JS 图片 JPG、GIF、JPEG、PNG 视频 FLV、MPEG 文件 T...
摘要:让应用程序拥有异步读取存储在用户计算机上文件或原始数据缓冲区的能力,使用或对象指定要读取的文件或数据。对象用来表示通用的固定长度的原始二进制数据缓冲区。事实上,没有名为的全局对象,也没有一个名为的构造函数。 Ajax 即 Asynchronous Javascript And XML (异步 JavaScript 和 XML),是指一种创建交互式网页应用的网页开发技术。在无需重新加载整...
阅读 3432·2021-11-22 09:34
阅读 1898·2019-08-30 12:53
阅读 3488·2019-08-28 18:07
阅读 2975·2019-08-27 10:55
阅读 2957·2019-08-26 10:12
阅读 3583·2019-08-23 18:21
阅读 1336·2019-08-23 14:10
阅读 1468·2019-08-23 13:04