tigh 发表于 2016-11-11 10:06:32

XML与SQL SERVER2005 (一)

------------------------------------------------------------------------
-- Author : HappyFlyStone
-- Date : 2009-07-30
-- Version: Microsoft SQL Server 2005 - 9.00.2047.00 (Intel X86)
-- Apr 14 2006 01:12:25
-- Copyright (c) 1988-2005 Microsoft Corporation
-- Enterprise Edition on Windows NT 5.2 (Build 3790: Service Pack 2)
--
--本文探讨 SQL Server 2005 中内置的 XML 支持.
-- 第一篇旨在对XML进行一个介绍。
------------------------------------------------------------------------



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

简单的来区别一下HTML 和XML:



l HTML 被设计用来显示数据。
l XML 被设计用来传输和存储数据。



什么是 XML?




[*]
XML 指可扩展标记语言(EXtensible Markup Language)
[*]
XML 是一种标记语言,很类似 HTML
[*]
XML 的设计宗旨是传输数据,而非显示数据
[*]
XML 标签没有被预定义。您需要自行定义标签。
[*]
XML 被设计为具有自我描述性。
[*]
XML 是 W3C 的推荐标准



应该说XML仅是类似于HTML ,因为设计的目的不一样,那么它也不是对HTML的取代。对于XML我们关心的是数据。因为它是结构化、存储及传输数据的,所以本身没有什么行为的。如果说XML 是为 Web 设计的,那么现XML的”能耐”不亚于当时的基石HTML.


XML的描述术语

标记、元素、属性




l 标记 是以<></>包括起来的文本,分为开始标记(<>)、结束标记(</>)。
l 元素 是位于开始和结束标记之间的文本。又分为根元素和子元素,一般最外面的标记标记的方便,子元素就是除了根元素外的所有元素了。
l 属性 是在开始标记中标记的名称 –值文本。




搞个例子来说明一下撤。

<address>
<name> flystone </name>
<street> 1401 Main Street </street>
<city state="NC">Anytown</city>
<postal-code> 210000 </postal-code>
</address>
所有<> 和</> 包括括号内的文本就是标识了。
<adderss>
-> 根元素定义开始,每一个XML必须包含根元素。


<name> flystone </name>
<street> 1401 Main Street </street>
<city state="NC">Anytown</city>
<postal-code> 210000 </postal-code>
->全是子元素
state="NC"
-> 这就是属性啦
</address>
-> 根元素定义结束
最后说一下XML的声明:
<?xml version="1.0" encoding="ISO-8859-1"?>
它定义了XML文档的版本及使用的编码。

注明:关于XML的书写格式、如何正确嵌套、属性一、实体及命名规则和标签的语法可到相应的网站自己看看。


XML的验证


使用DTD(文档类型定义)。那么遵守DTD的“形式良好”XML文档才是合法。简单的看一个定义:
<!DOCTYPE address [
<!ELEMENT address (name, street, city, postal-code)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT street (#PCDATA)>
<!ELEMENT city (#PCDATA)>
<!ELEMENT postal-code (#PCDATA)>

<!ATTLIST city state (NC|NM) "NC" >
]>

接着可以在XML中声明是对外部 DTD 文件的引用:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE address SYSTEM "ex.dtd">

<address>
<name> flystone </name>
<street> 1401 Main Street </street>
<city state="NC">Anytown</city>
<postal-code> 210000 </postal-code>
</address>
或是这样:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE address [
<!ELEMENT address (name, street, city, postal-code)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT street (#PCDATA)>
<!ELEMENT city (#PCDATA)>
<!ELEMENT postal-code (#PCDATA)>

<!ATTLIST city state (NC|NM) "NC" >
]>
<address>
<name> flystone </name>
<street> 1401 Main Street </street>
<city state="NC">Anytown</city>
<postal-code> 210000 </postal-code>
</address>

当然 W3C 支持一种基于 XML 的 DTD 代替者,它名为 XML Schema。




下面整理XPath

页: [1]
查看完整版本: XML与SQL SERVER2005 (一)