JiveJdon Community Forums
在线373人   首页   主题表   培训咨询   标签   精华   查搜   注册    登陆 RSS
首页 » 论坛 » J2EE/JavaEE/JEE/EJB/JSF等技术讨论
???en_US.forumThreadPrev.name??? 上一主题
  Go back to the topic 返回本主题   Go back to the topic listing返回主题列表
???en_US.forumThreadNext.name??? 下一主题
Go 总共有 1 回复 / 1
 发表新帖子   回复该主题贴
cc

悄悄话
发表文章: 275
注册时间: 2002年08月07日 23:47
XML入门的小介绍 2003年05月31日 11:33 到本帖网址 加入本帖到收藏夹 发送到手机 回复该主题
标签列表


XML入门的小介绍

一、小格式

格式自是不用说了。稍有基础的人应该看懂如下最简单的表示:
<?xml version="1.0"?>
<address>
<name>
<title>cc</title>
<first-name>
cc
</first-name>
<last-name>
McGoon
</last-name>
</name>
<street>
1401 Main Street
</street>
</address>

二、定义文档规范

但实际上,我们在写上面代码的时候要先定义XML的格式(语法规则),就好像要先生命变量再给变量赋值一样。

一种语法规则是DTD,DTD 语法不同于普通的 XML 语法。
另一种是XML Schema ,相对比较复杂的定义,XML Schema本身就是XML。

这是DTD的格式:
<!-- address.dtd -->
<!ELEMENT address (name, street)>
<!ELEMENT name (title? first-name, last-name)>
<!ELEMENT title (#PCDATA)>
<!ELEMENT first-name (#PCDATA)>
<!ELEMENT last-name (#PCDATA)>
<!ELEMENT street (#PCDATA)>

这是XML Schema的格式:
<xsd:schema xmlns:xsd=
"http://www.w3.org/2001/XMLSchema">
<xsd:element name=
"address">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref=
"name"/>
<xsd:element ref=
"street"/>
<xsd:element ref=
"city"/>
<xsd:element ref=
"state"/>
<xsd:element ref=
"postal-code"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>

<xsd:element name=
"name">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref=
"title" minOccurs="0"/>
<xsd:element ref=
"first-Name"/>
<xsd:element ref=
"last-Name"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>

<xsd:element name=
"title" type="xsd:string"/>
<xsd:element name=
"first-Name" type="xsd:string"/>
<xsd:element name=
"last-Name" type="xsd:string"/>
<xsd:element name=
"street" type="xsd:string"/>
</xsd:schema>

看起来啊XML Schema是很强大的定义语言。里面可以包含一些构造XML的逻辑,这里先不说了,大体上先有个印象吧。实际上一般的应用使用DTD足以了,我是比较喜欢用DTD定义。

以上的这些定义语句,放在XML文件的最上部分。例如:
<?xml version=
"1.0"?>
<!-- address.dtd -->
<!ELEMENT address (name, street)>
<!ELEMENT name (title? first-name, last-name)>
<!ELEMENT title (#PCDATA)>
<!ELEMENT first-name (#PCDATA)>
<!ELEMENT last-name (#PCDATA)>
<!ELEMENT street (#PCDATA)>
<address>
<name>
<title>cc</title>
<first-name>
cc
</first-name>
<last-name>
McGoon
</last-name>
</name>
<street>
1401 Main Street
</street>
</address>

三、解析器

XML定义完成以后,要想在java中使用,必须用解析器。解析器有标准的JDOM,SAX。

JDOM 的主要特性是它极大地减少了编写的代码数量。网上有jar包下载,例如jive论坛中的配置文件就有使用。仔细看看jive中如何使用Jdom的会比较受启发。我确实把jive中的那部分抽象提取出来了,作为自己的配置文件读取器。

四、疑点

命名空间-当你的XML发布在互联网上后,你自己定义的address会跟其他很多人的address重复。怎么区分呢?

<?xml version=
"1.0"?>
<customer_summary
xmlns:addr=
"http://www.xyz.com/addresses/"
xmlns:books=
"http://www.zyx.com/books/"
xmlns:mortgage=
"http://www.yyz.com/title/"
>
... <addr:name><title>Mrs.</title> ... </addr:name> ...
... <books:title>Lord of the Rings</books:title> ...
... <mortgage:title>NC2948-388-1983</mortgage:title> ...


最后要指出的是:名称空间定义中的字符串仅仅是字符串。对,这些字符串看似 URL,其实不是。您可以定义 xmlns:addr=
"mike",那也是有效的。名称空间唯一的重要性在于其唯一性;这就是为什么大多数名称空间定义看起来象 URL 的原因。XML 解析器不会到http://www.zyx.com/books/ 去搜索 DTD 或模式,它只是把那个文本作为字符串使用。这有些令人困惑,但名称空间就是这样工作的。


还是理解不出命名空间的意义有多大!?谁能说一下啊??

jackypeng

悄悄话
发表文章: 21
注册时间: 2003年04月23日 15:16
Re: XML入门的小介绍 2003年06月03日 10:15 到本帖网址 加入本帖到收藏夹 发送到手机 回复该主题
在XML中采用名称空间的是URI格式,这样可以做到全球唯一,
你可以去http://www.w3.org/TR/REC-xml-names/去看看
这个主题有 1 回复 / 1Go
???en_US.forumThreadPrev.name??? 上一主题
  Go back to the topic 返回本主题   Go back to the topic listing返回主题列表    返回页首返回页首
???en_US.forumThreadNext.name??? 下一主题
热点TAG: AOP cache 缓存 DDD EJB 集群 设计模式 Hibernate IOC JiveJdon OO RBAC Seam Spring Struts
正在读取,请等待...
google yahoo 新浪ViVi 365Key网摘 天极网摘 CSDN网摘 添加到百度搜藏 POCO网摘 博采网摘
查询本论坛内 回复超过的热门帖子
     回复该主题贴
标题
 
粗体 斜体 下划线 插入图片 插入代码 插入url链接 插入附件
内容
  每2分种自动备份发贴内容Ctrl-V粘贴取出,提问题前先查询标签列表

RSS 手机阅读 add to google add to yahoo
解惑之道在J道 ,打造中国最具影响力的的企业软件社区
OpenSource JIVEJDON v3.0 Powered by JdonFramework Code © 2002-08 jdon.com

anti spam