`
无敌小熊猫
  • 浏览: 2330 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

xml

    博客分类:
  • xml
阅读更多
在XML技术里,可以编写一个文档来约束一个XML文档的书写规范,这称之为XML约束。

为了能够编写一个格式良好且有效的XML文档,我们需要在XML文档之前添加DTD或者schema约束。

常用的约束有:

  1.DTD约束

  2.Schema约束

约束在XML文档中的作用:

  XML文档的约束可以规定该文档都有哪些标签,包括标签的属性等等,都可以在约束中进行规范编写。

这篇文章我们来认识与使用DTD约束。

  DTD约束(Document Type Definition),全称为文档类型定义。

  这种约束简单易用,但功能较弱,相对于schema来说简单些,schema使用起来会比较麻烦,但功能也相对强大,在早期的servlet2.x版本以及spring 1.x版本中都是采用DTD来编写其XML文档的约束的。

例如:

    

DTD对XML文档的约束包括哪几个方面?

  1.DTD可以定义XML的根元素、内容和结构。

  2.定义XML文档中可以接受哪些元素

  3.定义XML文档中每个元素接受的合法内容,比如说是否为空,是否可以是文本,可以接受哪些子元素,和子元素出现的顺序和子元素出现的次数,以及各元素的包含规则等等。

  4.定义XML文档中每个元素能接受哪些属性

  5.定义XML文档中每个属性的类型,能接受哪些值,以及元素对属性的约束等。

  6.定义属性的默认值和固定值。

  7.定义XML文档中或DTD中可以使用哪些实体。

DTD有哪些功能?

  DTD采用了非XML的语法来描述语义约束,可以实现如下的功能:

    1.通过使用DTD可以让每个XML文档带有一个有关自身的格式描述

    2.不同的企业或公司等组织一致的使用某个标准的DTD来交换数据

    3.应用程序也可使用某个标准的DTD验证所介绍的XML文档是否符合语义约束

    4.开发者也可以使用DTD来验证所创建的XML文档

引入DTD的方式:

  1.内部DTD

    使用DTD的最简单的方式,内部DTD就是指将语义约束与XML文档的内容放在同一个XML文档中。紧跟在XML生命和处理指令之后,以<!DOCTYPE[开始,以]>结束语法格式如下:

    

    在普通的JSP页面编码中,或者HTML页面代码中都会有DTD约束出现,但一般都不是内部DTD约束。

    DTD约束细节1:

      在DTD文档中使用ELEMENT声明一个XML元素,语法格式如下所示:

         <!ELEMENT 元素名称 元素类型>

      元素类型可以是元素内容、或类型

      如为元素内容:则需要使用()括起来,如

      <!ELEMENT 书架 (书名,作者,售价)>

      <!ELEMENT 书名 (#PCDATA)>

      如为元素类型,则直接书写,DTD规范定义了如下几种类型:

      EMPTY:用于定义空元素,例如<br/> <hr/>

      ANY:表示元素内容为任意类型。

    DTD细节约束2:

      元素内容中可以使用如下方式,描述内容的组成关系

      用逗号分隔,表示内容的出现顺序必须与声明时一致。<!ELEMENT MYFILE (TITLE,AUTHOR,EMAIL)>

      用|分隔,表示任选其一,即多个只能出现一个

      <!ELEMENT MYFILE (TITLE|AUTHOR|EMAIL)>

      在元素内容中也可以使用+、*、?等符号表示元素出现的次数:

         +: 一次或多次 (书+)

            ?: 0次或一次 (书?)

          *: 0次或多次  (书*)

      也可使用圆括号( )批量设置,例

      <!ELEMENT MYFILE ((TITLE*, AUTHOR?, EMAIL)* | COMMENT)>

综合案例:

   

2.外部DTD

  外部DTD的引用:

    首先创建一个dtd文件,将DTD的约束写到文件中,然后在XML文档中按以下语法格式添加:

<!DOCTYPE (根元素名称)SYSTEM “外部DTD的URL地址”>

3.公用DTD

  引用公用的DTD的语法格式如下:

  <!DOCTYPE (根元素名称)PUBLIC “DTD的标识名” “公用DTD的URL地址”>

  具体写法可见JavaWEB项目中的web.xml文件,这里就不再贴出代码。

分享到:
评论

相关推荐

    pugixml读写XML示例

    pugixml是一款轻量级、高性能的C++库,专为XML解析和操作而设计。这个库由Artemev开发,提供了简单易用的API,使得在C++项目中处理XML文档变得非常便捷。本示例将详细介绍如何使用pugixml进行XML的读取和写入操作。 ...

    tinyxml与tinyxml2

    TinyXML和TinyXML2是两个小型的开源库,专门用于解析和操作XML(eXtensible Markup Language)文档。这两个库都是用C++编写的,为C++开发者提供了方便的接口来读取、写入和操作XML数据。下面将详细介绍这两个库的...

    易语言 xml解析 易语言 xml解析 教程 带源码

    易语言XML解析是编程领域中的一个重要主题,尤其对于使用易语言进行开发的程序员来说,理解并掌握XML(可扩展标记语言)的解析方法是至关重要的。XML作为一种结构化数据存储和交换格式,广泛应用于网络通信、配置...

    andxml xml解密工具

    andxml汉化版是一个xml文件反编译工具,可与APKTOOL反编译配合使用,APK文件使用APKTool反编译生成XML文件后,就可以直接通过它进行汉化编辑 注意: 1、一键机器翻译会造成某些代码出现翻译错误现象,请人工识别。...

    XML解析工具- TinyXML2 -源代码 - C++

    TinyXML-2 是一个简单、小型、高效的 C++ XML 解析器,可以被轻松集成到其他程序中。它使用文档对象模型(DOM)的方式解析XML,可解析 XML 文档,并根据该文档构建可读取、修改和保存的文档对象模型。 作为XML解析...

    xml2axml反编译AndroidManafest文件

    使用java工具xml2axml.jar反编译AndroidManafest文件 通过xml2axml.jar工具反编译AndroidManafest文件 还原AndroidManafest.xml详细过程: 1、获取到apk 2、解压获取里面的AndroidManifest.xml文件 3、在xml2axml....

    DBMS_XMLDOM DBMS_XMLPARSER DBMS_XMLQUERY 文档

    Oracle数据库系统提供了强大的XML处理能力,这主要体现在其内置的几个PL/SQL包上,如DBMS_XMLDOM、DBMS_XMLPARSER和DBMS_XMLQUERY。这些包为开发者提供了处理XML文档的一整套工具,使得在数据库环境中进行XML数据的...

    Xml完全操作 XML增删改查

    XML(eXtensible Markup Language)是一种用于标记数据的语言,其设计目的是传输和存储数据,而非显示数据。在IT行业中,XML因其结构清晰、可扩展性强的特点,被广泛应用于数据交换、配置文件、Web服务等领域。本文...

    tinyxml2.h tinyxml2.cpp文件

    TinyXML-2,通常以tinyxml2库的形式存在,是一个轻量级的C++库,专门用于解析和操作XML文档。这个库由李·斯坦普(Lee Stemp)开发,设计简洁,易于集成到各种项目中,特别是对于嵌入式系统和资源有限的环境。在给定...

    Qt读写Xml文件,QTreeWidget显示Xml和导出Xml文件

    在Qt框架中,XML文件是一种常见的数据存储格式,它提供了结构化的数据表示方式,便于程序读取和写入。QTreeWidget是Qt提供的一种用于显示树状结构数据的控件,它可以很好地展示XML文件的层次结构。QXml是Qt中的XML...

    XML学习心得分享XML学习心得分享

    XML学习心得分享 XML(Extensible Markup Language)是一种用于建立描述结构化数据标示语言的语言。它具有开放、可读取、扩展性强、避免浏览器或其他中介软件自行增加特定的HTML标签等特点。XML用于描述结构化数据...

    xml转javaBean,javaBean转xml,xml标签大小写问题,以及对xml特殊符号的处理

    XML(eXtensible Markup Language)是一种用于标记数据的语言,广泛应用在软件开发、Web服务、配置文件等领域。本文将深入探讨XML与JavaBean之间的转换、XML标签的大小写规则、XML特殊符号的处理以及CDATA的生成。 ...

    基于tinyxml2的xml操作库再封装

    XML(eXtensible Markup Language)是一种用于标记数据的语言,广泛应用于配置文件、数据交换、文档存储等领域。TinyXML2是轻量级的C++ XML解析库,它提供了简单、直接的方式来读写XML文档。本项目是基于tinyxml2...

    根据xml schema生成xml

    XML(eXtensible Markup Language)是一种用于标记数据的语言,广泛应用于数据交换、配置文件、文档存储等领域。XML Schema(通常缩写为XSD)则是为XML文档定义结构和数据类型的规范,它允许我们对XML文档进行更严格...

    tinyxml2解析XML文件读取数据

    - 库的主要类包括`XMLDocument`(XML文档对象)、`XMLElement`(XML元素)、`XMLText`(XML文本)、`XMLComment`(XML注释)和`XMLAttribute`(XML属性)等。 2. **解析XML文件** - 使用`XMLDocument::LoadFile()...

    XMLParser(XML解析代码 C++版)

    XMLParser是一种用于解析XML文档的C++实现,它旨在提供简单、小巧且稳定的解决方案,以处理XML数据。XML,即可扩展标记语言,是用于存储和传输数据的标准格式,广泛应用于配置文件、数据交换和文档结构化等领域。XML...

    matlab读取XML,XML转换为matlab

    XML(eXtensible Markup Language)是一种用于存储和交换数据的标记语言,广泛应用于软件开发、数据存储和网络通信等领域。Matlab作为一个强大的数值计算和数据分析环境,也提供了与XML交互的功能,这主要通过XML ...

    xml操作xml操作xml操作xml操作xml操作

    这里提到的"xml操作xml操作xml操作xml操作xml操作"显然是指对XML文档进行读取、修改和创建的操作。 在给定的示例中,首先加载XML文档到`XmlDocument`对象,这是.NET框架中用于处理XML的标准类。通过`XmlDocument`的...

    Notepad++的XML Tools插件格式化XML文件插件

    (2) 解压Xml Tools 2.4.8 Unicode.zip,关闭Notepad++ (3) 将xmltools子文件夹下的XMLTools.dll拷贝至Notepad++的plugins子文件夹 (4) 将ext_libs子文件夹下的所有dll文件拷贝至Notepad++的根目录(与notepad++.exe...

    xml文件树形显示,可添加删除修改xml节点

    XML(Extensible Markup Language)是一种用于标记数据的语言,它被广泛应用于数据交换、配置文件以及文档存储等领域。在处理XML文件时,为了更好地理解和操作XML文档,通常会将其以树形结构显示,这种方式能直观地...

Global site tag (gtag.js) - Google Analytics