摘要:請注意,正斜杠位于結束標記中的標記描述之前。正斜杠必須在所有結束標簽之前,但標簽的語言必須與開頭標簽相同,上面的示例是。無論元素是否包含值,只要使用兩個標簽,開始和關閉標簽必須完全匹配,精確到大小寫除了結束標簽中的正斜杠。
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.
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/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
閱讀 1899·2019-08-30 12:53
閱讀 3489·2019-08-28 18:07
閱讀 2976·2019-08-27 10:55
閱讀 2958·2019-08-26 10:12
閱讀 3584·2019-08-23 18:21
閱讀 1338·2019-08-23 14:10
閱讀 1469·2019-08-23 13:04