现在XML使用的越来越多,在SQL Server表中我们可以创建XML列存储数据。 昨天在论坛看到有人说创建了一个存储过程处理XML,但是插入目标表的时候报错,而报的错误不详细。 其实这个问题的根本原因是XML的数据有问题,应该在插入的时候对输入的数据进行验证(对于用户输入的数据一定要做验证)。
其实SQL Server已经提供了XML Schema验证,下面我们看一个例子:
--创建XML Schema Collation
CREATE XML
SCHEMA COLLECTION myCollection
AS
'<xsd:schemaxmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="http://myBooks"
elementFormDefault="qualified"
targetNamespace="http://myBooks">
<xsd:element name="bookstore"type="bookstoreType" />
<xsd:complexTypename="bookstoreType">
<xsd:sequencemaxOccurs="unbounded">
<xsd:element name="book"type="bookType" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="bookType">
<xsd:sequence>
<xsd:element name="title"type="xsd:string" />
<xsd:element name="author"type="authorName" />
<xsd:element name="price"type="xsd:decimal" />
</xsd:sequence>
<xsd:attribute name="genre"type="xsd:string" />
<xsd:attributename="publicationdate" type="xsd:string" />
<xsd:attribute name="ISBN"type="xsd:string" />
</xsd:complexType>
<xsd:complexTypename="authorName">
<xsd:sequence>
<xsd:elementname="first-name" type="xsd:string" />
<xsd:element name="last-name"type="xsd:string" />
</xsd:sequence>
</xsd:complexType>
</xsd:schema>'
--创建表用上面创建的XML Schema做验证
create table XmlCatalog( ID
int, MyInfoXML
(CONTENT myCollection));
--插入数据
INSERT XmlCatalogVALUES(1,'<?xmlversion="1.0"?>
<bookstorexmlns="http://myBooks">
<book genre="autobiography"publicationdate="1981"
ISBN="1-861003-11-0">
<title>The Autobiography of BenjaminFranklin</title>
<author>
<first-name>Benjamin</first-name>
<last-name>Franklin</last-name>
</author>
<price>8.99</price>
</book>
<book genre="novel"publicationdate="1967"
ISBN="0-201-63361-2">
<title>The ConfidenceMan</title>
<author>
<first-name>Herman</first-name>
<last-name>Melville</last-name>
</author>
<price>11.99</price>
</book>
<book genre="philosophy"publicationdate="1991"
ISBN="1-861001-57-6">
<title>The Gorgias</title>
<author>
<first-name>Sidas</first-name>
<last-name>Plato</last-name>
</author>
<price>9.99</price>
</book>
</bookstore>
')
--如果XML格式有问题报错
INSERT XmlCatalogVALUES(1,'<?xmlversion="1.0"?>
<book genre="philosophy"publicationdate="1991"
ISBN="1-861001-57-6">
<title>The Gorgias</title>
<author>
<first-name>Sidas</first-name>
<last-name>Plato</last-name>
</author>
<price>9.99</price>
</book>
</bookstore>
')
Msg 6913, Level 16, State 1, Line 1
XML Validation: Declaration not found for element 'book'.Location: /*:book[1]
这样的错误是非常清楚的,可以很快的帮助我们Troubleshooting.
分享到:
相关推荐
1、学习如何使用XMLSPY集成开发环境完成XML Schema相关的开发工作。 2、掌握XML Schema与DTD之间的区别,能够完成两者之间的转换;掌握在XML Schema中如何定义元素和属性,如何使用限制、列表和合并派生自己的简单...
1、学习如何使用XMLSPY集成开发环境完成XML Schema相关的开发工作。 2、掌握XML Schema与DTD之间的区别,能够完成两者之间的转换;掌握在XML Schema中如何定义元素和属性,如何使用限制、列表和合并派生自己的简单...
java中实现xmlschema验证文件借鉴.pdf
ava校验XML是件很扯淡的事情,... 下面不扯这些废话了,我用DOM4j结合javaxml api使用XSD来校验一个xml有效性,下面这个例子虽然和蹩脚,但是也费了一番功夫,放出来大家研究吧,有更好的实现也希望能和我一同分享。
xml Schema 例子(C#写的验证程序)QQ:292258449
xmlschema:适用于Python的XML模式验证器和数据转换库
C#源码, 通过Schema验证XML文件格式是否正确
java中实现xmlschema验证文件参照.pdf
1、学习如何使用XMLSPY集成开发环境完成XML Schema相关的开发工作。2、掌握XML Schema与DTD之间的区别,能够完成两者之间的转换;掌握在XML Schema中如何定义元素和属性,如何使用限制、列表和合并派生自己的简单...
1、学习如何使用XMLSPY集成开发环境完成XML Schema相关的开发工作。 2、掌握XML Schema与DTD之间的区别,能够完成两者之间的转换;掌握在XML Schema中如何定义元素和属性,如何使用限制、列表和合并派生自己的简单...
NULL 博文链接:https://fhqiwcw.iteye.com/blog/1696624
xerces-c++ 2.8应用,主要报错xml文件的解析,创建,修改保存。schema验证的。希望对初学者有所帮助.
分析XML文档结构特点,以及XML Schema的基本规则,结合自动机理论,探讨基于XML Schema的表示方法以及对XML进行模式验证的实现方法。
[实验目的]: 1、掌握使用XMLSpy软件创建DTD和Schema文档 2、掌握在XML文档如何引入DTD和Schema,并验证有效 3、掌握DTD中声明元素、属性的方法 4、掌握Schema中声明元素,属性,类型的方法
可以用一个指定的XML Schema来验证某个XML文档,以检查该XML文档是否符合其要求。文档设计者可以通过XML Schema指定一个XML文档所允许的结构和内容,并可据此检查一个XML文档是否是有效的。XML Schema本身是一个XML...
在知识的讲解上,《Java Web开发详解——XML+DTD+XML Schema+XSLT+Servlet3.0+JSP2.2深入剖析与实例应用》采用理论与实践相结合的方式,从程序运行的内部机制进行分析讲解,并通过大量的实例和实验来验证并运用本书...
1、学习如何使用XMLSPY集成开发环境完成XML Schema相关的开发工作。 2、掌握XML Schema与DTD之间的区别,能够完成两者之间的转换;掌握在XML Schema中如何定义元素和属性,如何使用限制、列表和合并派生自己的简单...
提供xml文件实例到xmlschema的转换
它基本上按顺序执行以下操作: 识别实际的xml格式验证xml文件(使用架构和schematron规则) 生成定制报告/从xml文件提取定制数据计算接受状态(根据提供的方案和规则) 验证器取决于用于完全配置过程的自定义。...
-v=xxx,Schema验证,xxx可以是:always,never或auto。默认情况下xxx=auto,如果DOCTYPE声明或schema声明出现在XML文档中,将进行验证:xxx=always,强制进行验证:xxx=never,不使用验证。 -n,允许处理名字空间。...