的SQL Server 2008允許我們定義一個類型化的XML列/變量來驗證對現有的XML架構集合XML:DECLARE @TypedXml XML(MyXmlSchemaCollection)
在SQL Server 2008中使用在運行時指定的XSD驗證XML?
然而,據我所看到的,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?
感謝Petru的全面解答。我懷疑CLR是要走的路,但只是想檢查我沒有忽略在本機SQL Server代碼中執行它的方式。 –