XML(五)-Schema验证

Schema

什么是Schema

Schema(模式) :其作用与DTD一样,也是用于验证XML文档的有效性,只不过它提供了比DTD更强大的功能和更细粒度的数据类型。另外,Schema可以自定义数据类型。

Schema也是一个XML文件,而DTD则不是。

Schema与DTD的比较

  

为何要Schema

Schema文档结构:

所有的Schema文档,其根元素必须叫schema。schema可以包含属性,比如:

<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.w3school.com.cn"
xmlns="http://www.w3school.com.cn"
elementFormDefault="qualified">

...
...
</xs:schema>

一个Schema的例子

新建一个dtd文件

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
    <xs:element name="name" type="xs:string"></xs:element>
    <xs:element name="health" type="xs:int"></xs:element>
    <xs:element name="love" type="xs:int"></xs:element>
    <xs:element name="strain" type="xs:string"></xs:element>
    <xs:group name="mygroup" >
        <xs:sequence>
            <xs:element ref="name"></xs:element>
            <xs:element ref="health"></xs:element>
            <xs:element ref="love"></xs:element>
            <xs:element ref="strain"></xs:element>
        </xs:sequence>
    </xs:group>  <!--定义一个复合类型-->
    <xs:complexType name="dogType">
        <xs:group ref="mygroup"></xs:group>
    </xs:complexType>
    <xs:element name="dog" type="dogType"></xs:element>
</xs:schema>

根据以上dtd写的xml文件

<?xml version="1.0" encoding="UTF-8"?>
<dog xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="C:\Users\x\Desktop\schema\my3.xsd">
    <name>安倍晋三</name>
    <health>0</health>
    <love>0</love>
    <strain>草狗</strain>
</dog>

Schema的数据类型

基本数据类型

扩展数据类型

其它数据类型

数据类型的约束

规则

Schema的元素类型

schema元素:

作用:包含已经定义的schema

用法:<xs:schema>

属性:xmlns                targetNamespace             elementFormDefault           attributeFormDefault

Element元素

group元素

attribute元素

attributeGroup元素

综合案例:

Schema

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
    <xs:element name="name" type="xs:string"></xs:element>
    <xs:element name="health" type="xs:int"></xs:element>
    <xs:element name="love" type="xs:int"></xs:element>
    <xs:element name="strain" type="xs:string"></xs:element>
    <xs:group name="mygroup" >
        <xs:sequence>
            <xs:element ref="name"></xs:element>
            <xs:element ref="health"></xs:element>
            <xs:element ref="love"></xs:element>
            <xs:element ref="strain"></xs:element>
        </xs:sequence>
    </xs:group>
    <xs:attribute name="id" type="xs:string"></xs:attribute>
    <xs:attribute name="color" type="xs:string"></xs:attribute>
    <xs:attributeGroup name="myattr">
        <xs:attribute ref="id"></xs:attribute>
        <xs:attribute ref="color"></xs:attribute>
    </xs:attributeGroup>
    <xs:element name="dog">
        <xs:complexType>
                <xs:group ref="mygroup"></xs:group>
                <xs:attributeGroup ref="myattr"></xs:attributeGroup>
        </xs:complexType>

    </xs:element>
</xs:schema>

xml

<?xml version="1.0" encoding="UTF-8"?>
<dog xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="C:\Users\xx\Desktop\schema\my4.xsd" color="红色" id="id01">
    <name/>
    <health>10</health>
    <love>10</love>
    <strain/>
</dog>
时间: 2024-10-13 12:44:07

XML(五)-Schema验证的相关文章

XML Schema验证

XML Schema验证 一.什么事Schema(XSD) XML Schema是微软定义的一套用来验证XML技术.是一套预先规定的XML元素和属性创建的,这些元素和属性定义了XML文档的结构和内容模式. DTD的局限性: 1.DTD不遵循XML语法. 2.DTD的数据类型有限,与数据库类型不一致. 3.DTD不可以扩展. 4.DTD是不支持命名空间的. Schema的优势: 1.Schema是一种XML语法结构,编写更加方便. 2.Schema可以支持数据类型. 3.Schema是可以扩展的.

cvc-elt.1: Cannot find the declaration of element---与spring 无关的schema 验证失败

