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?