如何定义XSD并在XML中使用XSD

同时XSD可以对XML中的格式进行约束,当约束失败时给出提示。

下面以下使用VS2010为平台进行演示。

1.新建一个项目,然后在项目中添加xml架构文件(.xsd结尾的文件),本示例是新建一个网站,在网站中新建项XML架构文件,后缀是.xsd,命名为XMLSchema2.xsd

2.平台自动生成如下内容:

其中xmlns在使用XML引入XSD文件时比较重要。

3.现在开始定义XSD

<?xmlversion="1.0"encoding="utf-8"?>

<xs:schemaid="XMLSchema2"

targetNamespace="http://tempuri.org/XMLSchema2.xsd"

elementFormDefault="qualified"

xmlns="http://tempuri.org/XMLSchema2.xsd"

xmlns:mstns="http://tempuri.org/XMLSchema2.xsd"

xmlns:xs="http://www.w3.org/2001/XMLSchema"

>

<xs:elementname="通讯录">

<xs:complexType>

<xs:sequence>

<xs:elementref="记录"maxOccurs="unbounded"/>

</xs:sequence>

</xs:complexType>

</xs:element>

<xs:elementname="记录">

<xs:complexType>

<xs:sequence>

<xs:elementref="姓名"/>

<xs:elementref="关系"/>

<xs:elementref="工作单位"/>

<xs:elementref="职位"/>

<xs:elementref="电话"/>

<xs:elementref="手机"/>

<xs:elementref="电子邮件"/>

</xs:sequence>

<xs:attributename="编号"use="required">

<xs:simpleType>

<xs:restrictionbase="xs:decimal"/>

</xs:simpleType>

<!--说明编号属性的类型:必须为整数-->

</xs:attribute>

</xs:complexType>

</xs:element>

<xs:elementname="姓名">

<xs:simpleType>

<xs:restrictionbase="xs:string"/>

</xs:simpleType>

<!--补充姓名的类型:字符串-->

</xs:element>

<xs:elementname="关系">

<xs:simpleType>

<xs:restrictionbase="xs:string">

<xs:enumerationvalue="朋友"/>

<xs:enumerationvalue="同事"/>

<xs:enumerationvalue="亲属"/>

<xs:enumerationvalue="一般"/>

</xs:restriction>

</xs:simpleType>

<!--补充关系的类型:必须为朋友、同事、亲属、一般中的一种,不能重复-->

</xs:element>

<xs:elementname="工作单位">

<xs:simpleType>

<xs:restrictionbase="xs:string"/>

</xs:simpleType>

<!--补充工作单位的类型:字符串-->

</xs:element>

<xs:elementname="职位">

<xs:simpleType>

<xs:restrictionbase="xs:string"/>

</xs:simpleType>

<!--补充职位的类型:字符串-->

</xs:element>

<xs:elementname="电话">

<xs:simpleType>

<xs:restrictionbase="xs:string">

<xs:patternvalue="\d{3}-\d{8}"></xs:pattern>

</xs:restriction>

</xs:simpleType>

<!--补充电话的类型:按照形式“区号-号码”表示,其中区号占3位,号码占8位-->

</xs:element>

<xs:elementname="手机">

<xs:simpleType>

<xs:restrictionbase="xs:decimal">

<xs:patternvalue="\d{7,12}"/>

</xs:restriction>

</xs:simpleType>

<!--补充手机的类型:必须为数字,长度介于7-12位之间-->

</xs:element>

<xs:elementname="电子邮件">

<xs:simpleType>

<xs:restrictionbase="xs:string">

<xs:patternvalue="^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$"/>

</xs:restriction>

</xs:simpleType>

<!--补充电子邮件的类型:形如“邮件名@域名”-->

</xs:element>

</xs:schema>

“<xs:pattern”节点下的value支持正则表达式来验证。

4.接下来在XML中引入XSD文件,对XML的节点输入值进行约束

5.创建一个XML文件,并命名为XMLFile2.xml

平台只生成一行代码。

6.添加对XSD文件的引用

一个XSD必定只有一个根结点,因此,此处将根结点也写于头部。

添加两个属性:

xmlns作为XSD所在的命名空间

xmlns:xsi作为本XML文件的命名空间,即XSD的一个实例(instance)。

7.开始编写XML文件

8.输入<,发现它自动跳出可选的节点

这个就是XSD的作用之一。

9.继续输入,直到电话节点

提示模式约束失败。这是XSD的作用之二。

实际上,XSD是这样定义的:

10.改到“区号-号码”的3+8形式,错误提示消失

11.同理,对于邮箱地址

12.改成正确形式

13.完毕

