在XML里的XSD和DTD以及standalone的使用2----具体使用详解
如何定义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----具体使用详解的更多相关文章
- 在XML里的XSD和DTD以及standalone的使用3----具体使用详解
本人亲自写的一个简单的测试例子 1.xsd定义 <?xml version="1.0" encoding="utf-8"?><xs:schem ...
- 在XML里的XSD和DTD以及standalone的使用
有关XML结构中的XSD和DTD以及standalone的使用 XmlDeclaration declare= document.CreateXmlDeclaration("1.0" ...
- 全网最详细的IDEA里如何正确新建普通的Java web项目并发布到Tomcat上运行成功【博主强烈推荐】(类似eclipse里同一个workspace下【一个子项目】并存)(图文详解)
不多说,直接上干货! 首先,大家要明确,IDEA.Eclipse和MyEclipse等编辑器之间的新建和运行手法是不一样的. 如果是在Myeclipse里,则是File -> new -> ...
- Vmware workstation12里如何正确快速安装可视化IDS系统Security Onion(图文详解)
不多说,直接上干货! 首先,大家要明确: 问:安全洋葱能阻止入侵吗? 答:这一点,和OSSIM一样,不能阻止入侵. Security Onion基于Ubuntu,包含了入侵检测.网络安全监控.日志管理 ...
- Spark Mllib里如何将数值特征字段用StandardScaler进行标准化(图文详解)
不多说,直接上干货! 首先,要明白为什么有时候,数值特征字段需要进行标准化? 答:因为,当我们若用回归分析算法时,必须将数值特征字段进行标准化,这是因为数值特征字段单位不同,数字差异很大,所以无法彼此 ...
- web.xml配置详解[转]
引文: 对于一个J2EE领域的程序员而言,基本上每天都会和web应用打交道. 什么是web应用?最简单的web应用什么样?给你一个web应用你该从何入手? 1.什么是web应用? web应用是一种可以 ...
- web.xml文件配置详解以及实例说明
1.web.xml学名叫部署描述符文件,是在Servlet规范中定义的,是web应用的配置文件. 2.部署描述符文件就像所有XML文件一样,必须以一个XML头开始.这个头声明可以使用的XML版本并给出 ...
- 关于xml的一些知识,DTD,XSD
DTD 文档类型定义(Document Type Definition)是一套关于标记符的语法规则.它是标准通用标记语言和 可扩展标记语言1.0版规格的一部分,是文档的验证机制.文档类型定义是一种保证 ...
- web.xml文件的 xsd引用(或dtd引用)学习
1. 为什么web.xml会有不同版本的xsd引用: JDK依赖变化: 或 servlet(JAVA EE)自身API的改变: 2. 为什么会有dtd和xsd两个版本的区别 我是在这篇文章中看到的,作 ...
随机推荐
- spring heibernate 调用存储过程
一:参考网址 http://sunbin123.iteye.com/blog/1007556 二:示例 @Autowired @Qualifier("jdbcTemplate") ...
- [Testing] 測試電子原文書
測試電子原文書 http://files.cnblogs.com/vincentmylee/SoftwareTesting2ndEdition.7z
- Delphi-仿vb里的IIF函数
//Delphi 函数-IIF // 实例-ChkValue := IIF(TCheckBox(tsPzJz.Controls[i]).Checked, '); function IIF(lExp: ...
- Python字符串内建处理函数
#coding=utf-8 __author__ = 'Administrator' # 字符串处理函数 s1 = "study python string function , I lov ...
- Spark Streaming揭秘 Day9 从Receiver的设计到Spark框架的扩展
Spark Streaming揭秘 Day9 从Receiver的设计到Spark框架的扩展 Receiver是SparkStreaming的输入数据来源,从对Receiver整个生命周期的设计,我们 ...
- Failed to execute command: ""C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\ResGen.exe" 的一个解决办法
最近在做wpf项目,期间下了一些源码参考,但是在build时经常遇到下面这种bug: Error 2 Failed to execute command: ""C:\Program ...
- 1 server - n clients 模型实现(select)
拓扑结构: 各个客户端创建读写管道,通过“上下线信息管道”向服务器发送上下线信息和读写管道名称.服务器接受信息,修改链表(存储客户端信息).客户端.服务器打开读写管道,服务器通过“W”管道接收从客户端 ...
- 【Google Protocol Buffer】Google Protocol Buffer
http://www.ibm.com/developerworks/cn/linux/l-cn-gpb/ Google Protocol Buffer 的使用和原理 Protocol Buffers ...
- (转)sqlserver游标概念与实例全面解说
首先声明:该文章转自http://www.cnblogs.com/wudiwushen/archive/2010/03/30/1700925.html 的博客 引言 我们先不讲游标的什么概念,步骤 ...
- Create a SharePoint Application Page for Anonymous Access
http://dishasharepointworld.blogspot.com/2011/07/how-to-create-sharepoint-application_1072.html http ...