`
java-mans
  • 浏览: 11427936 次
文章分类
社区版块
存档分类
最新评论

使用XML Schema验证XML数据输入

 
阅读更多

现在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.

分享到:
评论

相关推荐

    《XML》实验(2) -- Schema

    1、学习如何使用XMLSPY集成开发环境完成XML Schema相关的开发工作。 2、掌握XML Schema与DTD之间的区别,能够完成两者之间的转换;掌握在XML Schema中如何定义元素和属性,如何使用限制、列表和合并派生自己的简单...

    XML - 实验(2) -- Schema

    1、学习如何使用XMLSPY集成开发环境完成XML Schema相关的开发工作。 2、掌握XML Schema与DTD之间的区别,能够完成两者之间的转换;掌握在XML Schema中如何定义元素和属性,如何使用限制、列表和合并派生自己的简单...

    java中实现xmlschema验证文件借鉴.pdf

    java中实现xmlschema验证文件借鉴.pdf

    Java通过XML Schema校验XML

    ava校验XML是件很扯淡的事情,... 下面不扯这些废话了,我用DOM4j结合javaxml api使用XSD来校验一个xml有效性,下面这个例子虽然和蹩脚,但是也费了一番功夫,放出来大家研究吧,有更好的实现也希望能和我一同分享。

    xml Schema 例子(C#写的验证程序)

    xml Schema 例子(C#写的验证程序)QQ:292258449

    xmlschema:适用于Python的XML模式验证器和数据转换库

    xmlschema:适用于Python的XML模式验证器和数据转换库

    通过Schema验证XML格式是否正确

    C#源码, 通过Schema验证XML文件格式是否正确

    java中实现xmlschema验证文件参照.pdf

    java中实现xmlschema验证文件参照.pdf

    武汉大学软工xml上机第二次作业Schema

    1、学习如何使用XMLSPY集成开发环境完成XML Schema相关的开发工作。2、掌握XML Schema与DTD之间的区别,能够完成两者之间的转换;掌握在XML Schema中如何定义元素和属性,如何使用限制、列表和合并派生自己的简单...

    《XML》实验任务书 XML Schema 答案 解答

    1、学习如何使用XMLSPY集成开发环境完成XML Schema相关的开发工作。 2、掌握XML Schema与DTD之间的区别,能够完成两者之间的转换;掌握在XML Schema中如何定义元素和属性,如何使用限制、列表和合并派生自己的简单...

    c# XML 验证器 Schema验证XML

    NULL 博文链接:https://fhqiwcw.iteye.com/blog/1696624

    xml dom,sax解析,schema验证

    xerces-c++ 2.8应用,主要报错xml文件的解析,创建,修改保存。schema验证的。希望对初学者有所帮助.

    XML Schema的正规表示及模式验证的实现

    分析XML文档结构特点,以及XML Schema的基本规则,结合自动机理论,探讨基于XML Schema的表示方法以及对XML进行模式验证的实现方法。

    DTD和Schema规范XML文档

    [实验目的]: 1、掌握使用XMLSpy软件创建DTD和Schema文档 2、掌握在XML文档如何引入DTD和Schema,并验证有效 3、掌握DTD中声明元素、属性的方法 4、掌握Schema中声明元素,属性,类型的方法

    XSD(XML Schemas Definition)

    可以用一个指定的XML Schema来验证某个XML文档,以检查该XML文档是否符合其要求。文档设计者可以通过XML Schema指定一个XML文档所允许的结构和内容,并可据此检查一个XML文档是否是有效的。XML Schema本身是一个XML...

    Java Web开发详解:XML+DTD+XML Schema+XSLT+Servlet3.0+JSP2.2深入剖析与实例应用/孙鑫编著

    在知识的讲解上,《Java Web开发详解——XML+DTD+XML Schema+XSLT+Servlet3.0+JSP2.2深入剖析与实例应用》采用理论与实践相结合的方式,从程序运行的内部机制进行分析讲解,并通过大量的实例和实验来验证并运用本书...

    关于Schema

    1、学习如何使用XMLSPY集成开发环境完成XML Schema相关的开发工作。 2、掌握XML Schema与DTD之间的区别,能够完成两者之间的转换;掌握在XML Schema中如何定义元素和属性,如何使用限制、列表和合并派生自己的简单...

    trang_ xml to schema

    提供xml文件实例到xmlschema的转换

    验证器:使用XML Schema和Schematron验证XML文档

    它基本上按顺序执行以下操作: 识别实际的xml格式验证xml文件(使用架构和schematron规则) 生成定制报告/从xml文件提取定制数据计算接受状态(根据提供的方案和规则) 验证器取决于用于完全配置过程的自定义。...

    DOMCount.rar_Schema C_XML程序开发_personal_xml list_解析xml

    -v=xxx,Schema验证,xxx可以是:always,never或auto。默认情况下xxx=auto,如果DOCTYPE声明或schema声明出现在XML文档中,将进行验证:xxx=always,强制进行验证:xxx=never,不使用验证。 -n,允许处理名字空间。...

Global site tag (gtag.js) - Google Analytics