SQL Server 2008 允许我们通过定义一个类型化的 XML 列/变量来针对现有的 XML 模式集合验证 XML:DECLARE @TypedXml XML(MyXmlSchemaCollection)
但是,据我所知,在我们定义列/变量时必须知道 XML 模式集合。
有没有办法使用在运行时指定的 XML 模式来验证 XML ?
例如:
DECLARE @Xml XML
SET @Xml =
N'<person>
<firstname>Ming</firstname>
<lastname>The Merciless</lastname>
</person>'
DECLARE @Xsd XML
SET @Xsd =
N'<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="person">
<xs:complexType>
<xs:sequence>
<xs:element name="firstname" type="xs:string"/>
<xs:element name="lastname" type="xs:string"/>
<xs:element name="dateofbirth" type="xs:date"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>'
DECLARE @Valid BIT
SET @Valid = (SELECT dbo.f_ValidateXmlAgainstXsd(@Xml, @Xsd)) -- With a user-defined function?
EXEC @Valid = s_ValidateXmlAgainstXsd @Xml, @Xsd -- With a stored procedure?