2012-01-25 61 views
2

我有以下簡單的XSD架構:在SQL Server的XSD驗證空XML

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <xsd:element name="MyUrl" type="xsd:anyURI"/> 
</xsd:schema>' 

我有SQL Server 2008 R2和我想驗證我的變量根據該模式。它可以工作,但變量x即使是空或空白也會被驗證,但空的xml對此模式無效。

爲什麼我得到了這些結果?

TSQL代碼:

CREATE XML SCHEMA COLLECTION dbo.xsdTest AS 
N'<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <xsd:element name="MyUrl" type="xsd:anyURI"/> 
</xsd:schema>' 
GO 

DECLARE @x XML(dbo.xsdTest) 
SET @x = ' ' --no error 

回答

2

默認情況下,XML data type接受XML片段作爲有效的XML。

XML數據可以包含頂部 級別的多個零個或多個元素。

您可以指定XML必須是像這樣的有效XML文檔。

declare @x xml(document dbo.xsdTest) 
set @x = '' -- error here