xml语言,dtd约束是什么,xml的属性语法,xml文档的dom树的讲解

xml为可扩展的标记语言,它允许用户自定义标签,一个标签用于表述一段数据,一个标签有开始和结束,在开始和结束之间,又可以用其它标签描述数据。

在编写xml文档时,需要先使用文档申明,声明xml文档类型

xml语言,dtd约束是什么,xml的属性语法,xml文档的dom树的讲解

xml语言,dtd约束是什么,xml的属性语法,xml文档的dom树的讲解

元素 element

1元素是xml文档中最重要的组成部分

2普通元素的结构开始标签、元素体、结束标签组成。例如:<hello>大家好</hello>

3元素体:元素体可以是元素,也可以是文本,例如<b><a>您好</a></b>

4空元素:空元素只有开始标签,而且没有结束标签,但是元素必须自己闭合,例如<c/>

元素命名:

A区分大小写

B不能使用空格,不能使用冒号

C不建议以xml,Xml,XML开头

D不能以数字或者下划线开头

格式化良好的xml文档,必须只有一个根元素。

xml语言,dtd约束是什么,xml的属性语法,xml文档的dom树的讲解

属性也要遵循如下规则:

A区分大小写

B不能使用空格,不能使用冒号

C不建议以xml,Xml,XML开头

D不能以数字或者下划线开头

xml语言,dtd约束是什么,xml的属性语法,xml文档的dom树的讲解

在编写xml文件时,有些内容不可能不想让解析引擎解析,而当作原始内容处理,遇到这种情况时,可以把这些内容放到CDATA内,xml解析程序不会处理,而是原封不动的输出

xml语言,dtd约束是什么,xml的属性语法,xml文档的dom树的讲解

什么是xml约束?

在xml约束技术里,可以编写一个文档来约束一个xml文档的书写规范,这个就是xml约束

常用的xml约束有两种技术 : xml dtd xml Schema

dtd是什么?

xml语言,dtd约束是什么,xml的属性语法,xml文档的dom树的讲解

dtd的引入有三种方式

1. 内部dtd,在xml文档的内部嵌入DTD,只对当前XML有效

<? Xml version="1.0" encoding="utf-8" standalone="yes" ?>

<!DOCTYPE web-app[

….//具体的语法

]>

<web-app>

</web-app>

xml语言,dtd约束是什么,xml的属性语法,xml文档的dom树的讲解

元素声明

xml语言,dtd约束是什么,xml的属性语法,xml文档的dom树的讲解

元素名是自定义的,元素描述分为常见符号和常见类型

xml语言,dtd约束是什么,xml的属性语法,xml文档的dom树的讲解

属性语法

xml语言,dtd约束是什么,xml的属性语法,xml文档的dom树的讲解

xml语言,dtd约束是什么,xml的属性语法,xml文档的dom树的讲解

一般来说dtd约束文档并非需要我们写,而是一般写好了,而我们只需要读懂它,然后根据约束文档,写我们所需要的xml文件,下面进行实例演练

xml语言,dtd约束是什么,xml的属性语法,xml文档的dom树的讲解

<!ELEMENT web-app (servlet*,servlet-mapping* , welcome-file-list?) >

<!ELEMENT servlet (servlet-name,description?,(servlet-class|jsp-file))>

<!ELEMENT servlet-mapping (servlet-name,url-pattern+) >

