第四章 XML语法
五.Namespaces的语法
Namespaces翻译为名字空间。名字空间有什么作用呢?当我们在一个XML文档中使用他人的或者多个DTD文件,就会出现这样的矛盾:因为XML中标识都是自己创建的,在不同的DTD文件中,标识名可能相同但表示的含义不同,这就可能引起数据混乱。
比如在一个文档<table>wood table</table>中<table>表示桌子,
而在另一个文档<table>namelist</table>中<table>表示表格。如果我需要同时处理这两个文档,就会发生名字冲突。
了解决这个问题,我们引进了namespaces这个概念。namespaces通过给标识名称加一个网址(URL)定位的方法来区别这些名称相同的标识。
Namespaces同样需要在XML文档的开头部分声明,声明的语法如下:
<document xmlns:yourname='URL'>
其中yourname是由你定义的namespaces的名称,URL就是名字空间的网址。
假设上面的"桌子<table>"文档来自http://www.zhuozi.com,我们就可以声明为
<document xmlns:zhuozi='http://www.zhuozi.com'>
然后在后面的标识中使用定义好的名字空间:
<zhuozi:table>wood table</table>
这样就将这两个<table>区分开来。注意的是:设置URL并不是说这个标识真的要到那个网址去读取,仅仅作为一种区别的标志而已。
如下例中的Html不能为HTML或html
<?xml version="1.0" encoding="gb2312"?>
<?xml-stylesheet type="text/css"?>
<books xmlns:Html="http://www.w3.org/Profiles/XHtml-transitional">
<book>
<Html:TABLE border="0" align="center">
<Html:form>
<Html:TR>
<Html:TD>NAME</Html:TD>
<Html:TD><Html:INPUT TYPE="TEXT"/></Html:TD>
</Html:TR>
<Html:TR>
<Html:TD>NAME</Html:TD>
<Html:TD><Html:INPUT TYPE="TEXT"/></Html:TD>
</Html:TR>
<Html:TR>
<Html:TD>NAME</Html:TD>
<Html:TD><Html:INPUT TYPE="TEXT"/></Html:TD>
</Html:TR>
<Html:TR>
<Html:CENTER>
<Html:INPUT TYPE="SUBMIT"/><Html:INPUT TYPE="RESET"/>
</Html:CENTER>
</Html:TR>
</Html:form>
</Html:TABLE>
</book>
</books>
六.entity的语法
entity翻译为"实体"。它的作用类似word中的"宏",也可以理解为DW中的摸板,你可以预先定义一个entity,然后在一个文档中多次调用,或者在多个文档中调用同一个entity。
entity可以包含字符,文字等等,使用entity的好处在于:1.它可以减少差错,文档中多个相同的部分只需要输入一遍就可以了。2.它提高维护效率。比如你有40个文档都包含copyright的entity,如果需要修改这个copyright,不需要所有的文件都修改,只要改最初定义的entity语句就可以了。
XML定义了两种类型的entity。一种是我们这里说的普通entity,在XML文档中使用;另一种是参数entity,在DTD文件中使用。
entity的定义语法为:
<!DOCTYPE filename [
<!ENTITY entity-name "entity-content"
]
>
例如我要定义一段版权信息:
<!DOCTYPE copyright [
<!ENTITY copyright "Copyright 2001, Ajie. All rights reserved"
]
>
如果我的版权信息内容和他人共享一个XML文件,也可以使用外部调用的方法,语法象这样:
<!DOCTYPE copyright [
<!ENTITY copyright SYSTEM "http://www.sample.com/copyright.xml">
]
>
定义好的entity在文档中的引用语法为:&entity-name;
例如,上面定义的版权信息,调用时写作:©right;
完整的例子如下,你可以copy下来存为copyright.xml观看实例:
<?xml version="1.0" encoding="GB2312"?>
<!DOCTYPE copyright [
<!ENTITY copyright "Copyright 2001, Ajie. All rights reserved">
]>
<myfile>
<title>XML</title>
<author>ajie</author>
<email>ajie@aolhoo.com</email>
<date>20010115</date>
©right;
</myfile>
七.DTD的语法
DTD是"有效XML文档"的必须文件,我们通过DTD文件来定义文档中元素和标识的规则及相互关系。如何建立一个DTD文件呢?让我们一起来学习:
1.设置元素
元素是XML文档的基本组成部分。你要在DTD中定义一个元素,然后在XML文档中使用。元素的定义语法为:<!ELEMENT DESCRIPTION (#PCDATA, DEFINITION)*>
说明:
"<!ELEMENT" 是元素的声明,说明你要定义的是一个元素;
声明后面的"DESCRIPTION",是元素的名称;
"(#PCDATA, DEFINITION)*>"则是该元素的使用规则。规则定义了元素可以包含的内容以及相互的关系。下面的表格概要列出了元素的规则:
2.元素规则表:
Symbol
|
含义
|
举例
|
#PCDATA
|
包含字符或文本数据
|
<MYFILE(#PCDATA)> 元素MYFILE包含一个文本数据
|
#PCDATA, element-name
|
包含文本和其它子元素
|
<MYFILE(#PCDTATA,TITLE)> MYFILE元素必须包含文本和TITLE子元素
|
,
|
使用逗号分隔排序
|
<MYFILE (TITLE,AUTHOR,EMAIL)> MYFILE元素必须依次包含TITILE,AUTHOR,EMAIL三个子元素
|
|
|
使用"|"表示或者
|
<MYFILE (TITLE | AUTHOR | EMAIL)> MYFILE元素必须包含TITLE,或者AUTHOR或者EMAIL子元素。
|
name
|
只能使用一次
|
<MYFILE (TITLE)> MYFILE元素必须包含TITLE子元素,而且只能使用一次。
|
name?
|
使用一次或者不使用
|
<MYFILE (TITLE,AUTHOR?,EMAIL?)> MYFILE元素必须包含TITLE子元素,而且只能使用一次;可以包含或者不包含AUTHOR和EMAIL子元素,但是如果使用,只能一次。
|
name+
|
使用至少一次或多次
|
<MYFILE (TITLE+,AUTHOR?,EMAIL)> MYFILE元素必须包含TITLE子元素,而且使用至少一次;接下来可以跟随AUTHOR子元素,也可以不跟;最后必须包含EMAIL子元素,而且只能使用一次。
|
name*
|
使用一次,多次,或者根本不使用
|
<MYFILE (TITLE*)> MYFILE元素可以包含一个,多个或者不包含TITLE子元素
|
( )
|
设置组,可以嵌套
|
<MYFILE(#PCDATA | TITLE)*> 元素MYFILE包含一个或者更多的文本或者TITLE子元素。
<MYFILE((TITLE*, AUTHOR?, EMAIL)* | COMMENT)> MYFILE元素必须包含一些内容,内容或者是一个注释;也或者是多个组,组里包含:一个,多个或者没有TITLE子元素,接着是一个或者没有AUTHOR子元素,再接着是一个必须的EMAIL子元素。
|
另外,我们还可以为元素定义属性,因为我们不推荐使用属性,在这里就不详细展开了。
最后,我们来总结一些前四章学习的内容,写一个包含DTD,XML,以及Script的简单实例,便于读者理解:
1.将下面文件存为myfile.dtd
<!ELEMENT myfile (title, author)>
<!ELEMENT title (#PCDATA)>
<!ELEMENT author (#PCDATA)>
2.然后建立XML文档myfile.xml:
<?xml version="1.0" encoding="GB2312"?>
<!DOCTYPE myfile SYSTEM "myfile.dtd">
<myfile>
<title>XML轻松学习手册</title>
<author>ajie</author>
</myfile>
3.建立HTML文档myfile.html
<html>
<head>
<script language="JavaScript" for="window" event="onload">
var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async="false";
xmlDoc.load("myfile.xml");
nodes = xmlDoc.documentElement.childNodes;
title.innerText = nodes.item(0).text;
author.innerText = nodes.item(1).text;
</script>
<title>在HTML中调用XML数据</title>
</head>
<body bgcolor="#FFFFFF">
<b>标题: </b>
<span id="title"></span><br>
<b>作者: </b>
<span id="author"></span><br>
</body>
</html>
4.用IE5.0以上浏览器打开myfile.html就可以看到效果了。
好了,到今天第四章结束,我们对XML已经有了一些基本的了解。第五章我将为大家讲解一个XMl实际应用的成功例子,展现XML的强大功能。让我们一起来看下一章:XML实例分析。
分享到:
相关推荐
Xerces是一个开放源代码的XML语法分析器。从JDK1.5以后,Xerces就成了JDK的XML默认实现 Xerces-C++ 的前身是 IBM 的 XML4C 项目。XML4C 和 XML4J 是两个并列的项目,而 XML4J 是 Xerces-J——Java 实现——的前身。...
XML Security项目是为XML安全标准(XML-Signature Syntax and Processing:XML数字签名语法和处理规则;XML Encryption Syntax and Processing:XML加密语法和处理规则)提供Java及C++实现的开源项目。它当前的Java类包中...
适合刚开始学习xml的人,能快速检查xml语法错误,不用安装,解压即用
XML语法.pdf
XML 语法规则 • Previous Page • Next Page XML 的语法规则很简单,且很有逻辑。这些规则很容易学习,也很容易使用。 所有 XML 元素都须有关闭标签 在 HTML,经常会看到没有关闭标签的元素: <p>This is a ...
Android开发 XML 语法规则,简单的介绍了一下android开发中,编写XML需要注意的一些事项。
XML 语法分析器 实验 课程设计
.4 为XML文档编写样式单... 40 .5 将样式单附加到XML文档上... 41 3.6 本章小结... 43 第4章 数据的结构化... 44 4.1 检查数据... 44 4.1.1 击球手... 44 4.1.2 投球手... 46 4.1.3 XML数据的组织... 46 4.2...
XML基础教程-电子教案...XML基础教程、第2章 XML语法、第3章 使用DTD规范XML文档、第4章 使用CSS格式XML文档、第5章 使用XSL转换XML文档、第6章 使用DSO显示XML文档、第7章 使用DOM访问XML文档、第8章 XML网络应用实例
创建XML文档必须遵守下列重要规则:必须有XML声明语句;是否有DTD文件;如果文档是一个\"有效的XML文档\"(见上一章),那么文档一定要有相应DTD文件,并且严格遵守DTD文件制定的规范。注意你的大小写,在XML 文档中,...
xml语法检查文件DTD的介绍和简单应用,是ppt课件
shell awk sed实现xml语法合法性 xml 格式验证xml格式检查 。不需要scheam文件,只验证符号的合法性
XML 基本语法,里面详细介绍了XML 基本语法,欢迎大家收藏。
XML的第一个词是\"扩展性\",这正是XML强大的功能和弹性的原因。XML的第二个词是\"标识\",这表明了XML的目的是标识文档中的元素...虽然XML的扩展性允许你创建新标识,但它仍然必须遵循特定的结构,语法和明确的定义。
xml语法 此资源 对于xml进行的详细的介绍,内包含约束等知识点,很详细
xml 数据库教程。个人收集,欢迎查看,下载。
a, 说出 XML 标签的语法 b, 写出 XML 的注释 c, 说出 XML 标签的属性语法 d, 说出 XML 标签的 CDATA 区 4,能够列举 DOM 和 SAX 解析的区别 a, 说出 DOM 解析的原理 b, 说出 SAX 解析的原理 c, 列举支持 DOM...
xml语法xml语法xml语法xml语法xml语法
第2章 XML语法 2.1 标记语法 2.1.1 字符 2.1.2 命名 2.2 文档部分 2.3 元素 2.3.1 起始标记 2.3.2 结束标记 2.3.3 空元素标记 2.3.4 标记:一个简单的例子 2.3.5 文档元素 2.3.6 子元素 2.3.7 元素嵌套 ...
namespaces通过给标识名称加一个网址(URL)定位的方法来区别这些名称相同的标识。entity翻译为\"实体\"。...一种是我们这里说的普通entity,在XML文档中使用;另一种是参数entity,在DTD文件中使用。