学习DTD和Schema的几个例子
可以使用DTD(文档类型定义)来规定xml文档构建模块,可用起对xml文件进行验证。具体用法转:http://www.w3school.com.cn/dtd/dtd_intro.asp。同样也可以用Schema来实现DTD的功能,并且Schema因为其本身可以规定数据类型和其扩展性要优于DTD,并且将逐步取代DTD,具体用法转:http://www.w3school.com.cn/schema/index.asp
例子1:给xml文件编写对应的DTD文件
ex1.xml文件:
- <?xml version = "1.0" encoding = "UTF-8"?>
- <!DOCTYPE game SYSTEM "game.dtd">
- <!--
- Date:2016/1/26
- Writer:Wayne Ng
- Theme:MapleStory hero briefInstruction
- -->
- <game>
- <warrior>
- <hero>
- <name>英雄</name>
- <weapons>剑、斧、钝器</weapons>
- <skill>终极打击</skill>
- </hero>
- <hero>
- <name>圣骑士</name>
- <weapons>剑、钝器</weapons>
- <skill>神圣冲击</skill>
- </hero>
- <hero>
- <name>黑骑士</name>
- <weapons>长枪、矛</weapons>
- <skill>黑暗穿刺</skill>
- </hero>
- </warrior>
- <magician>
- <hero>
- <name>主教</name>
- <weapons>长杖、短仗</weapons>
- <skill>圣光普照</skill>
- </hero>
- <hero>
- <name>火毒法师</name>
- <weapons>长杖、短仗</weapons>
- <skill>末日火焰</skill>
- </hero>
- <hero>
- <name>冰雷法师</name>
- <weapons>长杖、短仗</weapons>
- <skill>冰咆哮</skill>
- </hero>
- </magician>
- <archer>
- <hero>
- <name>神射手</name>
- <weapons>弓</weapons>
- <skill>暴风箭雨</skill>
- </hero>
- <hero>
- <name>箭神</name>
- <weapons>弩</weapons>
- <skill>终极扫射</skill>
- </hero>
- </archer>
- <ranger>
- <hero>
- <name>侠盗</name>
- <weapons>短剑、短刀</weapons>
- <skill>暗杀</skill>
- </hero>
- <hero>
- <name>隐士</name>
- <weapons>拳套</weapons>
- <skill>四连镖</skill>
- </hero>
- <hero>
- <name>暗影双刀</name>
- <weapons>短剑、短刀</weapons>
- <skill>终极斩</skill>
- </hero>
- </ranger>
- </game>
game.dtd文件:
- <!ELEMENT warrior (#PCDATA)>
- <!ELEMENT hero (#PCDATA)>
- <!ELEMENT name (#PCDATA)>
- <!ELEMENT weapons (#PCDATA)>
- <!ELEMENT skill (#PCDATA)>
- <!ELEMENT magician (#PCDATA)>
- <!ELEMENT archer (#PCDATA)>
- <!ELEMENT ranger (#PCDATA)>
例子2:使用Schema实现例1的功能
ex2.xml文件:
- <?xml version = "1.0" encoding = "UTF-8"?>
- <!--
- Date:2016/1/26
- Writer:Wayne Ng
- Theme:MapleStory hero briefInstruction
- -->
- <game xmlns="http://www.w3school.com.cn"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="game.xsd">
- <warrior>
- <hero>
- <name>英雄</name>
- <weapons>剑、斧、钝器</weapons>
- <skill>终极打击</skill>
- </hero>
- <hero>
- <name>圣骑士</name>
- <weapons>剑、钝器</weapons>
- <skill>神圣冲击</skill>
- </hero>
- <hero>
- <name>黑骑士</name>
- <weapons>长枪、矛</weapons>
- <skill>黑暗穿刺</skill>
- </hero>
- </warrior>
- <magician>
- <hero>
- <name>主教</name>
- <weapons>长杖、短仗</weapons>
- <skill>圣光普照</skill>
- </hero>
- <hero>
- <name>火毒法师</name>
- <weapons>长杖、短仗</weapons>
- <skill>末日火焰</skill>
- </hero>
- <hero>
- <name>冰雷法师</name>
- <weapons>长杖、短仗</weapons>
- <skill>冰咆哮</skill>
- </hero>
- </magician>
- <archer>
- <hero>
- <name>神射手</name>
- <weapons>弓</weapons>
- <skill>暴风箭雨</skill>
- </hero>
- <hero>
- <name>箭神</name>
- <weapons>弩</weapons>
- <skill>终极扫射</skill>
- </hero>
- </archer>
- <ranger>
- <hero>
- <name>侠盗</name>
- <weapons>短剑、短刀</weapons>
- <skill>暗杀</skill>
- </hero>
- <hero>
- <name>隐士</name>
- <weapons>拳套</weapons>
- <skill>四连镖</skill>
- </hero>
- <hero>
- <name>暗影双刀</name>
- <weapons>短剑、短刀</weapons>
- <skill>终极斩</skill>
- </hero>
- </ranger>
- </game>
game.xsd文件:
- <?xml version="1.0" encoding = "UTF-8"?>
- <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:element name = "name" type = "xs:string" />
- <xs:element name = "weapons" type = "xs:string" />
- <xs:element name = "skill" type = "xs:string" />
- <!--复杂元素的定义-->
- <xs:element name = "hero">
- <xs:complexType>
- <xs:sequence>
- <xs:element ref = "name" />
- <xs:element ref = "weapons" />
- <xs:element ref = "skill" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name = "warrior">
- <xs:complexType>
- <xs:sequence>
- <xs:element ref = "hero" maxOccurs = "unbounded"/>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name = "magician">
- <xs:complexType>
- <xs:sequence>
- <xs:element ref = "hero" maxOccurs = "unbounded"/>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name = "archer">
- <xs:complexType>
- <xs:sequence>
- <xs:element ref = "hero" maxOccurs = "unbounded"/>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name = "ranger">
- <xs:complexType>
- <xs:sequence>
- <xs:element ref = "hero" maxOccurs = "unbounded"/>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name = "game">
- <xs:complexType>
- <xs:sequence>
- <xs:element ref = "warrior" />
- <xs:element ref = "magician" />
- <xs:element ref = "archer" />
- <xs:element ref = "ranger" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
2016/1/27修订 By野马菌
学习DTD和Schema的几个例子的更多相关文章
- XML概念定义以及如何定义xml文件编写约束条件java解析xml DTD XML Schema JAXP java xml解析 dom4j 解析 xpath dom sax
本文主要涉及:xml概念描述,xml的约束文件,dtd,xsd文件的定义使用,如何在xml中引用xsd文件,如何使用java解析xml,解析xml方式dom sax,dom4j解析xml文件 XML来 ...
- XML&DTD&XML Schema学习
XML(eXtensible Markup Language)可扩展的标记语言.xml在web service编程中尤为重要.在网络传输中可以作为传输数据的载体.xml作为元语言,它可以用来标记数据. ...
- DTD 和 Schema简介
什么是DTD? DTD(文档类型定义)的作用是定义 XML 文档的合法构建模块. 它使用一系列的合法元素来定义文档结构. DTD例子 <?xml version="1.0"? ...
- 16.XML语法、CDATA、约束(DTD、Schema)讲解
xml主要用来描述数据,比如配置文件,网络之间传输数据等,并且在android中也经常用xml来布局,,接下来便来学习xml常用的东西 1.XML语法 xml语法分为: 1.1 文档声明 必须位于文档 ...
- spring源码学习之:xml标签扩展配置例子
在很多情况下,我们需要为系统提供可配置化支持,简单的做法可以直接基于Spring的标准Bean来配置,但配置较为复杂或者需要更多丰富控制的 时候,会显得非常笨拙.一般的做法会用原生态的方式去解析定义好 ...
- SharpGL学习笔记(十一) 光源创建的综合例子:光源参数可调节的测试场景
灯光的测试例子:光源参数可以调节的测试场景 先看一下测试场景和效果. 场景中可以切换视图, 以方便观察三维体和灯光的位置.环境光,漫射光,镜面反射光都可以在四种颜色间切换. 灯光位置和摄像机位置(Lo ...
- MyBatis学习(一)一个简单的例子
mybatis入门例子 开发步骤: 1.创建java工程 2.加入jar包(依赖包.驱动包) 3.创建sqlMapConfig.xml 4.创建数据库,数据库表USER_C,插入测试记录 5.创建PO ...
- log4j学习(一)最简单的例子
前言: 之前笔者一直是在System.out中打日志的,由于笔者大部分时候是编写在tomcat容器里运行的一些个小web应用,所以这么做似乎没什么问题:打印出来的日志都可以在tomcat自己的log目 ...
- 在myeclipse等IDE中添加本地的dtd与schema约束文件
*针对没有网络无法正确引入dtd而使用不了提示的问题 (配置完后重启IDE) window->perferences- > 搜索xml c 找到xml catalog 右边点击 a ...
随机推荐
- 梦游前端,JavaScript兼容性
前端兼容问题出现的原因 何为操作系统?操作系统(Operating System)是管理和控制计算机硬件与软件资源的计算机程序.是的,任何的应用软件必须在操作系统的支持下运行. 大家会疑问?为什么我要 ...
- Hibernate征途(一)之初识
相见恨晚 很久以前,大概从开始接触数据库开始,就闪过这样一个想法,怎么看怎么觉得数据库表和vb的类模块很像,不是么?除了vb类模块还有函数外:越往下学觉得二者越像,尤其在三层时学到实体类的概念,我去, ...
- RHEL5.8安装Oracle11g
1.安装环境[root@rusky-oracle11g ~]# uname -r2.6.18-308.el5[root@rusky-oracle11g ~]# cat /etc/issueRed Ha ...
- .net程序员转战android第二篇---牛刀小试
上篇说道如何搭建android的开发环境,这一篇我们将牛刀小试一下, 完成我们第一个android APP应用. 我就从新建项目说起吧. 首先打开Eclipse,选择顶部的File(文件)——new( ...
- 简述UITextField的属性和用法
0. enablesReturnKeyAutomatically 默认为No,如果设置为Yes,文本框中没有输入任何字符的话,右下角的返回按钮是disabled的. 1.borderStyle ...
- c++到c#数据类型的转换
c++与c#的类型转换 分类:cSharp | 标签: c# system intptr char uint 2012-02-29 19:54 阅读(513)评论(0)编辑删除 //c++: ...
- zookeeper集群挂了,提示
Hadoop集群意外关机后,zookeeper服务出现停止状态, 日志错误提示如下: java.io.IOException: Transaction log: //log.260010d366 ha ...
- 关于C语言指针几个容易混淆的概念
前言: 大多数学习过C/C++或者正在学习的同学在对指针概念把握时,总是感觉不太明了,小弟我也不例外啊,于是翻开资料复习整理一下,并把自己的学习心得拿出来供大家分享,讨论. 基本概念掠过,主要来探讨一 ...
- CODEVS1047 邮票面值设计
题目描述 Description 给定一个信封,最多只允许粘贴N张邮票,计算在给定K(N+K≤40)种邮票的情况下(假定所有的邮票数量都足够),如何设计邮票的面值,能得到最大值MAX,使在1-MAX之 ...
- Android L 之 RecyclerView 、CardView 、Palette
转: http://blog.csdn.net/xyz_lmn/article/details/38735117 <Material Design>提到,Android L版本中新增了Re ...