2014-11-03 69 views
3

我有以下XML:驗證XML在SQL Server

<?xml version="1.0" encoding="windows-1252"?> 
<!--MBS Data - Created 03/06/2014 11:40:13--> 
<MBS_XML> 
    <Data> 
    <ItemNum>3</ItemNum> 
    <SubItemNum>1</SubItemNum> 
    </Data> 
    <Data> 
    <ItemNum>4</ItemNum> 
    <SubItemNum>2</SubItemNum> 
    </Data> 
    <Data> 
    <ItemNum>20</ItemNum> 
    <SubItemNum>3</SubItemNum> 
    </Data> 
    <Data> 
    <ItemNum>23</ItemNum> 
    <SubItemNum>1</SubItemNum> 
    </Data> 
</MBS_XML> 

我使用CMD爲其生成的XSD並在SQL Server中創建架構驗證:

CREATE XML SCHEMA COLLECTION dbo.MBS_IMPORT_SCHEMA 
AS' 
    <xs:schema id="MBS_XML" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> 
    <xs:element name="MBS_XML" msdata:IsDataSet="true" msdata:Locale="en-US"> 
    <xs:complexType> 
    <xs:choice minOccurs="0" maxOccurs="unbounded"> 
    <xs:element name="Data"> 
    <xs:complexType> 
    <xs:sequence> 
    <xs:element name="ItemNum" type="xs:string" minOccurs="0" /> 
    <xs:element name="SubItemNum" type="xs:string" minOccurs="0" /> 
    </xs:sequence> 
    </xs:complexType> 
    </xs:element> 
    </xs:choice> 
    </xs:complexType> 
    </xs:element> 
    </xs:schema> 
    '; 

但是,當我驗證xml對模式我有以下錯誤:我有以下錯誤:

XML Validation: Declaration not found for element 'MBS_XML'. Location: /*:MBS_XML[1] 

我在這裏看到類似的東西,但我試過並沒有解決我的問題。有人可以幫忙嗎?謝謝。

回答

2

似乎在這裏工作很好。我正在使用SQL Server 2012.

執行以下操作將根據dbo.MBS_IMPORT_SCHEMA驗證您的XML。確保在XML Schema Collection創建和XML驗證之間有GO分隔符

CREATE XML SCHEMA COLLECTION dbo.MBS_IMPORT_SCHEMA 
AS' 
    <xs:schema id="MBS_XML" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> 
    <xs:element name="MBS_XML" msdata:IsDataSet="true" msdata:Locale="en-US"> 
    <xs:complexType> 
    <xs:choice minOccurs="0" maxOccurs="unbounded"> 
    <xs:element name="Data"> 
    <xs:complexType> 
    <xs:sequence> 
    <xs:element name="ItemNum" type="xs:string" minOccurs="0" /> 
    <xs:element name="SubItemNum" type="xs:string" minOccurs="0" /> 
    </xs:sequence> 
    </xs:complexType> 
    </xs:element> 
    </xs:choice> 
    </xs:complexType> 
    </xs:element> 
    </xs:schema> 
    '; 

GO 

DECLARE @x XML(dbo.MBS_IMPORT_SCHEMA) 
SELECT @x = '<?xml version="1.0" encoding="windows-1252"?> 
<!--MBS Data - Created 03/06/2014 11:40:13--> 
<MBS_XML> 
    <Data> 
    <ItemNum>3</ItemNum> 
    <SubItemNum>1</SubItemNum> 
    </Data> 
    <Data> 
    <ItemNum>4</ItemNum> 
    <SubItemNum>2</SubItemNum> 
    </Data> 
    <Data> 
    <ItemNum>20</ItemNum> 
    <SubItemNum>3</SubItemNum> 
    </Data> 
    <Data> 
    <ItemNum>23</ItemNum> 
    <SubItemNum>1</SubItemNum> 
    </Data> 
</MBS_XML>' 
+2

這很快。 你說得對。我驗證了錯誤的模式名稱! 非常感謝您爲我驗證它。 – user1564533 2014-11-03 22:16:13