可以使用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文件:

  1. <?xml version = "1.0" encoding = "UTF-8"?>
  2. <!DOCTYPE game SYSTEM "game.dtd">
  3. <!--
  4. Date:2016/1/26
  5. Writer:Wayne Ng
  6. Theme:MapleStory hero briefInstruction
  7. -->
  8. <game>
  9. <warrior>
  10. <hero>
  11. <name>英雄</name>
  12. <weapons>剑、斧、钝器</weapons>
  13. <skill>终极打击</skill>
  14. </hero>
  15. <hero>
  16. <name>圣骑士</name>
  17. <weapons>剑、钝器</weapons>
  18. <skill>神圣冲击</skill>
  19. </hero>
  20. <hero>
  21. <name>黑骑士</name>
  22. <weapons>长枪、矛</weapons>
  23. <skill>黑暗穿刺</skill>
  24. </hero>
  25. </warrior>
  26. <magician>
  27. <hero>
  28. <name>主教</name>
  29. <weapons>长杖、短仗</weapons>
  30. <skill>圣光普照</skill>
  31. </hero>
  32. <hero>
  33. <name>火毒法师</name>
  34. <weapons>长杖、短仗</weapons>
  35. <skill>末日火焰</skill>
  36. </hero>
  37. <hero>
  38. <name>冰雷法师</name>
  39. <weapons>长杖、短仗</weapons>
  40. <skill>冰咆哮</skill>
  41. </hero>
  42. </magician>
  43. <archer>
  44. <hero>
  45. <name>神射手</name>
  46. <weapons></weapons>
  47. <skill>暴风箭雨</skill>
  48. </hero>
  49. <hero>
  50. <name>箭神</name>
  51. <weapons></weapons>
  52. <skill>终极扫射</skill>
  53. </hero>
  54. </archer>
  55. <ranger>
  56. <hero>
  57. <name>侠盗</name>
  58. <weapons>短剑、短刀</weapons>
  59. <skill>暗杀</skill>
  60. </hero>
  61. <hero>
  62. <name>隐士</name>
  63. <weapons>拳套</weapons>
  64. <skill>四连镖</skill>
  65. </hero>
  66. <hero>
  67. <name>暗影双刀</name>
  68. <weapons>短剑、短刀</weapons>
  69. <skill>终极斩</skill>
  70. </hero>
  71. </ranger>
  72. </game>

