你的位置:首页 > ASP.net教程

[ASP.net教程]JavaWeb之XML详解


什么是

  标记语言,很类似HTML。它被设计的宗旨是传输数据,而非显示数据。

  在现实生活中存在大量有关系的数据,如右图所示。 

问题:这样的数据该如何表示并交给计算机处理呢?

 

Parser(解析器)。

 

<??><中国>  <北京>    <海淀></海淀>    <丰台></丰台>  </北京>  <山东>    <济南></济南>    <青岛></青岛>  </山东>  <湖北>    <武汉></武汉>    <荆州></荆州>  </湖北></中国>

 

配置文件,以描述程序模块之间的关系。(如后面将要学习到的Struts、Spring和Hibernate都是基于

在一个软件系统中,通过

数据交换:不同语言之间用来交换数据

小型数据库:用来当数据库存储数据。

一个

  文档声明 元素 属性 注释 CDATA区 、特殊字符 处理指令(PI:Processing Instruction)

文档声明

在编写

最简单的语法:

<??>

 

encoding属性说明文档所使用的字符编码。保存在磁盘上的文件编码要与声明的编码一致。如:

<??>

 

standalone属性说明文档是否独立,即是否依赖其他文档。 如:

<??> 

yes不用引入外部的文件,no需要引入。(不常用)

元素

标签

一个标签分为起始和结束标签(不能省略)。一个标签有如下几种书写形式:

  包含标签主体:<mytag>some content</mytag>

  不含标签主体:<mytag/>

一个标签中可以嵌套若干子标签,但所有标签必须合理的嵌套,不允许有交叉嵌套。

<mytag1><mytag2></mytag1></mytag2> WRONG!

一个

标签的空格、换行

对于

由于在

命名规范

一个

  区分大小写,例如,<P>和<p>是两个不同的标记。

  不能以数字或“-” (中划线)开头。

  不能以

  不能包含空格。

  名称中间不能包含冒号(:)。

属性

一个元素可以有多个属性,每个属性都有它自己的名称和取值,例如:<mytag name=“value” …/>

属性值一定要用引号(单引号或双引号)引起来。

属性名称的命名规范与元素的命名规范相同

元素中的属性是不允许重复的

<mytag>  <name>    <firstName/>    <lastName/>  </name></mytag>

注释

注意:

  

  注释不能嵌套,例如:

  

转义字符

   

 注:< 和 & 的符号要用转义字符, > “ ‘ 可以不使用转义字符。

CDATA区

CDATA是Character Data的缩写

作用:把标签当做普通文本内容;

语法:<![CDATA[内容]]>

<![CDATA[  <itcast>www.itcast.cn</itcast>]]>

以上红色部分被当做普通文本而不是标签

处理指令

处理指令,简称PI(Processing Instruction)。

作用:用来指挥软件如何解析

语法:必须以“<?”作为开头,以“?>”作为结尾。 常用处理指令:

常用处理指令:  

  

    <?

  

    <?

    注:对中文命名的标签元素不起作用

  所有

  

  必须正确地嵌套顺序

  

  

  特殊字符必须转义 --- CDATA

  

 

为什么需要约束

 1.

 2.

  两个概念:

    格式良好的

    有效的

 3.总之:约束文档定义了在

1.什么是

  在

  文档的书写规范,这称之为

2.为什么需要

3.常用的约束技术

  

  

DTD约束快束入门

DTD概述

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

  

  2.书写完成DTD,并且约束成功后,可以总结书写的过程,更方便记忆。

  复杂标签:<!ELEMENT 标签名 (子节点)>

  简单标签:<!ELEMENT 标签名 (#PCDATA)>

  引入DTD:<!DOCTYPE 根节点 SYSTEM “dtd的地址”>

将DTD与

  DTD约束即可以作为一个单独的文件编写,也可以在

  1.使用内部DTD

    <!DOCTYPE 根节点 [ DTD的代码 ]>

  2.使用外部DTD

    <!DOCTYPE 根节点 SYSTEM “DTD的地址” >

  3.使用网络DTD

    <!DOCTYPE 根节点 PUBLIC “DTD的名称” “DTD的地址” >

    常见的使用网络DTD约束有 Struts2的框架

<?<!DOCTYPE 书架 [  <!ELEMENT 书架 (书+)>  <!ELEMENT 书 (书名,作者,售价)>  <!ELEMENT 书名 (#PCDATA)>  <!ELEMENT 作者 (#PCDATA)>  <!ELEMENT 售价 (#PCDATA)>]><书架>  <书>    <书名>Java就业培训教程</书名>    <作者>张孝祥</作者>    <售价>39.00元</售价>  </书>  ...</书架>

引入外部DTD文档

  

    当引用的DTD文档在本地时,采用如下方式:  

    <!DOCTYPE 根元素 SYSTEM “DTD文档路径”>

    如:

<!DOCTYPE 书架 SYSTEM “book.dtd”>

    当引用的DTD文档在公共网络上时,采用如下方式:   

    <!DOCTYPE 根元素 PUBLIC “DTD名称” “DTD文档的URL”>

    如:

<!DOCTYPE web-app PUBLIC     "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"    "http://java.sun.com/dtd/web-app_2_3.dtd">

DTD约束语法细节

   元素定义 属性定义 实体定义

元素(ELEMENT)定义

  在DTD文档中使用ELEMENT关键字来声明一个

  语法:<!ELEMENT 元素名称 使用规则> 

    使用规则:

      (#PCDATA):指示元素的主体内容只能是普通的文本.(Parsed Character Data)

      EMPTY:用于指示元素的主体为空。比如<br/>

      ANY:用于指示元素的主体内容为任意类型。

      (子元素):指示元素中包含的子元素

    定义子元素及描述它们的关系:

      如果子元素用逗号分开,说明必须按照声明顺序去编写

       如: <!ELEMENT FILE (TITLE,AUTHOR,EMAIL)

      如果子元素用“|”分开,说明任选其一。

       如:<!ELEMENT FILE (TITLE|AUTHOR|EMAIL)

      用+、*、?来表示元素出现的次数

        如果元素后面没有+*?:表示必须且只能出现一次

        +:表示至少出现一次,一次或多次

        *:表示可有可无,零次、一次或多次

        ?:表示可以有也可以无,有的话只能有一次。零次或一次 如: <!ELEMENT MYFILE ((TITLE*, AUTHOR?, EMAIL)* | COMMENT)>