SQL Server中使用XSD验证XML数据

SQL Server中,如果表中包含XML数据类型的列,通常需要验证这些XML数据是否符合特定的XSD(XML SchemaDefinition)文件。通常,这需要编写.NET代码或创建Windows应用程序来实现。然而,本文将介绍一种在SQL Server内部管理所有步骤的简便方法,无需编写复杂的.NET代码或创建应用程序。

假设有一个SQL表,其中包含一个XML数据类型的列。目标是验证这个列中的数据是否符合一个有效的XSD文件。在本文中,将展示如何在SQL Server中使用一些简单的步骤来完成这项任务,而不需要编写.NET代码或创建Windows应用程序。

首先,需要在SQL Server2008 R2中创建一个名为'XMLValidateWithXSD'的数据库。

USE [master] GO CREATE DATABASE [XMLValidateWithXSD] GO

接下来,在'XMLValidateWithXSD'数据库中添加一个名为'tblXMLDataInformation'的表,并添加三个列:'Id'(整型),'XMLData'(XML类型)和'LoadedDateTime'(日期时间类型)。

USE [XMLValidateWithXSD] GO CREATE TABLE [dbo].[tblXMLDataInformation]( [Id] [int] IDENTITY(1,1) NOT NULL, [XMLData] [xml] NULL, [LoadedDateTime] [datetime] NULL, PRIMARY KEY CLUSTERED ([Id] ASC) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO

然后,向'tblXMLDataInformation'表中添加两条数据记录。

INSERT INTO [dbo].[tblXMLDataInformation] (XMLData, LoadedDateTime) VALUES (N'RahulSureshChavhan', GETDATE()) INSERT INTO [dbo].[tblXMLDataInformation] (XMLData, LoadedDateTime) VALUES (N'MadhuriPatil', GETDATE())

在数据库中添加一个名为'XMLTranformFailedEntry'的表,用于维护XSD验证失败的XML数据记录。

USE [XMLValidateWithXSD] GO CREATE TABLE [dbo].[XMLTranformFailedEntry]( [Id] [int] NULL, [Reason] [nvarchar](50) NULL ) GO

现在,需要创建一个XSD模式来验证'tblXMLDataInformation'表中的'XMLData'列。执行以下查询来创建这个模式。

CREATE XML SCHEMA COLLECTION StudentSchema AS N'' GO DECLARE @ID AS int DECLARE @XML AS XML DECLARE @string NVARCHAR(MAX) DECLARE c CURSOR FOR SELECT DISTINCT Id FROM tblXMLDataInformation OPEN c FETCH NEXT FROM c INTO @ID WHILE @@FETCH_STATUS = 0 BEGIN FETCH NEXT FROM c INTO @ID SELECT @XML = XMLData FROM tblXMLDataInformation WHERE Id = @ID BEGIN TRY DECLARE @x XML(StudentSchema) SET @x = @XML END TRY BEGIN CATCH INSERT INTO XMLXMLTranformFailedEntry (Id, Reason) VALUES (@ID, 'XML validation failed with StudentSchema XSD file') END CATCH END CLOSE c DEALLOCATE c
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485