晚上查了好久,都是spring 出这种问题的解决方式,终于查到为什么了. http://wakan.blog.51cto.com/59583/7218/ 转自这个人.. 多谢啦! 为了验证 XML 文档的合法性,通常需要对文档进行验证,要么符合 DTD,要么符合 Schema.在以前的 JAXP 版本中,验证(Validation)是作为解析器(Parser)的一个功能特征来提供的. JAXP 的 Validation API 把 XML Parser 和 Validator 解耦合了.这样获得

Json.Net使用JSON Schema验证JSON格式

Json.NET supports the JSON Schema standard via the JsonSchema and JsonValidatingReader classes. It sits under the Newtonsoft.Json.Schema namespace. Json.NET通过JsonSchema和JsonValidatingReader类,支持JSON Schema标准.这两个类位于Newtonsoft.Json.Schema命名空间. JSON Sche

XML和Schema命名空间详解

来源:https://blog.csdn.net/wanghuan203/article/details/9204337 XML和Schema具有无关平台,技术厂商,简单,规范统一等特点,极具开放性,所以使用极为广泛,而且使用简单,在XML和Schema和,个人认为比较不好理解的一点是其命名空间问题,在这篇博客里详细进行理解. 名称空间是W3C推荐标准提供的一种统一命名XML文档中的元素和属性的机制.使用名称空间可以明确标识和组合XML文档中来自不同标记词汇表的元素和属性,避免了名称之间的冲突.

Struts2 验证框架 validation.xml 常用的验证规则

Struts2 验证框架 validation.xml 常用的验证规则 validation.xml 的命名规则和放置路径:文件名:<ActionClassName>-validation.xml<ActionClassName>就是要验证的Action类的名字. 要将此文件放于Class文件相同的目录.如果在Action类在struts配置中有多个action实例(action name),那么对应某个action的验证文件名规则如下:文件名:<ActionClassNam

xml语法、DTD约束xml、Schema约束xml、DOM解析xml

今日大纲 1.什么是xml.xml的作用 2.xml的语法 3.DTD约束xml 4.Schema约束xml 5.DOM解析xml 1.什么是xml.xml的作用 1.1.xml介绍 在前面学习的html语言,html是超文本标记语言,使用html语言规定好的标签来封装文本数据.而html使用的标签html语言规定好的,每个标签都有自己特定的功能. xml语言,可扩展的标记语言,这门语言它没有定义任何的标记,而标记是由使用者自己来定义,但是由于标签名称以及属性名称都由用户自己来命名,导致别人在使

JavaScripts学习日记——XML DTD Schema

今日关键词: XML DTD Schema 1.XML 1 XML的概述 1.1 什么是XML XML全称为Extensible Markup Language,意思是可扩展的标记语言.XML语法上和HTML比较相似,但HTML中的元素是固定的,而XML的标签是可以由用户自定义的. W3C在1998年2月发布1.0版本,2004年2月又发布1.1版本,但因为1.1版本不能向下兼容1.0版本,所以1.1没有人用.同时,在2004年2月W3C又发布了1.0版本的第三版.我们要学习的还是1.0版本!!

DevExpress XtraGrid网格控件示例五:验证终端用户输入的数据

本示例中禁用了无效的“colBudget”列单元格赋值.单元格值应该大于零且小于1,000,000.BaseView.ValidatingEditor事件处理检查输入值的有效性.如果出现无效的单元格赋值,BaseView.InvalidValueException事件会显示异常消息框.在这样情况下,调用GridView.HideEditor方法以便放弃所做的更改. C# 1 using DevExpress.XtraEditors.Controls; 2 // ... 3 private voi

怎样用Google APIs和Google的应用系统进行集成(8)----怎样把Google Blogger(博客)的JSON Schema转换成XML的Schema(XSD)?

在Google RESTFul API中,Google Blogger API(Google博客API)应该和我们的生活离得近期:由于差点儿非常多人每天都在看博客,都在写博客,都听说过博客.在前面的Google的应用系统进行集成(5)和Google的应用系统进行集成(6)的系列文章中.我们提到了怎样把Google Calendar和Google Tasks的JSON Schema转换成XML的XSD的Schema.从博客的訪问量来看,还是有非常多志同道合的朋友们对这个比較感兴趣,因此,这个章节.