game.dtd文件:

  1. <!ELEMENT warrior (#PCDATA)>
  2. <!ELEMENT hero (#PCDATA)>
  3. <!ELEMENT name (#PCDATA)>
  4. <!ELEMENT weapons (#PCDATA)>
  5. <!ELEMENT skill (#PCDATA)>
  6. <!ELEMENT magician (#PCDATA)>
  7. <!ELEMENT archer (#PCDATA)>
  8. <!ELEMENT ranger (#PCDATA)>

例子2:使用Schema实现例1的功能

ex2.xml文件:

  1. <?xml version = "1.0" encoding = "UTF-8"?>
  2. <!--
  3. Date:2016/1/26
  4. Writer:Wayne Ng
  5. Theme:MapleStory hero briefInstruction
  6. -->
  7. <game xmlns="http://www.w3school.com.cn"
  8. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  9. xsi:schemaLocation="game.xsd">
  10. <warrior>
  11. <hero>
  12. <name>英雄</name>
  13. <weapons>剑、斧、钝器</weapons>
  14. <skill>终极打击</skill>
  15. </hero>
  16. <hero>
  17. <name>圣骑士</name>
  18. <weapons>剑、钝器</weapons>
  19. <skill>神圣冲击</skill>
  20. </hero>
  21. <hero>
  22. <name>黑骑士</name>
  23. <weapons>长枪、矛</weapons>
  24. <skill>黑暗穿刺</skill>
  25. </hero>
  26. </warrior>
  27. <magician>
  28. <hero>
  29. <name>主教</name>
  30. <weapons>长杖、短仗</weapons>
  31. <skill>圣光普照</skill>
  32. </hero>
  33. <hero>
  34. <name>火毒法师</name>
  35. <weapons>长杖、短仗</weapons>
  36. <skill>末日火焰</skill>
  37. </hero>
  38. <hero>
  39. <name>冰雷法师</name>
  40. <weapons>长杖、短仗</weapons>
  41. <skill>冰咆哮</skill>
  42. </hero>
  43. </magician>
  44. <archer>
  45. <hero>
  46. <name>神射手</name>
  47. <weapons></weapons>
  48. <skill>暴风箭雨</skill>
  49. </hero>
  50. <hero>
  51. <name>箭神</name>
  52. <weapons></weapons>
  53. <skill>终极扫射</skill>
  54. </hero>
  55. </archer>
  56. <ranger>
  57. <hero>
  58. <name>侠盗</name>
  59. <weapons>短剑、短刀</weapons>
  60. <skill>暗杀</skill>
  61. </hero>
  62. <hero>
  63. <name>隐士</name>
  64. <weapons>拳套</weapons>
  65. <skill>四连镖</skill>
  66. </hero>
  67. <hero>
  68. <name>暗影双刀</name>
  69. <weapons>短剑、短刀</weapons>
  70. <skill>终极斩</skill>
  71. </hero>
  72. </ranger>
  73. </game>

game.xsd文件:

  1. <?xml version="1.0" encoding = "UTF-8"?>
  2. <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
  3. targetNamespace="http://www.w3school.com.cn"
  4. xmlns="http://www.w3school.com.cn"
  5. elementFormDefault="qualified" />
  6. <!--简单元素的定义-->
  7. <xs:element name = "name" type = "xs:string" />
  8. <xs:element name = "weapons" type = "xs:string" />
  9. <xs:element name = "skill" type = "xs:string" />
  10.  
  11. <!--复杂元素的定义-->
  12. <xs:element name = "hero">
  13. <xs:complexType>
  14. <xs:sequence>
  15. <xs:element ref = "name" />
  16. <xs:element ref = "weapons" />
  17. <xs:element ref = "skill" />
  18. </xs:sequence>
  19. </xs:complexType>
  20. </xs:element>
  21. <xs:element name = "warrior">
  22. <xs:complexType>
  23. <xs:sequence>
  24. <xs:element ref = "hero" maxOccurs = "unbounded"/>
  25. </xs:sequence>
  26. </xs:complexType>
  27. </xs:element>
  28. <xs:element name = "magician">
  29. <xs:complexType>
  30. <xs:sequence>
  31. <xs:element ref = "hero" maxOccurs = "unbounded"/>
  32. </xs:sequence>
  33. </xs:complexType>
  34. </xs:element>
  35. <xs:element name = "archer">
  36. <xs:complexType>
  37. <xs:sequence>
  38. <xs:element ref = "hero" maxOccurs = "unbounded"/>
  39. </xs:sequence>
  40. </xs:complexType>
  41. </xs:element>
  42. <xs:element name = "ranger">
  43. <xs:complexType>
  44. <xs:sequence>
  45. <xs:element ref = "hero" maxOccurs = "unbounded"/>
  46. </xs:sequence>
  47. </xs:complexType>
  48. </xs:element>
  49. <xs:element name = "game">
  50. <xs:complexType>
  51. <xs:sequence>
  52. <xs:element ref = "warrior" />
  53. <xs:element ref = "magician" />
  54. <xs:element ref = "archer" />
  55. <xs:element ref = "ranger" />
  56. </xs:sequence>
  57. </xs:complexType>
  58. </xs:element>

      2016/1/27修订  By野马菌

学习DTD和Schema的几个例子的更多相关文章

  1. 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来 ...

  2. XML&DTD&XML Schema学习

    XML(eXtensible Markup Language)可扩展的标记语言.xml在web service编程中尤为重要.在网络传输中可以作为传输数据的载体.xml作为元语言,它可以用来标记数据. ...

  3. DTD 和 Schema简介

    什么是DTD? DTD(文档类型定义)的作用是定义 XML 文档的合法构建模块. 它使用一系列的合法元素来定义文档结构. DTD例子 <?xml version="1.0"? ...

  4. 16.XML语法、CDATA、约束(DTD、Schema)讲解

    xml主要用来描述数据,比如配置文件,网络之间传输数据等,并且在android中也经常用xml来布局,,接下来便来学习xml常用的东西 1.XML语法 xml语法分为: 1.1 文档声明 必须位于文档 ...

  5. spring源码学习之:xml标签扩展配置例子

    在很多情况下,我们需要为系统提供可配置化支持,简单的做法可以直接基于Spring的标准Bean来配置,但配置较为复杂或者需要更多丰富控制的 时候,会显得非常笨拙.一般的做法会用原生态的方式去解析定义好 ...

  6. SharpGL学习笔记(十一) 光源创建的综合例子:光源参数可调节的测试场景

    灯光的测试例子:光源参数可以调节的测试场景 先看一下测试场景和效果. 场景中可以切换视图, 以方便观察三维体和灯光的位置.环境光,漫射光,镜面反射光都可以在四种颜色间切换. 灯光位置和摄像机位置(Lo ...

  7. MyBatis学习(一)一个简单的例子

    mybatis入门例子 开发步骤: 1.创建java工程 2.加入jar包(依赖包.驱动包) 3.创建sqlMapConfig.xml 4.创建数据库,数据库表USER_C,插入测试记录 5.创建PO ...

  8. log4j学习(一)最简单的例子

    前言: 之前笔者一直是在System.out中打日志的,由于笔者大部分时候是编写在tomcat容器里运行的一些个小web应用,所以这么做似乎没什么问题:打印出来的日志都可以在tomcat自己的log目 ...

  9. 在myeclipse等IDE中添加本地的dtd与schema约束文件

      *针对没有网络无法正确引入dtd而使用不了提示的问题 (配置完后重启IDE)   window->perferences- > 搜索xml c 找到xml catalog 右边点击 a ...

随机推荐

  1. 梦游前端,JavaScript兼容性

    前端兼容问题出现的原因 何为操作系统?操作系统(Operating System)是管理和控制计算机硬件与软件资源的计算机程序.是的,任何的应用软件必须在操作系统的支持下运行. 大家会疑问?为什么我要 ...

  2. Hibernate征途(一)之初识

    相见恨晚 很久以前,大概从开始接触数据库开始,就闪过这样一个想法,怎么看怎么觉得数据库表和vb的类模块很像,不是么?除了vb类模块还有函数外:越往下学觉得二者越像,尤其在三层时学到实体类的概念,我去, ...

  3. RHEL5.8安装Oracle11g

    1.安装环境[root@rusky-oracle11g ~]# uname -r2.6.18-308.el5[root@rusky-oracle11g ~]# cat /etc/issueRed Ha ...

  4. .net程序员转战android第二篇---牛刀小试

    上篇说道如何搭建android的开发环境,这一篇我们将牛刀小试一下, 完成我们第一个android APP应用. 我就从新建项目说起吧. 首先打开Eclipse,选择顶部的File(文件)——new( ...

  5. 简述UITextField的属性和用法

    0.     enablesReturnKeyAutomatically 默认为No,如果设置为Yes,文本框中没有输入任何字符的话,右下角的返回按钮是disabled的. 1.borderStyle ...

  6. c++到c#数据类型的转换

    c++与c#的类型转换 分类:cSharp | 标签: c#  system  intptr  char  uint  2012-02-29 19:54 阅读(513)评论(0)编辑删除 //c++: ...

  7. zookeeper集群挂了,提示

    Hadoop集群意外关机后,zookeeper服务出现停止状态, 日志错误提示如下: java.io.IOException: Transaction log: //log.260010d366 ha ...

  8. 关于C语言指针几个容易混淆的概念

    前言: 大多数学习过C/C++或者正在学习的同学在对指针概念把握时,总是感觉不太明了,小弟我也不例外啊,于是翻开资料复习整理一下,并把自己的学习心得拿出来供大家分享,讨论. 基本概念掠过,主要来探讨一 ...

  9. CODEVS1047 邮票面值设计

    题目描述 Description 给定一个信封,最多只允许粘贴N张邮票,计算在给定K(N+K≤40)种邮票的情况下(假定所有的邮票数量都足够),如何设计邮票的面值,能得到最大值MAX,使在1-MAX之 ...

  10. Android L 之 RecyclerView 、CardView 、Palette

    转: http://blog.csdn.net/xyz_lmn/article/details/38735117 <Material Design>提到,Android L版本中新增了Re ...