在XML里的XSD和DTD以及standalone的使用2----具体使用详解的更多相关文章

  1. 在XML里的XSD和DTD以及standalone的使用3----具体使用详解

    本人亲自写的一个简单的测试例子 1.xsd定义 <?xml version="1.0" encoding="utf-8"?><xs:schem ...

  2. 在XML里的XSD和DTD以及standalone的使用

    有关XML结构中的XSD和DTD以及standalone的使用 XmlDeclaration declare= document.CreateXmlDeclaration("1.0" ...

  3. 全网最详细的IDEA里如何正确新建普通的Java web项目并发布到Tomcat上运行成功【博主强烈推荐】(类似eclipse里同一个workspace下【一个子项目】并存)(图文详解)

    不多说,直接上干货! 首先,大家要明确,IDEA.Eclipse和MyEclipse等编辑器之间的新建和运行手法是不一样的. 如果是在Myeclipse里,则是File -> new -> ...

  4. Vmware workstation12里如何正确快速安装可视化IDS系统Security Onion(图文详解)

    不多说,直接上干货! 首先,大家要明确: 问:安全洋葱能阻止入侵吗? 答:这一点,和OSSIM一样,不能阻止入侵. Security Onion基于Ubuntu,包含了入侵检测.网络安全监控.日志管理 ...

  5. Spark Mllib里如何将数值特征字段用StandardScaler进行标准化(图文详解)

    不多说,直接上干货! 首先,要明白为什么有时候,数值特征字段需要进行标准化? 答:因为,当我们若用回归分析算法时,必须将数值特征字段进行标准化,这是因为数值特征字段单位不同,数字差异很大,所以无法彼此 ...

  6. web.xml配置详解[转]

    引文: 对于一个J2EE领域的程序员而言,基本上每天都会和web应用打交道. 什么是web应用?最简单的web应用什么样?给你一个web应用你该从何入手? 1.什么是web应用? web应用是一种可以 ...

  7. web.xml文件配置详解以及实例说明

    1.web.xml学名叫部署描述符文件,是在Servlet规范中定义的,是web应用的配置文件. 2.部署描述符文件就像所有XML文件一样,必须以一个XML头开始.这个头声明可以使用的XML版本并给出 ...

  8. 关于xml的一些知识,DTD,XSD

    DTD 文档类型定义(Document Type Definition)是一套关于标记符的语法规则.它是标准通用标记语言和 可扩展标记语言1.0版规格的一部分,是文档的验证机制.文档类型定义是一种保证 ...

  9. web.xml文件的 xsd引用(或dtd引用)学习

    1. 为什么web.xml会有不同版本的xsd引用: JDK依赖变化: 或 servlet(JAVA EE)自身API的改变: 2. 为什么会有dtd和xsd两个版本的区别 我是在这篇文章中看到的,作 ...

随机推荐

  1. linux make clean

    make clean仅仅是清除之前编译的可执行文件及配置文件. 而make distclean要清除所有生成的文件. Makefile 在符合GNU Makefiel惯例的Makefile中,包含了一 ...

  2. 利用HibernateTools从数据库表生成带注解的POJO

    在SSH框架中,如果先设计好了数据库,那么下一步就需要从数据库Table生成实体java类和hbm.xml配置文件.在最新的开发框架中,已经支持使用注解,从而避免了繁琐的hbm.xml配置,而且我们可 ...

  3. 解决xtraFinder在EI下不能使用问题

    在EI (10.11)下,由于SIP(System Integrity Protection)机制,导致一些第三方插件不能使用,如xtrafinder. 要想使用,在目前的情况下,启用的方法:一种是安 ...

  4. javascript看你能够做对几题

    http://ourjs.com/detail/52fb82e13bd19c4814000001

  5. SQL Server数据库备份(本机)

    基础的SQL Server数据库备份存储过程 /**************************************************************************** ...

  6. P1654: [Usaco2006 Jan]The Cow Prom 奶牛舞会

    裸的强连通 ; type node=record f,t:longint; end; var n,m,dgr,i,u,v,num,ans:longint; bfsdgr,low,head,f:arra ...

  7. javascript面向对象思想2

    上篇说到面向对象可以帮我们梳理页面的逻辑的文章(http://www.cnblogs.com/hetaojs/p/6024013.html),很多朋友看了说我这种写法是初级的面向对象小儿科,确实是初级 ...

  8. selenium + python网页自动化测试环境搭建

    1.python的安装 ,这个不解释,exe文件运行安装即可,既然你选择python,相信你是熟悉python的,我安装目录C:\Python27 2.setuptools 的安装也非常简单,同样是e ...

  9. ajax 获取 mysql 保存的图片显示

    function ajax_GetFirstData(data) { var len = data.Data.length; if (len > 0) { $("#jquery_jpl ...

  10. 【规范】javascript 变量命名规则(转)

    匈牙利命名法 语法 变量名 = 类型 + 对象描述 类型指变量的类型 对象描述指对象名字全称或名字的一部分,要求有明确含义,命名要容易记忆容易理解. 通过在变量名前面添加相应小写字母的符号标示作为前缀 ...