`
阅读更多

1 . XML DTD —— XML 入门知识

1.1 为什么要学习xml

XML 发展的非常迅速,这实在令人感到惊奇,有很多的软件开发商都采用了 XML 标准。我们相信,在未来的 Web 开发中, XML 将和 HTML 一样受到重视,他们都是 Web 技术的基础。就连无线标记语言 (WML The Wireless Markup Language ), [ 用于标识运行于手持设备上(比如:手机)的 Internet 程序 ] WML 都采用了 XML 的标准。 XML 将成为最普遍的数据操纵和数据传输的工具。

1.2 什么是XML

XML EXtensible Markup Language 的缩写。

XML 使用文档类型定义( DTD )或者模式( Schema )来描述数据

XML 使用 DTD 或者 Schema 后就是自描述的语言

1.3 XML HTML的主要区别

XML 是被设计用来描述数据的,重点是:什么是数据,如何存放数据。
HTML
是被设计用来显示数据的,重点是:显示数据以及如何显示数据更好上面。

他们在格式上也存在巨大区别,相对讲 xml 格式要求严格:

a. 所有的 XML 文档必须有一个结束标记

开始标签和结束标签必须配套,也就是必须写成 <p></p> 或者 <high></ high >

b. 空元素必须关闭

不允许出现单标签,但标签必须关闭,关闭使用 <p/> 或者 <high/>

c. 所有标签都区分大小写

d. 所有标签都必须合理嵌套

层次合理比如 <p><high></high></p> 这样就合理。

e. 所有标签的属性值必须使用双引号 (””) 或者但引号括起来

f.  xml 只能有一个根元素

1.4 XML 文档组成

xml 文档在逻辑上主要有以下 5 个部分组成:

1.xml 声明

xml 文档总是以一个 xml 声明开始,其中指明所用的 xml 版本、文档的编码、文档的独立性信息。格式为:

<?xml version=”<chmetcnv w:st="on" tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="1" unitname="”">1.0”</chmetcnv> encoding=”gb<chmetcnv w:st="on" tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="2312" unitname="”">2312”</chmetcnv> standalone=”yes”?>

其中需要注意的是在问号左右两边不能有空格。

还有其默认编码是 utf8

yes 表示文档是独立文档,即不依赖于外部文档。

2. 文档类型声明

我们可以用 DTD Document Type Definition 文档类型定义)来规范 xml 文档中元素和属性的规则及相互关系。

XML SGML Standard Generalized Markup Language,SGML 标准通用标记语言)继承了用于定义语法规则的 DTD 机制。几乎所有的 xml 应用都是使用 DTD 来定义的。 DTD 文件也是一个文本文件,通常用 ”.dtd” 作为其扩展名。

通过文档类型声明,指出 xml 文档所用的 DTD 。文档类型声明有两种形式,一种是声明 DTD 在一个外部文件中,例如:

<!DOCTYPE greeting SYSTEM “hello.dtd”>

1 种是直接在 xml 给出 dtd ,例如:

<!DOCTYPE greeting [

<!ELEMENT greeting  (#PCDATA)>

]>

3. 元素

XML 元素命名必须遵守下面的规则:

元素的名字可以包含子母,数字和其他字符。

元素的名字不能以数字或者标点符号开头。

元素的名字不能以 XML( 或者 xml Xml,xMl...) 开头。

元素的名字不能包含空格。

尽量不用冒号,冒号在名称空间中用于分隔名称空间前缀和本地部分。

 

2 个细节:

1.  CDATA

CDATA 段中包含的都是纯字符数据,在字符数据可以出现的任何地方都可以使用 CDATA 段。 CDATA 段主要用于需要将整个文本解释为字符数据而不是标记的情况下。

CDATA 段以字符串 ”<![CDATA[  开始, ”]]>” 结束。

2.  字符引用和预定义实体引用

xml 5 个特殊字符,小于 < 、大于 > 、双引号 、单引号 、和号 & 。在数据中需要使用这几个字符时候可以用通用字符引用和预定义引用:

请参考:表 1-1 特殊字符的字符引用和预定义实体引用

字符

字符引用 10 进制

字符引用 16 进制

预定义实体引用

<

 

<

<chmetcnv w:st="on" tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="3" unitname="C">3c</chmetcnv>;

&lt;

>

 

>

>

&gt;

"

"

&quot;

'

'

&apos;

&

&

&

&amp;

4. 注释

XML 中注释的语法基本上和 HTML 中的一样。 <!-- 这是一个注释 --> 。注释不要出现在标记中。

5. 处理指令

处理指令允许文档中包含由应用程序来处理的指令。处理指令的语法和 xml 声明类似,以 < ?开始,以 ?> 结束。一个常见的样式表单的处理指令如下所示:

<?xml–stylesheet href=”hello.css” type=”text/css”?>

1.5 关于DTD

符合语法的 XML 文档称为结构良好的 XML 文档。

通过 DTD 验证的 XML 文档称为有效的 XML 文档。

XML Schema(XML 模式 ) 是基于 XML DTD 的替代品。

通过 DTD ,你的每一个 XML 文件都自身携带有关它自身格式的说明。

通过 DTD ,不同群体的人们可以对使用普通的 DTD 来交换数据的方法达成一致。

 

含有 DTD 的实例 XML 文件:

#PCDATA 指明必须是字符数据。

<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--> 1 <?xml version="1.0"?>
 2 <!DOCTYPE note [
 3   <!ELEMENT note (to,from,heading,body)>
 4   <!ELEMENT to      (#PCDATA)>
 5   <!ELEMENT from    (#PCDATA)>
 6   <!ELEMENT heading (#PCDATA)>
 7   <!ELEMENT body    (#PCDATA)>
 8 ]>
 9 <note>
10   <to>Tove</to>
11   <from>Jani</from>
12   <heading>Reminder</heading>
13   <body>Don't forget me this weekend</body>
14 </note>
15 

如果 DTD 对于你的 XML 文件是外部而言,那么它会在含有以下句法构造的 DOCTYPE 声明中预先包装进去。如:

<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->1 <?xml version="1.0"?>
2 <!DOCTYPE note SYSTEM "note.dtd">
3 <note>
4 <to>Tove</to>
5 <from>Jani</from>
6 <heading>Reminder</heading>
7 <body>Don't forget me this weekend!</body>
8 </note>

下面是一份包含了 DTD "note.dtd" 文件副本:

<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->1 <! ELEMENT note (to,from,heading,body) >
2 <! ELEMENT to (#PCDATA) >
3 <! ELEMENT from (#PCDATA) >
4 <! ELEMENT heading (#PCDATA) >
5 <! ELEMENT body (#PCDATA) >  

1.6 XSL

XSL (全称是:可扩展的样式单语言,the eXtensible Stylesheet Language)CSS样式单功能要强大的多。XSL的一个主要的用途就是将XML文档转换成HTML格式的文件,然后再交付给浏览器,由浏览器显示转换的结果。XML的可扩展样式单语言。

1.7 XML 数据岛

HTML 页面中嵌入 XML 数据

使用非官方标准的 <xml> 标记可以将 XML 数据嵌入到 HTML 页面中。

XML 数据可以象下面的例子那样嵌入 HTML 页面 :

<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->1 <xml id="note">
2 <note>
3 <to>Tove</to>
4 <from>Jani</from>
5 <heading>Reminder</heading>
6 <body>Don't forget me this weekend!</body>
7 </note>
8 </xml>

或者象下面这样嵌入外部单独的 XML 文件 :

<xml id="note" src="note.xml">

</xml>

注意那个 <xml> 标记是一个 HTML 元素,而不是一个 XML 元素。

 

数据绑定

 

XML 数据岛可以绑定到 HTML 元素上(比如表格)。

在下面的例子中,一个 XML 数据岛( ID=cdcat )被从外部 XML 文档载入。一个 HTML 的表格绑定到此数据岛上。 HTML 表格内部的 span 元素使用 datafld 属性和 XML 文档相应的 XML 元素相互绑定。

<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--> 1 <html>
 2 <body>
 3 <xml id="cdcat" src="cd_catalog.xml"></xml>
 4 <table border="1" datasrc="#cdcat">
 5 <tr>
 6 <td><span datafld="ARTIST"></span></td>
 7 <td><span datafld="TITLE"></span></td>
 8 </tr>
 9 </table>
10 </body>
11 </html>
12 

 

写到这里想起原来看 js 的一个应用实例,以数据岛实现了无刷新分页程序。

代码如下:

<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->  1 
  2 
  3  <xml id="users">
  4 
  5 <userGroup>
  6 
  7   <user>
  8 
  9     <userid>user hcm</userid>
 10 
 11     <name>name hechangmin</name>
 12 
 13   </user>
 14 
 15   <user>
 16 
 17     <userid>user 2</userid>
 18 
 19     <name>name 2</name>
 20 
 21   </user>
 22 
 23   <user>
 24 
 25     <userid>user 3</userid>
 26 
 27     <name>name 3</name>
 28 
 29   </user>
 30 
 31   <user>
 32 
 33     <userid>user 4</userid>
 34 
 35     <name>name 4</name>
 36 
 37   </user>
 38 
 39   <user>
 40 
 41     <userid>user 5</userid>
 42 
 43     <name>name 5</name>
 44 
 45   </user>
 46 
 47   <user>
 48 
 49     <userid>user 6</userid>
 50 
 51     <name>name 6</name>
 52 
 53   </user>
 54 
 55   <user>
 56 
 57     <userid>user 7</userid>
 58 
 59     <name>name 7</name>
 60 
 61   </user>
 62 
 63   <user>
 64 
 65     <userid>user 8</userid>
 66 
 67     <name>name 8</name>
 68 
 69   </user>
 70 
 71   <user>
 72 
 73     <userid>user 9</userid>
 74 
 75     <name>name 9</name>
 76 
 77   </user>
color: rgb(0,
分享到:
评论

相关推荐

    XML轻松学习手册--XML肯定是未来的发展趋势,不论是网页设计师还是网络程序员,都应该及时学习和了解

    可是一大堆的概念和术语往往让人望而生畏,很多朋友问我:XML到底有什么用,我们是否需要学习它?我想就我个人学习过程的心得和经验,写一篇比较全面的介绍文章。首先有两点是需要肯定的:  第一:XML肯定是未来的...

    J2EE(Java EE)技术总结-J2EE学习精华教程-电子书

    .....XML_Schema(文档描述与校验技术之一) .....XML_DOM(文档编程接口之一) .....XML_SAX(文档编程接口之一) .....EJB体系结构 .....会话与消息驱动Bean .....AJAX .....JAXB .....Mail(邮件) .....Security(加密...

    jpivot学习总结.doc

    而一个 schema 文件就是编辑这个 schema 的一个 xml 文件。在这个文件中形成逻辑模型和数据库物理模型的对应。 3.2. Cube 一个 Cube 是一系列维度 (Dimension) 和度量 (Measure) 的集合区域。在 Cube 中, ...

    JSP针对XML文件操作技巧实例分析

    而这篇教程为什么把它放在J2EE下边呢,因为他也是J2EE的13规范之一,虽然XML是W3C万维网组织联盟指定的,并做了规范,所以说也是一种规范,我们也必须按照规范来,和JDBC,Servlet,Jsp,Ejb等一样的。 前边的文章...

    JavaScript学习总结之JS、AJAX应用

     AJAX(音译为:阿贾克斯) = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML),是指一种创建交互式网页应用的网页开发技术,也就是在无需重新加载整个网页的情况下,能够更新部分网页的技术。...

    As3殿堂之路学习笔记

    本文档基于学习AS3殿堂之路学习总结而来, 主要包括:数据类型,流程控制,字符串,数组,函数,类和对象,命名空间的介绍。 以及XML,视觉编程,显示编程,动画编程的总结。 提供需要学习As3的盆友一个更好思路。

    JavaScript学习心得之概述

    一、JavaScript是一种专为与网页交互而设计的脚本语言,它的的组成 ECMAScript(核心) DOM(文档对象模型) BOM(浏览器对象模型) 1.1ECMAScript  ECMA-262定义的ECMAScrip与Web浏览器没有依赖关系,ECMA-262...

    struts自我学习过程程序以及说明

    还有自我总结资料,放到下一个文件夹当中上传,这里压缩只有这么多了,希望能去下载,那个全部是文档。 国际化: Locales.java globalMessage_en_US.properties globalMessage_zh_CN.properties struts.properties ...

    《Android应用开发》个人总结报告.doc

    《Android应用开发》个人总结报告 刚开始接触Android感觉到它很有意思,在界面开发上和web也可以形成了相通的架构 ,更加方便,视觉上也是非常的酷,在前期我通过的大量的Android SDK开发范例大全中的例子以及...

    ROS2学习笔记之创建自己的功能包

    自定义 package.xml总结 学习目标: 使用CMake或Python创建一个新的包,然后运行其可执行文件。 背景 什么是ROS2的一个包? 一个包可以认为是一个存放我们ROS2代码的容器。当我们希望使用自己的代码或者将代码和他人...

    asp学习相关资料大全

    作为重要的基准测试可伸缩性和速度奖的记录保持者,SQL Server 2000 是一个具备完全 Web 支持的数据库产品,提供了对可扩展标记语言(XML)的核心支持以及在 Internet 上和防火墙外进行查询的能力。 4 系统分析 4.1 ...

    Think-In-Java:学习Java学习之路

    开发环境 开发工具:IDEA 2019.3.1 JDK版本:JDK 1.8 Maven版本:3.6.3 插件环境 杰森 招摇2 运行方式 提示:如果是fork的朋友,同步代码...Java设计模式学习与总结 LetCode刷题汇总 交流 如果大家有兴趣,欢迎大家一

    helloworld的qt

    还学习了Qt中多线程的使用,以及SQLite、MySql数据库在Qt中的应用,还有XML的简单使用…感觉学的不多,说起来似乎又说不完,但完全消化记在脑子里的是少之又少(接口过多,重要的还是要熟悉基本的事件处理、信号与槽...

    最新Python3.5零基础+高级+完整项目(28周全)培训视频学习资料

    内置模块详解之Xml模块 内置模块详解之Configparser模块 内置模块详解之Hashlib、Hmac模块 正则表达式Re模块使用详解 第6周 本节小鸡汤(电影分享) 面向对象介绍 面向对象特性介绍 实例演示opp编程好处 实例变量...

    PHP3程序设计

    PHP是最流行的Web脚本语言之一,它运行在Web服务器端,根据用户请求或服务器端的数据产生动态网页;它功能强大,和HTML脚本融合在一起,并内建访问数据库的能力;它能够作为Apache Web 服务器的模块执行,也使得其...

    SDN学习之Opendaylight浅析(四)

    前面主要对ODL的基础进行梳理和总结,其实基础只是学习的很小的一部分,更多的时候还要阅读源码,在官网上面查找资料,当然基础打牢是必须的,比如说在不同版本的odl对事务提交的返回的future也略有不同,但是提交所...

    asp.net知识库

    Asp.net 2.0功能体验,细节之Web控件(一) 隐藏控件 Asp.net 2.0功能体验,总体设计思想 Asp.net 2.0 WebPart使用经验点滴 革新:.NET 2.0的自定义配置文件体系初探 关于如何在ASP.NET 2.0中定制Expression ...

    xmljava系统源码-XTCLint:实现Android自定义Lint实践(CustomLintRules&LintPlugin)

    这个是基于当时Gradle2.x系列写出来的自定义Lint实践总结,过去大半年了,现在将它搬到CSDN博客分享给大家一起学习学习。如果要在Gradle3.x系列使用该自定义规定的话,部分代码都得修改成最新的语法,因此此篇博客的...

    Struts原理、开发及项目实施

    但软件架构的建立是一个复杂而又持续改进的过程,软件开发者们不可能对每个不同的项目做不同的架构,而总是尽量重用以前的架构,或开发出尽量通用的架构方案,Struts就是其中之一,Struts是流行的基于J2EE的架构方案...

    基于Java的Android应用程序开发-24点游戏源码+详细项目说明.zip

    首先从4个数字中有序地选出2个数字,并选择加、减、乘、除 4 种运算操作之一,用得到的结果取代选出的2个数字,剩下3个数字。然后在剩下的3个数字中有序地选出2个数字,并选择 4 种运算操作之一,用得到的结果取代...

Global site tag (gtag.js) - Google Analytics