4、XML架构集合

来源:互联网 发布:苹果手机赚钱软件大全 编辑:程序博客网 时间:2024/04/29 16:29

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架构集合的名称。
原创粉丝点击