<!ELEMENT servlet-name (#PCDATA)>

<!ELEMENT servlet-class (#PCDATA)>

<!ELEMENT url-pattern (#PCDATA)>

<!ELEMENT description (#PCDATA)>

<!ELEMENT jsp-file (#PCDATA)>

<!ELEMENT welcome-file-list (welcome-file+)>

<!ELEMENT welcome-file (#PCDATA)>

<!ATTLIST web-app version CDATA #IMPLIED>

这个dtd文档不是普通的文档,而是servlet2.3规范,

如果在xml使用当前DTD约束,必须包括DOCTYPE。格式如下:

#PCDATA为文本

一般dtd约束给定之后,我们根据这个dtd写xml文件,一般不唯一,因为有些东西可以写一个,也可以写多个,但基本上按照它的约束可以写出一个基本需要的xml文件

我们在引入dtd文档之后,在eclipse中写相应的xml文档会方便很多,原因就是它会给提示

下面按照dtd约束写xml,标签写一次或或多次的就写一次,这样演示翻遍

xml语言,dtd约束是什么,xml的属性语法,xml文档的dom树的讲解

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE web-app SYSTEM "web-app_2_3.dtd">

<web-app>

<servlet>

<servlet-name></servlet-name>

<servlet-class></servlet-class>

</servlet>

<servlet-mapping>

<servlet-name></servlet-name>

<url-pattern></url-pattern>

</servlet-mapping>

<welcome-file-list>

<welcome-file></welcome-file>

</welcome-file-list>

</web-app>

根据这个dtd写出来的xml就是servlet中常用的xml文件

Xml Schema是xml语言,是一种用于定义和描述xml文档结构与内容的模式语言,其出现是为了克服DTD的局限性

一个 xml Schema文档通常称之为模式文档(约束文档),遵循这个文档书写的xml文件称之为实例文档

和xml文件一样,一个xml Schema文档必须有一个根节点为Schema

如果一个xml文档中使用多个Schema文件,但当多个文件有同名的元素的时候就会发生冲突,所以命名空间可以理解为包,这样相同的名称的元素也不会发生问题

在xml Schema中,每个约束文档都可以被赋予一个唯一的名称空间,名称空间用唯一的url表示,在xml文件中书写标签时,名称空间可以通过xmlns来声明当前编写的标签来自哪个约束文档比如<huanfeng :书架 xmlns:huanfeng="http://huanfeng.cn">这句话的意思时申明一个名称空间"",给这个名称空间起一个别名huanfeng,以后用着方便

以后只要时""

xml语言,dtd约束是什么,xml的属性语法,xml文档的dom树的讲解

可以理解为类似导入包一个意思,导入包之后就可以用包中的内容了

上面使用dtd写了一个约束文件,约束的内容是servlet的配置文件,下面的xsd也是约束servlet的文件

web-app_2_5.xsd

<xsd:schema xmlns="http://www.w3.org/2001/XMLSchema"

targetNamespace="http://www.example.org/web-app_2_5"

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

xmlns:tns="http://www.example.org/web-app_2_5"

elementFormDefault="qualified">

<xsd:element name="web-app">

<xsd:complexType>

<xsd:choice minOccurs="0" maxOccurs="unbounded">

<xsd:element name="servlet">

<xsd:complexType>

<xsd:sequence>

<xsd:element name="servlet-name"></xsd:element>

<xsd:element name="servlet-class"></xsd:element>

</xsd:sequence>

</xsd:complexType>

</xsd:element>

<xsd:element name="servlet-mapping">

<xsd:complexType>

<xsd:sequence>

<xsd:element name="servlet-name"></xsd:element>

<xsd:element name="url-pattern" maxOccurs="unbounded"></xsd:element>

</xsd:sequence>

</xsd:complexType>

</xsd:element>

<xsd:element name="welcome-file-list">

<xsd:complexType>

<xsd:sequence>

<xsd:element name="welcome-file" maxOccurs="unbounded"></xsd:element>

</xsd:sequence>

</xsd:complexType>

</xsd:element>

</xsd:choice>

<xsd:attribute name="version" type="double" use="optional"></xsd:attribute>

</xsd:complexType>

</xsd:element>

</xsd:schema>

这个是schema的形式的servlet的约束文档,要想使用需要需要在xml文件中引入

<web-app xmlns="http://www.example.org/web-app_2_5"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://www.example.org/web-app_2_5 web-app_2_5.xsd"

version="2.5">

按照它的要求编写完成是这样的

xml语言,dtd约束是什么,xml的属性语法,xml文档的dom树的讲解

Xsd文件中

xml语言,dtd约束是什么,xml的属性语法,xml文档的dom树的讲解

xsd:element表示元素,按照这个约束写一般就只写这些元素,写的时候一般都有提示

xml解析

xml语言,dtd约束是什么,xml的属性语法,xml文档的dom树的讲解

xml语言,dtd约束是什么,xml的属性语法,xml文档的dom树的讲解

Xml dom和html dom差不多,xml dom将整个xml文档加载到内存,生成一个DOM树,并获得一个Document对象,并通过Document对象就可以对DOM进行操作

DoM的核心概念就是节点,在xml文档中元素,属性,文本等都是dom节点

xml语言,dtd约束是什么,xml的属性语法,xml文档的dom树的讲解

这个文档都对应的dom树是

xml语言,dtd约束是什么,xml的属性语法,xml文档的dom树的讲解

xml语言,dtd约束是什么,xml的属性语法,xml文档的dom树的讲解

Dom4j必须使用核心类SaxReader加载xml获得document,并通过document获得根元素,然后通过下面的api来获取相应的元素

xml语言,dtd约束是什么,xml的属性语法,xml文档的dom树的讲解

元素对象.attribute("属性名")获得指定属性名的属性对象.getValue();获得这个属性的值

或者直接 元素对象.attributeValue("属性名")

举例:

xml语言,dtd约束是什么,xml的属性语法,xml文档的dom树的讲解

xml语言,dtd约束是什么,xml的属性语法,xml文档的dom树的讲解

xml语言,dtd约束是什么,xml的属性语法,xml文档的dom树的讲解

xml语言,dtd约束是什么,xml的属性语法,xml文档的dom树的讲解

注意路径cn.huanfeng.xml,应该写成cn/huanfeng/xml,不宜该再写点了,为包路径

相关推荐