例如,为创建名为CustomerSchema的架构,可使用以下命令:
Create xml schema collection CustomerSchema as除了使用XML架构集合实现类型化XML列之外,还可以将其用于类型化XML变量和参数。
N'<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:company="http://www.wrox.com/books"
targetNamespace="http://www.wrox.com/books"
elementFormDefault="qualified">
<xs:element name="customer">
<xs:complexType>
<xs:all>
<xs:element name="name" type="xs:string" />
</xs:all>
<xs:attribute name="id" type="xs:int" />
</xs:complexType>
</xs:element>
</xs:schema>'
一旦创建CustomerSchema,那么就可以轻松的将其与Customer表的XmlData列关联起来,语法如下:
CREATE TABLE Customer(ID int primary key,当将值插入Customer表中,XmlData列中的XML数据将根据CustomerSchema进行验证:
XmlData XML(CustomerSchema))
Insert into Customer values(1, '<customer id=”1”在将架构与XML列关联时,开发人员可以使用DOCUMENT或者CONTENT标志来设置是否能够在类型化列中存储XML树或者片段。对于DOCUMENT而言,每个XML实例都会根据用来对其进行验证和类型化的命名控件,设置实例中优异元素的目标命名空间。另一方面,对于CONTENT而言,每个优异元素都能够在架构集合中设置任一目标命名空间。在生成实例过程中,将根据目标命名空间验证XML实例。例如,开发人员可执行以下包括无效命名空间声明的SQL语句:
xmlns="http://www.wrox.com/books"><name>Joe</name></customer>')
GO
Insert into Customer values(2, '<customer id="2"
xmlns="http://www.wrox.com/books"><name>Fred</name></customer>')
Insert into Customer values(3, '<customer id="3"由于Insert语句中包括无效的命名空间,所以应该看到类似如下的错误消息:
xmlns="http://invalidnamespace/books"><name>InvalidData</name></customer>')
GO
Msg 6913, Level 16, State 1, Line 1
XML Validation: Declaration not found for element
'http://invalidnamespace/books:customer'. Location: /*:customer[1]