登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Gamebaby Rock Sun的博客

我只知道一件事情,就是我一无所知。

 
 
 

日志

 
 
关于我

曾经拥有的,不要忘记, 已经得到的,更要珍惜, 属于自己的,不要放弃, 已经失去的,留着回忆, 想要得到的,必须努力, 但最重要的,是好好爱惜自己!

4、XML架构集合  

2010-09-04 09:28:37|  分类: XML SQL Server |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

< xmlnamespace prefix ="st1" ns ="urn:schemas-microsoft-com:office:smarttags" />11.4.1  什么是XML架构集合

在一个特定的XML应用中,往往需要用到不止一个XML架构信息来定义多个XML数据的格式。如何管理好这些XML架构就是非常现实的问题。

通常这些XML架构都是可以分类管理的,以用于不同的应用目的。令人高兴的是SQL Server 2005针对这种情况,提供了XML架构集合对象来管理不同类的XML架构数据。

SQL Server 2005内部架构集合是一个类似于数据表的实体。因此可以创建、修改、删除XML架构集合。既管理XML架构集合。

下面将详细介绍如何实现对XML架构集合的管理。

11.4.2  创建XML架构集合

创建一个XML架构集合可以使用T-SQL语句。语法是

CREATE XML SCHEMA COLLECTION [ <relational_schema>. ]sql_identifier AS Expression

语法中relational_schema是一个可有可无的关系架构限定标识符。关于这个标识符的详细信息请参看本书前面的相关章节。sql_identifier要求一个合法的SQL Server标识符,用于表示新创建的架构集合的名称。Expression部分就需要一个比较完整的XML架构数据了。

下面看一个实际创建XML架构集合的例子。

CREATE XML SCHEMA COLLECTION MyXMLSchema

AS

'

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">

<xsd:element name="books">

<xsd:complexType>

<xsd:sequence>

<xsd:element name="book" type="xsd:string"/>

</xsd:sequence>

</xsd:complexType>

</xsd:element>

</xsd:schema>

'

11.4.3  修改XML架构集合

通常一个XML架构集合,在使用一段时间后都需要进行添加新的XML架构数据,以适应快速变化的商务需求。这就要求能够修改已创建的XML架构集合的数据。

具体的修改一个架构集合的语法如下所示:

ALTER XML SCHEMA COLLECTION [<relational_schema>.]sql_identifier ADD 'Schema Component'

语法中的元素要求与创建XML架构中的类似。需要注意的是此处sql_identifier所代表的XML架构集合是必须已存在的XML架构集合的名称。

下面的例子展示了如何向一个已存在的XML架构集合中添加一个新的XML架构数据。

ALTER XML SCHEMA COLLECTION MyXMLSchema

ADD

'

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">

<xsd:element name="Journals">

<xsd:complexType>

<xsd:sequence>

<xsd:element name="Journal" type="xsd:string" maxOccurs="100"/>

</xsd:sequence>

</xsd:complexType>

</xsd:element>

</xsd:schema>

'

到这里如何修改一个XML架构集合就介绍完了。这里需要特别注意的是,不像其他对象的T-SQL语句,比如修改表的语句那样,XML架构集合修改语句是不存在Delete、或子Alter语句的。这说明只能向已存在的XML架构集合中添加新的XML架构数据,而无法删除或修改其中任何一个XML架构数据。

11.4.4  删除XML架构集合

最后来看看如何删除一个已存在的XML架构集合。删除XML架构集合的语法如下:

DROP XML SCHEMA COLLECTION [ relational_schema. ]sql_identifier

语法中的元素含义已明确不再赘述。

下面的例子展示了如何删除一个XML架构集合。

DROP XML SCHEMA COLLECTION MyXMLSchema

11.4.5  类型化与非类型化XML

知道了如何定义XML架构,以及XML架构集合,那么类型化和非类型化XML就好理解了。

所谓的类型化XML数据,就是指在定义时绑定了某一已定义的XML架构集合的XML数据。比如类型化的XML变量、类型化的XML列、类型化的XML参数等。下面的例子详细的展示了如何使用类型化的XML数据。

--定义一个XML架构集合

Create XML Schema Collection MyXMLSchema

As

'

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">

<xsd:element name="books">

<xsd:complexType>

<xsd:sequence>

<xsd:element name="book" type="xsd:string"/>

</xsd:sequence>

</xsd:complexType>

</xsd:element>

</xsd:schema>

'

go

--定义一个绑定到架构MyXMLSchema架构集合的XML变量

Declare @MyXML AS XML(MyXMLSchema)

--赋予结构正确的XML数据

Set @MyXML =

'

<books>

<book>电话号码大全</book>

</books>

'

--赋予不是MyXMLSchema指定格式的XML数据,

--虽然XML数据是正确的,但因为不符合定义,此时SQL Server会报错

Set @MyXML =

'

<Works>

<Work>张三</Work>

</Works>

'

在上面的例子中XML类型在定义时后面跟了一个括号,括号中指定了要绑定到的XML架构的名字。这就是类型化XML数据的使用方法。可以继续使用这一方法去定义类型化的XML列以及类型化的XML参数等。此处不在一一举例,读者可以自己新建查询进行验证。

11.4.6  查看库中的XML架构集合以及架构集合的详细内容

SQL Server 2005中提供了可以查看XML架构集合的方法。下面的查询可以用来查看当前数据库中有多少个已定义的XML架构集合。

Select * from sys.xml_schema_collections

这个查询会返回当前库中所有XML架构集合在内的一个完整结果。其中包括系统预定义的XML架构集合。

如果要查看某个XML架构集合的详细定义,可以使用下面的系统函数。

SELECT xml_schema_namespace(N'',N'MyXMLType')

说明:此函数中第一个参数是XML架构集合所属的SQL Server架构的名称。没有指定时只需传递空字符串。第二参数就是想要查看的XML架构集合的名称。
  评论这张
 
阅读(1562)| 评论(2)

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018