水木清华BBS精华区

水木清华BBS精华区--可扩展置标语言 (BM: takeiteasy inannan)
Generated by njzhjshydd@SMTH

水木清华BBS精华区

[2001-07-24]

Compiled by mry@SMTH


初识XML (BM: inannan)

编号 | 类别 | 标题 | 编辑日期
1 | 目录 | 简单文档 (BM: inannan) | 2001.05.25
2 | 目录 | XML系列介绍 (BM: takeiteasy) | 2001.04.20
3 | 目录 | 网友谈XML (BM: inannan) | 2001.05.30
4 | 目录 | 为什么要XML (BM: inannan) | 2001.05.25
5 | 目录 | About XML (BM: inannan) | 2001.05.25
6 | 文件 | 关于 XML 的十种观点 veb | 2000.05.28
7 | 文件 | [范文][XML]什 么 是 XML ? (转载) veb | 2000.05.27
8 | 文件 | [范文][XML]XML：新 世 代 网 页 标 示 ?veb | 2000.05.27
9 | 文件 | [范文][XML]XML意味什么？ (转载) veb | 2000.05.27
10 | 文件 | XML与SGML inannan | 2001.05.25
11 | 文件 | Perl与XML inannan | 2001.05.25
12 | 文件 | XML — —21 世 纪 的 “ 世 界 语” inannan | 2001.05.25
13 | 文件 | XML 与 第 二 代Web inannan | 2001.05.25
14 | 文件 | XML名称的一点历史 inannan | 2001.05.26
15 | 文件 | a comparetive view on html and xml inannan | 2001.05.26
16 | 文件 | XML:下一代Web语言(1) inannan | 2001.05.26
17 | 文件 | shaken but not stirred inannan | 2001.05.27
18 | 文件 | Dr.Bob 的 xml 观 inannan | 2001.05.27
19 | 文件 | 一种新的编程语言 inannan | 2001.05.27
20 | 文件 | 今天居然这么多文章 inannan | 2001.05.27
21 | 文件 | xml版走向问题初探 inannan | 2001.05.28
22 | 文件 | XML常见问题 inannan | 2001.05.30
23 | 目录 | XML与微软的.NET (BM: inannan) | 2001.05.30
返回上一页 回到上一级目录


简单文档 (BM: inannan)

编号 | 类别 | 标题 | 编辑日期
1 | 文件 | 最简单的中文XML文档 veb | 2000.03.10
2 | 文件 | 带DTD的XML文档 veb | 2000.03.10
3 | 文件 | 完整的xml文档,带xsl等 veb | 2000.07.19
返回上一页 回到上一级目录


标记，

<?xml version="1.0" encoding="gb2312"?>
<好/>

<!--
解释:
1.前面的空行和空格被忽略
2.第一句最好如上所示，如果第一句写一个中文的注释肯定错！！！
3.下面就是真正的XML文档了，可以随便定义标记，
但是要求配对，如<tag1>content</tag1>
如果其中的内容(content)为空，可以简写为<tag2/>
4.将文件保存为a.xml，打开该文件即可。
如果没法浏览，只好升级您的浏览器了 : (
5.如果显示出错信息，或者您向进一步了解XML请参见其他内容，谢谢。: )
//btw:直接把该文件保存为a.xml即可。
-->
返回上一页 回到目录 回到页首 下一篇


水木清华精华区_No Title

 <?xml version="1.0" encoding="gb2312"?>
<!--由be大侠和lishimen大侠提供-->
<!DOCTYPE 签到[
<!ELEMENT 签到 (主题?, 签到人, 昵称?, 日期)>
<!ELEMENT 主题 (#PCDATA)>
<!ELEMENT 签到人 (#PCDATA)>
<!ELEMENT 昵称 (#PCDATA)>
<!ELEMENT 日期 (#PCDATA)>
]>
<签到>
<主题>支持XML事业。</主题>
<签到人>网虫</签到人>
<昵称>XML虫虫</昵称>
<日期>2000年4月9日</日期>
</签到>
上一篇 返回上一页 回到目录 回到页首 下一篇


水木清华精华区_No Title

到http://xml.zixia.net去看吧您了!
上一篇 返回上一页 回到目录 回到页首


XML系列介绍 (BM: takeiteasy)

编号 | 类别 | 标题 | 编辑日期
1 | 文件 | [范文][XML]XML系列介绍(一) (转载) veb | 2000.05.27
2 | 文件 | [范文][XML]XML系列介绍(二)----怎么使用 veb | 2000.05.27
3 | 文件 | [范文][XML]XML系列介绍(三)XML的语法 (?veb | 2000.05.27
4 | 文件 | XML介绍（一） veb | 2000.05.28
5 | 文件 | XML介绍（二） veb | 2000.05.28
6 | 文件 | XML介绍（三） veb | 2000.05.28
7 | 文件 | XML介绍（四） veb | 2000.05.28
8 | 文件 | XML介绍（五） veb | 2000.05.28
9 | 文件 | XML介绍（六） veb | 2000.05.28
返回上一页 回到上一级目录


[范文][XML]XML系列介绍(一) (转载)

 发信人: DDG (导弹驱逐舰~雾的季节), 信区: XML
标 题: [范文][XML]XML系列介绍(一) (转载)
发信站: BBS 水木清华站 (Thu Apr 6 13:30:53 2000)

【 以下文字转载自 New_board 讨论区 】
【 原文由 aBadBoy 所发表 】
在学习XML之前你应该掌握什么?
下面是你应该基本要掌握的知识:
1.WWW, HTML 和有关网页的基本常识
2.几种常见的网站脚本语言:例如JavaScript和VBScript

什么是XML?
XML 全称是 EXtensible Markup Language
XML 是一种类似与HTML的语言.
XML 是被设计用来描述数据的语言.
XML 在XML中标志(tags,在html中就是类似与<a>,<input>之类的东西)是没有预先定义的.
必须要自定义需要的标志
XML 是能够自解释(self describing)的语言.
XML 使用DTD(Document Type Definition文档类型定义)来显示这些数据.

XML和HTML的主要不同的地方
XML不是HTML的替代品.
XML和HTML的用途是不同的

XML 是被设计用来描述数据和定焦与数据是什么.
HTML是被设计用来显示数据和定焦与数据是什么样子的

XML是关于数据的语言
HTML是关于如何显示信息的, XML是关于如何描述信息的.

XML是可扩展的
在HTML中所有的标志(tags)和文档结构都是预先定义好了的.我们只有权利使用那些标准
的HTML标志
XML允许我们自定义自己的标志和自己的文档结构.

XML是HTML的一种补充
非常重要的一点是我们要明白XML不是HTML的一种替代品.在将来最可能的是
网站开发者使用XML来描述网站所需数据和网站的结构,而HTML将用来格式化和显示这些数
据.

XML在将来的网站开发中的作用
我们将坚信HTML是一个网站的基础,而XML会成为网站开发的一个重要特色
也许它将挑起所有数据的处理和传输

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 162.105.170.66]
返回上一页 回到目录 回到页首 下一篇


[范文][XML]XML系列介绍(二)----怎么使用XML (转载)

 发信人: DDG (导弹驱逐舰~雾的季节), 信区: XML
标 题: [范文][XML]XML系列介绍(二)----怎么使用XML (转载)
发信站: BBS 水木清华站 (Thu Apr 6 13:30:57 2000)

【 以下文字转载自 New_board 讨论区 】
【 原文由 aBadBoy 所发表 】
XML 能够被用来分隔你的数据你的HTML
XML 也能够被用来在HTML文档内部保存数据
XML 能够被用来作为一种交换信息的格式
XML 能够被用来将数据保存到文件或数据库中

下面分别介绍:
XML 能够被用来分隔你的数据你的HTML
HTML页面是用来显示数据的.所以数据一般都保存在HTML页面内部.
而使用XML这些数据能够被保存到一个单独的XML文件中.
这种方法就能够让你集中来使用HTML格式化和显示,
并能够确保你对数据的任何改动都不必重新修改HTML代码

XML 也能够被用来在HTML文档内部保存数据
XML的数据也可以被当成"Data Islands"(数据岛)保存在HTML页面中.
这样你仍然可以使用HTML来格式化和显示数据.

XML 能够被用来作为一种交换信息的格式
在现实世界里,计算机系统和数据库中保存的数据格式是不兼容的
所以在很多的时候开发者面临的问题是如何通过internet来交换这些数据
如果把这些数据转换成XML能够大大降低这个工作的复杂性

XML 能够被用来将数据保存到文件或数据库中
运用程序可以用来读写和显示这些数据信息

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 162.105.170.66]


[范文][XML]XML系列介绍(三)XML的语法 (转载)

 发信人: DDG (导弹驱逐舰~雾的季节), 信区: XML
标 题: [范文][XML]XML系列介绍(三)XML的语法 (转载)
发信站: BBS 水木清华站 (Thu Apr 6 13:31:02 2000)

【 以下文字转载自 New_board 讨论区 】
【 原文由 aBadBoy 所发表 】
一个简单的XML文档例子:
<?xml version="1.0"?>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>

文档的第一行:一个应该经常包含的XML申明,它定义了XML文档的版本号
在这个例子中表示文档将使用XML1.0的规范.
<?xml version="1.0"?>

下一行定义了文档里面的第一个元素(element)也叫第一个元素为根元素:
<note>
再下面定义了根元素的四个子元素(分别是to, from, heading,和body):
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>

最后一行定义了根元素的结束标志
</note>

所有的XML元素都必须要有一个结束标志
在HTML中一些元素不必要有一个结束标志.
例如下面的代码在HTML中是合法的:
<p>This is a paragraph
<p>This is another paragraph
但是在XML中所有的元素都必须有一个结束标志,例如这样:
<p>This is a paragraph</p>
<p>This is another paragraph</p>

XML标志是大小写敏感的
XML标志是大小写敏感的.例如标志<Letter>是不同与标志<letter>的.
所有一个标志的开始和结束必须使用同样的大小写
例如下面是错误的
<Message>This is incorrect</message>
这样才正确
<message>This is correct</message>

所有的XML元素的嵌套必须正确
在HTML中一些元素是可以相互嵌套的,例如下面:
<b><i>This text is bold and italic</b></i>
但是在XML中所有的嵌套都必须这样:
<b><i>This text is bold and italic</i></b>

所有的XML文档都必须要有一个根标志
所有的XML文档都必须包含一个单独的标志对定义的根元素.
其他的元素都必须嵌套在这个根元素内.
所有的元素都可以有子元素.
但是子元素都必须是成对的并且正确的嵌套申明在他们的父元素内.
例如:
<root>
<child>
<subchild>
</subchild>
</child>
</root>

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 162.105.170.66]


XML介绍（一）

 发信人: lym (skylarker), 信区: XML
标 题: XML介绍（一）
发信站: BBS 水木清华站 (Sat Apr 15 01:37:40 2000)

XML全名是eXtensible Markup Language，中文译为“可扩展标记语言”，是用于标记
电子文件使其具有结构性
的标记语言。
XML是根据SGML(Standard Generalized Markup Language)所制定出来的， 所以XML可看
成是SGML的一部份子集
，且其设计目的是能广泛灵活地在World Wide Web上被应用
若将SGML比作“实数”集合，那么XML就可以看成是“整数”集合，XML本身就是SGML的
一个子集，在制定XML时
继承了许多SGML的优点，可以说XML与SGML都是一种metalanguage，可以用来制定其它的
标记语言（可以自己定
义自己的标记语言），且XML已将一些较复杂的SGML规则去除掉了，这使得XML在使用上
有SGML的富有弹性而无
其复杂度。
HTML起初被制定发展的的目标即被锁定在World Wide Web的网页设计上，而非是用来标
记一般性电子文件的标
记语言，且在Internet上的资料也不限只有网页的文件，有很多的应用像电子商务、图
书目录、商品行录、公
文电子文件....等等，各式各样的文件都随着时势潮流想在Internet流通，当然原先只
为网页量身定作的HTML
纵使再扩充HTML的控制标计也无法满足多样性的需求。
另外目前使用最广泛的浏览器IE与Netscape，也都自行扩充HTML的控制标记，结果导致
一份HTML网页在这两种
浏览器中可能会有不同的显示效果，这不但徒增网页设计者的困扰，也令网友困惑不知
使用那个浏览器才好。
XML是由XML Working Group所制定，该组织是由World Wide Web Consortium(W3C)赞助
的，且该组织的前身是
SGML Editorial Review Board，是一群熟知SGML的专家来制定XML规范的。且W3C已于1
998.02.10建议通过
XML1.0规范。
W3C网址如下：
http://www.w3.org

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.169.21]


XML介绍（二）

 发信人: lym (skylarker), 信区: XML
标 题: XML介绍（二）
发信站: BBS 水木清华站 (Sat Apr 15 01:39:16 2000)

XML是可以被用来设计网页，但它无法像HTML一样是专为网页设计用的，要将一个XML文
件当作网页来显示，必
須加上一个排版样式的档案，才能順利将XML文件的內容显示在浏览器中，因为XML文件
本身只是将文件资料结
构化，即使用眼睛也能轻易读懂XML文件的內容，但XML文件中并没有描述如何将该份XM
L文件显示出来，所以欲
将XML文件当网页显示在浏览器中就必须调用一个CSS，如此浏览器才知道如何将该份XM
L文件显示出来。当然若
同一份XML文件因调用不同的CSS，其显示的效果也会不同。
为何XML是可扩展的(extensible)？
XML是SGML的子集(subset)，且继承了SGML的一种metalaguage的功能，所以XML可以用来
制定产生其它特殊使用
目地的标记語言，故XML并非像HTML一样只针对某項特别应应用而制定的语言。
比如IE浏览器的Channel应用，即是采用XML为基础来设计Channel中的资料，而XSL、XL
ink、Xpointer...等等
，都是采用XML为基础规范来制定的。
IE4.0即有支持XML，在IE5.0中更内定有XML的parser，能帮助验证XML文件是否是well
formed。
至于Communicator 4.5尚未见其有支持显示XML文件的功能。

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.169.21]


XML介绍（三）

 发信人: lym (skylarker), 信区: XML
标 题: XML介绍（三）
发信站: BBS 水木清华站 (Sat Apr 15 01:40:24 2000)

目前以XML为基础的应用可以说是相当的多，几乎每天在Internet都会新出现以XML为基
础的应用，比如说较大
的主题如电子商务也将采用以XML为基础的文件来交换资料、商业行录、图书出版业、报
业印刷、公文...等等
，为了能让资料能在WWW上互为应用与交换，XML俨然以已成为internet上WWW应用的新一
代资料标准格式。
另外目前网友可由浏览器所提供的频道制作，看到且加利用有关XML的实际应用，IE与N
etscape浏览器的频道制
作说明如下：
IE浏览器：
频道采用Channel Definition Format (CDF)格式来定义制作，而CDF即是XML的一种应用
，被设计来提供推播频
道的技术。
Netscape浏览器：
由My Netscape Network(MNN)是一个免费个人网页服务中心，允许使用RDF Site Summa
ry(RSS) 0.9 格式来建
立个人的My Netscape Channel，Resource Description Framework (RDF) 在W3C的工作
草案中是采用XML的语
法规范。
RealAudio 公司：
新版的 RealPlayer G2 采用 W3C 制定的 SMIL (Synchronized Media Interchange La
nguage) 规格。

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.169.21]


XML介绍（四）

 发信人: lym (skylarker), 信区: XML
标 题: XML介绍（四）
发信站: BBS 水木清华站 (Sat Apr 15 01:41:51 2000)

XML使用的基本软件需求如下：
编辑XML文件软件：
一般文件编辑软件：如记事本、WordPad及专门的的XML文件编辑软件 Microsoft XML N
otepad
剖析器(parser)
well formed parser
IE5.0浏览器
validating parser
Microsoft msxml
显示XML文件
IE5.0浏览器、XML viewer
metalanguage有人译为“超语言”、“母语言”或“元语言”，这种语言可以用来定义
产生另一种新的语言，
例如HTML是采用SGML规范所制定出来的一种语言，因为SGML可以用来制定产生特殊应用
的语言，所以SGML即可
称为metalanguage。
XML是SGML的子集而非一种应用，因为XML继承了SGML的扩展性，但XML简化了SGML一些复
杂语法设定，所以XML
也是一种metalanguage，例如MathML(Mathematical Markup Language)和 Chemical Ma
rkup Language (CML)均
是XML的一种应用，其性质与HTML类似，主要是希望能将数学公式、化学公式也能以网页
显示在浏览器中。
一份XML文件若满足下列条件就可以说是valid document(合法文件)：
文件中必需包含DTD(Document type Definition)的声明。
文件中元素的出现顺序、数目、属性的使用、元件的参考...等等，都必须满足DTD中元
素、元件的使用法则规
定。
文件必需是well formed。

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.169.21]


XML介绍（五）

 发信人: lym (skylarker), 信区: XML
标 题: XML介绍（五）
发信站: BBS 水木清华站 (Sat Apr 15 01:43:26 2000)

arser中文可译为剖析器，是用来分析XML文件是否为正确(valid)或好格式(well form
ed)的文件，一般在XML
文件被应用软件使用之前都会先通过parser来检查，若检查出错就会被该应用程序拒绝
，故在写完一份XML文件
后都会先使用parser来检查是否有错误。
parser可分下面两种：
well formed parser:
只只检查XML文件是否有满足well formed的条件。
validating parser:
检查XML文件是否满足valid的条件。
不管是XML文件本身的內容还是元素的名称都可以使用中文，但重点并不在XML文件中是
否可以使用中文，而是
parser是否能接受中文。
目前知道IE5.0与MSXML都是有支持XML中使用BIG5码的繁体中文，但必须在XML文件中的
开头加以声明，参考下
例：
<?xml version="1.0" encoding="Big5"?>
XML与HTML被制定设计时的目标是不一样的，HTML是为网页设计而制定的，所以HTML着重
在如何将文件资料显示
出来，而XML是要制定一高弹性与扩展性的标记语言，使其能广泛用在WWW上的电子文件
中，主要着重在如何来
将文件结构化方便资料的交换。
网页资料当然也是一种电子文件，所以XML的应用范围也包含到网页，但这并不代表XML
就要取代HTML，因为
HTML在网页设计上依然扮演演着重要的角色，非XML短时间能取代的。
在一份XML文件中若能滿足下面的条件，就可称为XML文件是well-formed。
开始与结束的元素
如
<Name>Peter Line</Name> 或
<Book/>
层进结构
如
<Name>
<firstname>Peter</firstname>
<lastname>Line</lastname>
</Name>

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.169.21]


XML介绍（六）

 发信人: lym (skylarker), 信区: XML
标 题: XML介绍（六）
发信站: BBS 水木清华站 (Sat Apr 15 01:44:27 2000)

SL全名为eXtensible StyleSheet Language，中文可译为“可扩展样本语言”，其主要
功用是用来搭配XML文
件使用的，因为XML文件中并不描述其內容如何被显示出来，所以XML文件可以调用一XS
L文件，如此应用软件如
浏览器就能根据XSL文件中的描述，将XML文件的內容显示在浏览器中。
XSL规范也由W3C来制定，到目前最新的XSL规范是在1998.04.21出炉的，但仍在工作草案
(Working Draft)中，
尚未正式被W3C通过建议使用。
Microsoft的IE浏览器已有支持XSL的使用，可参考下面的网址：
XSL Developer's Guide
http://msdn.microsoft.com/xml/XSLGuide/default.asp
DTD(Document Type Definition)中文译为文件格式定义，主要是来描述XML文件中元素
的格式。一份DTD文件中
列出有一串的元素，且这些元素中只能有一个共同的父元素，即是该DTD文件的根元素，
在根元素之下可以包含
其它的元素，且元素中还可以设定属性。
在一份XML文件中可以引用DTD文件，来规范这份XML文件中各元素出现的顺序、次数是否
正确，若XML文件不引
用DTD文件，则XML文件中的元素出现的顺序与次数则无关系，只要这份XML文件是well
formed即可。
XML 与CSS(Cascading Style Sheet)的 搭配使用
语法：
<?xml-stylesheet href="filename" type="text/css" ?>

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.169.21]
上一篇 返回上一页 回到目录 回到页首


网友谈XML (BM: inannan)

编号 | 类别 | 标题 | 编辑日期
1 | 文件 | xml作用有多大 inannan | 2001.05.25
2 | 目录 | 我的一点想法 (BM: inannan) | 2001.05.25
3 | 目录 | 我对XML的一些理解 (BM: inannan) | 2001.05.25
4 | 目录 | xml是什么东东 (BM: inannan) | 2001.05.25
5 | 文件 | Re: 不明白xml优势在那? inannan | 2001.05.27
6 | 文件 | 基于XML的数据共享 inannan | 2001.05.30
返回上一页 回到上一级目录


xml作用有多大

 发信人: shinewu (小小的幸福), 信区: XML
标 题: xml作用有多大
发信站: BBS 水木清华站 (Thu Apr 6 18:24:42 2000)

最近总有人说xml是方向是旗帜
我个人觉得xml的确是解决了数据的表示问题
使得以前非常复杂异种系统数据交换的问题得到了
较好的解决
同时专注于数据及数据结构的表示
使得xml确实可以从html的繁文缛节里面脱离出来
但是说到底这是一种技术
只要是技术就会有一个先进性与实用可操作性
的问题
目前看来大家像催电子商务一样在催xml早日成仙
但是我想说xml确实任重道远

首先传统的技术将数据与表现合一
并不是一无是处
而且有大量优秀的软件和数据资源积累
xml要想杀出血路
必须要解决好现有资源的转化问题
这本身就是一个麻烦的事情
不过可以期望采用更换国家流通纸币的办法来解决
逐步完善，推广

其次xml本身解决的问题只是网络中目前的一个热点问题而已
我个人以为在很多方面都还需要加强
但是xml提供了一个解决问题很好的
平台，一个描述问题乃至考虑解决问题的框架（framework）
可是另一方面xml为了完成其海纳百川的作用
不得不作的有如posix一样
说起来是标准，做起来又是另一回事

所以最后看来作为技术前进中的一个亮点
学习和紧跟这个潮流是必要的
但是如果盲目的炒作
有如时下wap的一股潮那样
对于中国IT行业的发展我想并不是很有利的
个人愚见
还望大家不要笑话
∶)
--
很久以来一直想劝自己戒网
直到有一天发现自己已经离不开网络
从那以后就告诫自己不要尝试远离网络
就好比鱼儿不要远离池塘一样

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.205.0.209]
返回上一页 回到目录 回到页首 下一篇


我的一点想法 (BM: inannan)

编号 | 类别 | 标题 | 编辑日期
1 | 文件 | 我的一点想法 inannan | 2001.05.25
2 | 文件 | Re: 我的一点想法 inannan | 2001.05.25
3 | 文件 | Re: 我的一点想法 inannan | 2001.05.25
4 | 文件 | Re: 我的一点想法 inannan | 2001.05.25
返回上一页 回到上一级目录


我的一点想法

 发信人: veb (君), 信区: XML
标 题: 我的一点想法
发信站: BBS 水木清华站 (Tue Apr 11 16:14:32 2000)

我的近期目标是希望更多的人参与，
有一些志同道合的朋友，共同学习XML

XML 有不少的标准，想法都很好，如SVG，可以代替FLASH等
我个人觉得是需要一段学习的，
没有马上做一些应用的 念头，（以后可能会）
但是作一个XML 网站还是有的。（现在正在酝酿^_^）
可以方便大家，如一些例子，同时也做一些尝试。
（表面上好象有点象现有的一些网站 : (((
如www.xml.org.cn
www.xml.com)

现在就做具体的应用，我的观点是实验室型或研究型都很好，
因为，很多标准还没有出来，如schema等
现在投入太多可能会有问题。

可能大家说的做，就是做一些尝试吧.

--

Powered by eXtensible Markup Language

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.112.99.209]
返回上一页 回到目录 回到页首 下一篇


Re: 我的一点想法

 发信人: Nullgate (空门大师~补锅子的~用Perl), 信区: XML
标 题: Re: 我的一点想法
发信站: BBS 水木清华站 (Tue Apr 11 17:53:51 2000)

【 在 veb (君) 的大作中提到: 】
∶ 我的近期目标是希望更多的人参与，
∶ 有一些志同道合的朋友，共同学习XML
∶ XML 有不少的标准，想法都很好，如SVG，可以代替FLASH等
∶ 我个人觉得是需要一段学习的，
∶ 没有马上做一些应用的 念头，（以后可能会）
∶ 但是作一个XML 网站还是有的。（现在正在酝酿^_^）
∶ 可以方便大家，如一些例子，同时也做一些尝试。
∶ （表面上好象有点象现有的一些网站 : (((
∶ 如www.xml.org.cn
∶ www.xml.com)
∶ 现在就做具体的应用，我的观点是实验室型或研究型都很好，
∶ 因为，很多标准还没有出来，如schema等
∶ 现在投入太多可能会有问题。
你说的那些标准都是XML的应用。
这些都与XML标准无关，只是如何使它好看。XML已经是完整的了。
其实，如果是个人做网页，用XML没有任何实际意义。XML适合于那些重复性
大，生命周期短的数据。
如果只是用XML存储和交换数据，所以不用考虑什么schema或XSL，
真要表现数据，现学都来得及。

∶ 可能大家说的做，就是做一些尝试吧.

--
水木清华BBS网友自编自导自演五幕荒诞喜剧《仲夏夜之梦2000》
4月15日晚7：15，北京海淀剧院，令你意想不到的精彩！
欲知详情请关注Drama版最新动态。

Perl资源： http://166.111.160.5/nullgate/perl/

※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.160.216]


Re: 我的一点想法

 发信人: veb (君), 信区: XML
标 题: Re: 我的一点想法
发信站: BBS 水木清华站 (Tue Apr 11 18:11:09 2000)

【 在 Nullgate (空门大师~补锅子的~用Perl) 的大作中提到: 】
∶ 你说的那些标准都是XML的应用。
∶ 这些都与XML标准无关，只是如何使它好看。XML已经是完整的了。
∶ 其实，如果是个人做网页，用XML没有任何实际意义。XML适合于那些重复性
∶ 大，生命周期短的数据。
∶ 如果只是用XML存储和交换数据，所以不用考虑什么schema或XSL，
∶ 真要表现数据，现学都来得及。

有的探讨了。hehe
本来还不详说，刚开始，怕打消大家的积极性?nbsp;:P

1.关于其他都是XML应用的观点。
那学欧式几何一天搞定，4个公理/公设,ok?!
2.xml很完整
XML还很不完整，个人看法。这个再说。
3.交换数据不用考虑schema?
数据库中的类型，对应XML的schema，没有这个，
数据交换还差的远。

空门大师，言辞激烈点，海涵hehe

大家发表意见啊~~~

--

Powered by eXtensible Markup Language

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.112.99.209]


Re: 我的一点想法

 发信人: Nullgate (空门大师~补锅子的~用Perl), 信区: XML
标 题: Re: 我的一点想法
发信站: BBS 水木清华站 (Tue Apr 11 18:35:34 2000)

1.你非要等欧式几何，你不能自己搞一套非欧式几何？
关键的就是那几个公式，所有的定理都可以由公里推出

3.这要看你怎么用了。什么都等别人的标准么？XML是个工具，
是让人用的。我自己怎么用都行啊，比如foxmail的作者
可以用xml保存数据，可以保证前后兼容性（低版本可以使用
高版本数据，只是可能丢失信息）。如果只是应用别人的标准，
就算发财也是帮别人打工。

【 在 veb (君) 的大作中提到: 】
∶ 有的探讨了。hehe
∶ 本来还不详说，刚开始，怕打消大家的积极性?nbsp;:P
∶ 1.关于其他都是XML应用的观点。
∶ 那学欧式几何一天搞定，4个公理/公设,ok?!
∶ 2.xml很完整
∶ XML还很不完整，个人看法。这个再说。
∶ 3.交换数据不用考虑schema?
∶ 数据库中的类型，对应XML的schema，没有这个，
∶ 数据交换还差的远。
∶ 空门大师，言辞激烈点，海涵hehe
∶ 大家发表意见啊~~~

--
水木清华BBS网友自编自导自演五幕荒诞喜剧《仲夏夜之梦2000》
4月15日晚7：15，北京海淀剧院，令你意想不到的精彩！
欲知详情请关注Drama版最新动态。

Perl资源： http://166.111.160.5/nullgate/perl/

※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.160.216]
上一篇 返回上一页 回到目录 回到页首


我对XML的一些理解 (BM: inannan)

编号 | 类别 | 标题 | 编辑日期
1 | 文件 | 我对XML的一些理解 inannan | 2001.05.25
2 | 文件 | 我对XML的理解(2) inannan | 2001.05.25
3 | 文件 | 我对XML的理解(2) inannan | 2001.05.25
返回上一页 回到上一级目录


我对XML的一些理解

 发信人: Kaneson (嘟嘟可乐), 信区: XML
标 题: 我对XML的一些理解
发信站: BBS 水木清华站 (Tue Apr 11 17:45:48 2000)

XML与HTML最大的区别在于它将对信息的表现的描述与信息自身的描述分了开来，
而html只是象一个打印机描述语言一样描述说某个字是粗体还是斜体,但这些
字代表什么意义计算机就不知道了.

如要描述一篇论文,用HTML的话它看起来可能是这个样子：
<html>
<title>我的论文</title>
<body>
<b>我是标题</b>
<br>
<h2>我是正文</h2>
</body>
</html>

但如果叫你编一个程序让计算机判断一下这篇论文的名字是不是〈我们的生活真没劲〉
你除了用全文检索在整个文件中查找这个字符串你还有什么着?

但用XML就不一样了!
如果用XML来描述这篇论文，它可能看起来是这个样子

<?xml version="1.0" encoding="Big5" ?>
<!--这是注释: 定义数据类型先,这玩意儿和Backus范式差不多,大名叫做DTD
即Document Type Definition,你就把他当作我们编程时定义的变量就是啦!
下面的定义告诉我们在后面的XML中会用到这3种数据类型：
论文(article): 它由标题和内容(即正文)组成;
标题(title): 它可不是前面HTML语言中的哪个title,而是指论文的标题,它
由PCDATA组成,你就当它是ascII码就是啦
内容(content):同title,不再讲它
注释完！哇塞,好长的注释,累死我了! -->

<!ELEMENT article ( title, content) >
<!ELEMENT title (#PCDATA) >
<!ELEMENT content(#PCDATA) >

<!--这是注释: 下面就是论文的XML描述 注释完-->
<article>
<title>我是标题</title>
<content>我是正文</content>
</article>

然后我们看一下我们怎么完成上面提出的判断一下这篇论文的名字是不是〈我们的生活真
没劲〉的任务,

首先你把它交给一个叫XML Parser的程序分析, 所谓parser就是替你分析XML文件的程序
,并且该程序还提供了标准的API函数让你调用,比如类似getRoot, getChild这样的函数,
如getRoot会为你返回一个XML文档的根的那个元素,在我们的例子中就会得到article这
个元素.(至于XML Parser提供的API函数的标准,目前有两个标准:DOM和SAX, sax比较简单
)

接着讲怎么完成我们的任务,在我们把文档交给parser分析后,我们可以调用parser提供
的函数,从而可以得到该文档内容信息, 我们只需从parser返回的信息中判断是否有
一个title=〈我们的生活真..〉就行了

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 159.226.5.107]
返回上一页 回到目录 回到页首 下一篇


我对XML的理解(2)

 发信人: Kaneson (嘟嘟可乐), 信区: XML
标 题: 我对XML的理解(2)
发信站: BBS 水木清华站 (Tue Apr 11 18:03:19 2000)

书接前文,有的老兄也许会问,那么用XML描述的文档该怎么看呢?
我们注意到，前面的XML文档只定义和描述了数据，但对数据的外观
并没有做任何描述，是这个样子地！！！
一个完整的XML由3大部分组成：

# 用DTD或Schema来定义的数据类型
# XML描述的文档本身
# 关于数据的外观的描述(可以用CSS或XSL)

其中CSS和XSL就是用来描述文档外观的

也许有的人在浏览这个版时气得七窍生烟了--这帮土鳖,讲了半天,就是没有一个人
给我们看一个用XML做的网站的例子.

是这个样子地!就是用XML做的网站,它给浏览器送过来的可能html文档,XML文档在
web服务器那儿的产生过程是这个样子的:

数据库中的数据------------------->XML文档------------------->HTML文档--------...-----浏览器
由CGI程序或 怕你的浏览器看不了 将HTML文档给你
其他东东,如Servlet等 用XSLT转换成HTML 送去
生成XML文档

当然啦,如果你的浏览器对XML+CSS或XML+XSL的支持很好，那么在服务器端
就用不着给你转换成HTML文档给你送去了，他可以直接将XML+CSS的文档
给浏览器送去，浏览器就可以显示了,

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 159.226.5.107]


我对XML的理解(2)

 发信人: Kaneson (嘟嘟可乐), 信区: XML
标 题: 我对XML的理解(2)
发信站: BBS 水木清华站 (Tue Apr 11 18:12:18 2000)

关于相关的XML的资源入门的同志们请阅读台湾的两只老虎的PDF文件

下面我给大家给一个XML+CSS的例子,同志们在把他们存到硬盘上同一目录下后
就可以用IE5浏览,注意,由于用CSS定义了文档的显示样式,他不会看起来是
IE5默认的一个树结构!

file1: test.xml

<?xml version="1.0" encoding="gb2312" ?>
<?xml-stylesheet href="test.css" type="text/css" ?>
<books xmlns="http://2tigers.net/runpc/xml/dom_test"
xmlns:html="">http://www.w3.org/TR/REC-html40">

<book><title>我的人生观</title>
<author>吴孟达</author>
<price currency="人民币">590</price></book>
<book><title>我深爱的女人</title>
<author>周星驰</author>
<price currency="人民币">120</price></book>
</books>

file2: test.css

books, instruction, p { display: block }

book {
display: block;
float: none;
width: 240px;
margin-bottom: 8px;
background-color: #f1f1f1;
border: 1px solid #cccccc;
margin-left: 8px;
}

title {
display: block;
font-size: large;
font-weight: bold;
color: maroon;
cursor: pointer;
}

author {
display: block;
font-style: italic;
}

price:before {
content: "NT$ ";
}

price {
display: block;
color: green;
padding-left: 8px;
font-weight: bold;
}

input[type="button"] {
margin-top: 10px;
font-family: sans-serif;
font-weight: bold;
cursor: pointer;
}

testout {
color: red;
display: block;
}

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 159.226.5.107]
上一篇 返回上一页 回到目录 回到页首


xml是什么东东 (BM: inannan)

编号 | 类别 | 标题 | 编辑日期
1 | 文件 | Re: 请问xml是什么东东，有什么用途？tha inannan | 2001.05.25
2 | 文件 | Re: 请问xml是什么东东，有什么用途？tha inannan | 2001.05.25
3 | 文件 | Re: 请问xml是什么东东，有什么用途？tha inannan | 2001.05.25
4 | 文件 | Re: 请问xml是什么东东，有什么用途？tha inannan | 2001.05.25
5 | 文件 | Re: 请问xml是什么东东，有什么用途？tha inannan | 2001.05.25
6 | 文件 | Re: 请问xml是什么东东，有什么用途？tha inannan | 2001.05.25
7 | 文件 | Re: 请问xml是什么东东，有什么用途？tha inannan | 2001.05.25
8 | 文件 | Re: 请问xml是什么东东，有什么用途？tha inannan | 2001.05.25
9 | 文件 | Re: 请问xml是什么东东，有什么用途？tha inannan | 2001.05.25
返回上一页 回到上一级目录


Re: 请问xml是什么东东，有什么用途？thanks

 发信人: yangxuu (据说江西出美女), 信区: XML
标 题: Re: 请问xml是什么东东，有什么用途？thanks
发信站: BBS 水木清华站 (Fri Apr 7 10:37:36 2000)

【 在 hahame (忘记她) 的大作中提到: 】
XML全名是eXtensible Markup Language,是一种用来
存储信息的标记语言，可以说，HTML是XML的一个子集，
只不过HTML只用在Web上，而XML其余的子集还可用在化学
表示上（CML--Chemical Markup Language,能够表示化学
分子和化学反应）,软件描述上（SD--Open Software Description，
能够描述安装软件所需的信息，指导安装过程），还有数学上，
数据格式表示上，用途大大的。
我学了一个星期，现在对XML只有肤浅的认识，我觉得XML实际上
是自己先定义一套标识（或称为标记），然后用这套标识存储数据
（这和HTML没有什么两样），再自己写一个解释器，记住是自己写的
解释器，这样你可以在不同场合写不同的解释器，比如同样是一份
用XML表示的pdf文档，你要是想在屏幕显示，你就编一个显示器用的
解释器，你要是想在幻灯机上或者打印机上显示，那你就对这些标识
做不同的解释器，这就是XML中所说的结构和显示分开的说法。
XML的成功之处，在于他的规范的制定，完全不是商业性的，不象
HTML，各个浏览器有不同的解释器，让你不得不额外考虑浏览器的兼容
性问题。另外XML由于可以有统一而严格的标识方式，便于数据的提取和
分类，如果再和对象数据库相结合（是不是已经结合了，我不知道），前景
实在是很光明！
呼吁大家投入到XML的开发中，因为现在国外也是刚起步，我们如果能赶上
和超越，就可能把XML的中心移到中国来，那么21世纪的软件将有中国的一席
之地！

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: keg.cs.tsinghua]
返回上一页 回到目录 回到页首 下一篇


Re: 请问xml是什么东东，有什么用途？thanks

 发信人: veb (君), 信区: XML
标 题: Re: 请问xml是什么东东，有什么用途？thanks
发信站: BBS 水木清华站 (Wed Apr 12 17:01:28 2000)

【 在 yangxuu (据说江西出美女) 的大作中提到: 】
∶ XML全名是eXtensible Markup Language,是一种用来
∶ 存储信息的标记语言，可以说，HTML是XML的一个子集，
∶ 只不过HTML只用在Web上，而XML其余的子集还可用在化学
∶ 表示上（CML--Chemical Markup Language,能够表示化学
∶ 分子和化学反应）,软件描述上（SD--Open Software Description，
∶ 能够描述安装软件所需的信息，指导安装过程），还有数学上，
∶ 数据格式表示上，用途大大的。
∶ 我学了一个星期，现在对XML只有肤浅的认识，我觉得XML实际上
∶ 是自己先定义一套标识（或称为标记），然后用这套标识存储数据
随便定义
∶ （这和HTML没有什么两样），再自己写一个解释器，记住是自己写的
所以和HTML不一样
∶ 解释器，这样你可以在不同场合写不同的解释器，比如同样是一份

一般不用自己写解释器，用CSS/XSL就能很好的显示。
当然，如果要显示数学化学公式，而且浏览器没有，才需要自己写，
不过这些别人也都写完了，需要才写的。这是你可以取个新名字了，叫myXML什么的.
或MyML什么 的。

--

Powered by eXtensible Markup Language

※ 修改:·veb 於 Apr 12 17:02:33 修改本文·[FROM: 162.105.178.45]
※ 修改:·veb 於 Apr 13 17:18:23 修改本文·[FROM: 202.112.99.209]
※ 来源:·BBS 水木清华站 smth.org·[FROM: 162.105.178.45]


Re: 请问xml是什么东东，有什么用途？thanks

 发信人: zeropoint (张浪静), 信区: XML
标 题: Re: 请问xml是什么东东，有什么用途？thanks
发信站: BBS 水木清华站 (Sun Mar 4 18:53:15 2001)

"描述数据"和"描述数据内容"有什么差别呢？
偶不懂
一篇XML文档之中所保存的不就是数据吗？所以我说XML是数据存储的一种形式。
而且，在网页中所用到的“数据岛”中的数据不就是以XML结构来存储的码？
当然，实际上物理意义上所有数据都是存储在内存或硬盘上的。每个人的理解角度不同，
解释也不同。

【 在 bubbling (泡泡_HARD) 的大作中提到: 】
∶ 第一点存在严重概念错误。
∶ XML怎么会是“描述”元数据的呢？
∶ 数据存储的一种形式？也很不贴切。
∶ 实际上，XML就是SGML的简化子集
∶ （但是比html好在具有很强的可扩展性），
∶ 用于描述数据内容的，使信息表达更加规范
∶ 易于检索。

--
_____________
|__ | ____|
| ___| ____|
|__ | ____|
| | | ____|
| | | __ |

※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.106.232]


Re: 请问xml是什么东东，有什么用途？thanks

 发信人: hehao (醉生梦死), 信区: XML
标 题: Re: 请问xml是什么东东，有什么用途？thanks
发信站: BBS 水木清华站 (Sun Mar 4 19:01:29 2001)

呵呵
有区别啊。
就象盘子和菜的关系。 xml是盘子，菜是数据
【 在 zeropoint (张浪静) 的大作中提到: 】
∶ "描述数据"和"描述数据内容"有什么差别呢？
∶ 偶不懂
∶ 一篇XML文档之中所保存的不就是数据吗？所以我说XML是数据存储的一种形式。
∶ 而且，在网页中所用到的“数据岛”中的数据不就是以XML结构来存储的码？
∶ 当然，实际上物理意义上所有数据都是存储在内存或硬盘上的。每个人的理解角度不同，
∶ 解释也不同。

--

蜗牛角上争世上何事，石火光中渡崎岖此生.
随富随贫且难得随喜，不开口笑是呆过痴人.

小耗子题壁

※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.218.8]


Re: 请问xml是什么东东，有什么用途？thanks

 发信人: bubbling (泡泡_HARD), 信区: XML
标 题: Re: 请问xml是什么东东，有什么用途？thanks
发信站: BBS 水木清华站 (Sun Mar 4 20:11:07 2001)

呵呵，其实我们的理解基本没有什么不同。

但是，你那样解释对初学者很可能造成混淆啊。

用的你的逻辑，岂不是html也可以是数据存储的一种形式了？

关键得把XML与众不同的特色讲出来呀:)

【 在 zeropoint (张浪静) 的大作中提到: 】
∶ "描述数据"和"描述数据内容"有什么差别呢？
∶ 偶不懂
∶ 一篇XML文档之中所保存的不就是数据吗？所以我说XML是数据存储的一种形式。
∶ 而且，在网页中所用到的“数据岛”中的数据不就是以XML结构来存储的码？
∶ 当然，实际上物理意义上所有数据都是存储在内存或硬盘上的。每个人的理解角度不同，
∶ 解释也不同。

--
Book are one social mechanism for perserving the racial memory and
library one social aparatus for transfering this to the consciousness
of living individuals.

—— Pierce Butler

※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.160.61]


Re: 请问xml是什么东东，有什么用途？thanks

 发信人: xixidotcc (xixi), 信区: XML
标 题: Re: 请问xml是什么东东，有什么用途？thanks
发信站: BBS 水木清华站 (Sun Mar 4 21:50:31 2001)

【 在 bubbling (泡泡_HARD) 的大作中提到: 】
∶ 标 题: Re: 请问xml是什么东东，有什么用途？thanks
∶ 发信站: BBS 水木清华站 (Sun Mar 4 20:11:07 2001)
∶
∶ 呵呵，其实我们的理解基本没有什么不同。
∶ 但是，你那样解释对初学者很可能造成混淆啊。
∶ 用的你的逻辑，岂不是html也可以是数据存储的一种形式了？
∶ 关键得把XML与众不同的特色讲出来呀:)
//nod
∶
∶
∶ 【 在 zeropoint (张浪静) 的大作中提到: 】
∶ : "描述数据"和"描述数据内容"有什么差别呢？
这两者，XML更注重内容而不是数据。否则可扩展的标记没有意义了。
∶ : 偶不懂
∶ : 一篇XML文档之中所保存的不就是数据吗？所以我说XML是数据存储的一种形式。
∶ : 而且，在网页中所用到的“数据岛”中的数据不就是以XML结构来存储的码？
我不得不说，数据岛是xml应用中极其初级的阶段，而xml的基本应用，
应当是关心数据的内容与语义的。
∶ : 当然，实际上物理意义上所有数据都是存储在内存或硬盘上的。每个人的理解角度不同，
∶ : 解释也不同。
∶
∶
∶ --
∶ Book are one social mechanism for perserving the racial memory and
∶ library one social aparatus for transfering this to the consciousness
∶ of living individuals.
∶
∶ —— Pierce Butler
∶
∶
∶ ※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.160.61]

--

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.112.99.209]


Re: 请问xml是什么东东，有什么用途？thanks

 发信人: zeropoint (张浪静), 信区: XML
标 题: Re: 请问xml是什么东东，有什么用途？thanks
发信站: BBS 水木清华站 (Mon Mar 5 13:01:47 2001)

是啊是啊
看来数据无处不在
xixi
【 在 bubbling (泡泡_HARD) 的大作中提到: 】
∶ 呵呵，其实我们的理解基本没有什么不同。
∶ 但是，你那样解释对初学者很可能造成混淆啊。
∶ 用的你的逻辑，岂不是html也可以是数据存储的一种形式了？
∶ 关键得把XML与众不同的特色讲出来呀:)

--
_____________
|__ | ____|
| ___| ____|
|__ | ____|
| | | ____|
| | | __ |

※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.106.232]


Re: 请问xml是什么东东，有什么用途？thanks

 发信人: zeropoint (张浪静), 信区: XML
标 题: Re: 请问xml是什么东东，有什么用途？thanks
发信站: BBS 水木清华站 (Mon Mar 5 13:03:43 2001)

透彻！
【 在 xixidotcc (xixi) 的大作中提到: 】
∶ //nod
∶ 这两者，XML更注重内容而不是数据。否则可扩展的标记没有意义了。
∶ 我不得不说，数据岛是xml应用中极其初级的阶段，而xml的基本应用，
∶ 应当是关心数据的内容与语义的。

--
_____________
|__ | ____|
| ___| ____|
|__ | ____|
| | | ____|
| | | __ |

※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.106.232]


Re: 请问xml是什么东东，有什么用途？thanks

 发信人: jeffzhang (龙民★无题), 信区: XML
标 题: Re: 请问xml是什么东东，有什么用途？thanks
发信站: BBS 水木清华站 (Mon Mar 5 20:25:10 2001)

数据和元数据的区分主要针对具体应用环境而言
XML适合描述数据，因为它对数据的结构化程度适应性强，从完全无结构的文本到
数据库的平面文件，它都能以适当的方式编码；
XML适合表示元数据，因为它对文档的层次关系和链接关系有出色的表现能力，再加上
RDF这个出色元数据表示工具主要基于XML，XML的地位就更稳固了

【 在 zeropoint (张浪静) 的大作中提到: 】
∶ "描述数据"和"描述数据内容"有什么差别呢？
∶ 偶不懂
∶ 一篇XML文档之中所保存的不就是数据吗？所以我说XML是数据存储的一种形式。
∶ 而且，在网页中所用到的“数据岛”中的数据不就是以XML结构来存储的码？
∶ 当然，实际上物理意义上所有数据都是存储在内存或硬盘上的。每个人的理解角度不同，
∶ 解释也不同。

--

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.119.11.127]
上一篇 返回上一页 回到目录 回到页首


Re: 不明白xml优势在那?

 发信人: flier (小海 //爱喝可乐^_^), 信区: XML
标 题: Re: 不明白xml优势在那?
发信站: BBS 水木清华站 (Wed Jul 12 12:32:17 2000)

就我的理解，目前XML在作为无差别数据载体，和作为
数据交换媒介方面是存在其特有优势的……

从一个应用程序来看，对数据或者说是信息，无非有两种处理需求，
一种是内部的，独有的，如数据的表示、存储、解释等等
一种是外部的，联系的，如不同程序间或程序不同部分之间的数据交换
我认为这两个部分可以含盖一个应用程序的大部分需求，而XML在这两个方面
都提供了很好的解决

在第一种需求方面，我最感兴趣的是XML的自描述性，以及其最终
形式的可读性，加上其文本，OO等特性，可以解决大多数问题
虽然在性能上目前可能无法与毕竟成熟的技术相比，但是我相信这种
反朴归真的思想在一定时间内会占主导地位……

而在第二种需求方面，我觉得程序和人一样是社会性的
没有不与他人和社会打交道的人，也没有不与其他程序打交道的程序
从某种程度上讲，这方面的需求比第一种更重要
特别是近几年程序向组件化、分布式发展，需求尤为突出
在这方面已经有过非常多有益的尝试，现在现成规模的
如cobra,com，他们是从二进制层面去解决这个问题的
xml则是从文本去尝试解决，我觉得他们并不冲突，反而可以互补
毕竟文本方式在很多方面有其特有的优势……

时间有限，不能长篇大论，有些想法没有办法说清，
有些看法也很不成熟，希望大家指正……:)
【 在 rogerl (西门吹水) 的大作中提到: 】
∶ 昨晚考完试后，花了3个小时看了一本有关xml方面的书。
∶ 本来我一直对xml有一种好感，那就是潜意识地认为xml
∶ 能处理动态数据，什么动态载入等！但昨晚的3个小时另我
∶ 彻底改观。正如大家所知的是xml是sgml的一个子集，xml其实
∶ 和html一样都是一种格式规范，不同的是html是各浏览器都支持
∶ 的规范，而xml则不是。这也正是xml强大的地方，说是可根据
∶ 自己的要求扩展。自己可以定义自己的数据格式！这有一个问题就
∶ 是正是它的自由性，使得它的被理解性差了，人家不知道你的数据
∶ 格式时，根本无法处理你的数据。这也意味着我们要用xml，就必须
∶ 编写自己的xml分析器。我昨晚看的那本书，它选择的是java,用到的
∶ 类库是microsoft的com.ms.xml包。我看其中的例子，无非都是用类库
∶ ...................

--
. 生命的意义在于 /\ ____\ /\_ \ /\_\ .
. 工作、 \ \ \___/_\/\ \ \/_/__ __ _ _★ .
. 希望、 \ \ ____\\ \ \ /\ \ /'__`\ /\`'_\ .
. 爱你的人、 \ \ \___/ \ \ \___\ \ \/\ __//\ \ \/ .
. 和你爱的人 \ \___\ \ \_____\ \__\ \____\ \ \_\ .
. …… \/___/ \/_____/\/__/\/____/ \/_/ @126.com .

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.114.32.11]


Re: 能不能讨论讨论基于XML的数据共享，国外很热

 发信人: uml (衰人), 信区: XML
标 题: Re: 能不能讨论讨论基于XML的数据共享，国外很热
发信站: BBS 水木清华站 (Fri Nov 10 01:28:14 2000)

【 在 AirSupply (小唐·解析器~~梦) 的大作中提到: 】
∶ 比如呢?
∶ 共享是在不同设备之间的还是什么别的?
∶ 相关站点?

共享是不是指的是内容的共享?
比如:一个网站上可能有大量的内容信息,它们用xml表示,
而对该网站的访问方式可能有多种,也就是多种接入方式,
如PDA,http,wap等,结合不同的XSL,能够满足这些需求,
这样一来,也就实现了内容的共享.
但是同时,我认为为了管理这些内容,在服务器端应该有一个内容管理系统,
其中又会涉及到xml表示的内容的存储,查询等问题.
谁能发表一下意见呢?

--

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.112.137.7]
发信人: mvm (米兰~~屋檐下的木帏幕), 信区: XML
标 题: Re: 能不能讨论讨论基于XML的数据共享，国外很热
发信站: BBS 水木清华站 (Sat Nov 11 08:05:14 2000)

其实，我觉得，xml还有很多可以应用得地方。
比如——呵呵，我来举个我在做项目时得小想法：
在应用程序中难免要将一个对象序列化(Serialize)到本地文件中，
如果对Parser(比如DOM型得，比较好用）使用熟练得话，
将对象序列化成一个xml文件，就要比序列化成自定义得格式要
好——这样存储文件得格式就open而且标准化了，有利于从
一个程序export到另一个程序。

【 在 AirSupply (小唐·解析器~~梦) 的大作中提到: 】
∶ 都说XML最好的应用是:
∶ 企业信息门户
∶ 知识管理/内容管理/文件管理
∶ 即时信息传送
∶ 其中KM系统里面就涉及了你谈到的这些问题, 不过可能你想得还多一些了, 比如多设备

--

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.112.26.49]
发信人: mvm (米兰~~屋檐下的木帏幕), 信区: XML
标 题: Re: 能不能讨论讨论基于XML的数据共享，国外很热
发信站: BBS 水木清华站 (Sat Nov 11 08:08:50 2000)

其实，我觉得，目前业界的思路有点被限制死了，
谈到电子商务就是bb、bc、bg、cc这么几样，
谈到电子商务的技术就是logistic、payment、website、security，
谈到java就是跨平台硬件无关，
谈到xml就和b2b数据交换挂钩，
谈到数据挖掘就将那个啤酒尿布的例子，
...，不一而足，
其实，只要到研发第一线走一圈，会发现很多非常生动的例子，
昨天就又发现两个很不错的应用，等回忆好贴上来。

【 在 uml (衰人) 的大作中提到: 】
【 在 AirSupply (小唐·解析器~~梦) 的大作中提到: 】
∶ 比如呢?
∶ 共享是在不同设备之间的还是什么别的?
∶ 相关站点?

共享是不是指的是内容的共享?
比如:一个网站上可能有大量的内容信息,它们用xml表示,
而对该网站的访问方式可能有多种,也就是多种接入方式,
如PDA,http,wap等,结合不同的XSL,能够满足这些需求,
这样一来,也就实现了内容的共享.
但是同时,我认为为了管理这些内容,在服务器端应该有一个内容管理系统,
其中又会涉及到xml表示的内容的存储,查询等问题.
谁能发表一下意见呢?

--

--

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.112.26.49]
上一篇 返回上一页 回到目录 回到页首


为什么要XML (BM: inannan)

编号 | 类别 | 标题 | 编辑日期
1 | 文件 | 为什么要XML(一) veb | 2000.05.27
2 | 文件 | 为什么要XML(二) veb | 2000.05.27
3 | 文件 | 为什么要XML(三) veb | 2000.05.27
返回上一页 回到上一级目录


为什么要XML(一)

 发信人: lingi ( linger), 信区: XML
标 题: 为什么要XML(一)
发信站: BBS 水木清华站 (Thu Apr 6 14:57:22 2000)

转自：chinaasp->xml

以示非纯净水

    這份文件討論使用「延伸性標示語言 (Extensible Markup Language；XML)」作為
資料的標準格式。它提供了 XML 的總覽、為何誕生，以及為什麼它對呈現以及交換資料
而言，是如此地具有價值，而且是十分有用的技術。

為什麼要使用 XML？
Web 讓我們可以和任何地方的任何人通訊。廣為接受的標準讓網路通訊可以架構在，以交
互作業技術為基礎的許多階層上，這些標準對於讓網路的使用發揮到極致，是十分重要的
。其中有一個重要的階層，就是視覺化顯示與使用者介面，例如 HTML、GIF 以及
JScript&#8482;
等目前標準。這些標準可讓頁面在建立後，讓許多接收者無限次顯示。

雖然視覺化和使用者介面標準，是一個不可或缺的階層，但對呈現且同時要管理資料而言
，功能仍顯不足。在今日，Internet 只是一個存取文字及圖片的媒體。並沒有標準可以
用於智慧型搜尋、資料交換、調整式呈現以及個人化。Internet
不只是是設定資訊存取和顯示的標準。它必須更進一步設定解讀資訊的標準，一個共同的
表示資料方式，讓軟體得以執行更佳的搜尋、移動、顯示和操作隱藏在文字深處的資訊。
HTML 並不具這樣的功能，因為它只是陳述網頁的外觀格式，而不表示資料。例如，HTML
不會︰

提供一個標準方式，讓醫生傳送處方給藥劑師。

讓醫學研究室以某一資料格式發行統計資訊，而任何接收者皆可據以分析。

描述一張表格的電子支付款項，而任何收件者皆可以解讀及處理。

提供一個標準的法律檔案庫搜尋方式，以找尋特定主題的所有訴訟文件。

指定公司型錄資訊的傳輸方式，讓業務員可以離線工作、將型錄呈現給客戶、接單，然後
使用標準格式上載這些訂單。

簡言之，雖然 HTML 可以提供豐富的顯示機能，卻不能提供一個管理資料的標準方式。

一個標準的資料表示方式將會擴展 Internet，就如同幾年以前的 HTML
標準對於顯示方式。資料標準將會是商務交易、個人偏好設定檔的發佈、自動化合作以及
資料庫共用的一種工具。醫療記錄、藥學研究資料、半導體零件單以及採購單都將會以此
格式填寫。基於標準的資料表示方式，讓網路間傳送結構化資料，變得和今日在網路上傳
送 HTML
頁面一樣簡單，它將會啟發更多樣的新用法。這個資料標準就是 XML 以及 XML 的擴充功
能。

什麼是 XML？
XML 是一種中介標示語言（meta-markup language），可提供描述結構化資料的格式。這
有助於內容的精確宣告，並讓跨多重平台的搜尋結果符合原意。此外，XML 也將促成新一
代的網路資料檢視與資料運作的應用程式。

資料的結構式表示法
XML 提供資料的結構式表示法，它可以輕易地開發並廣泛地施行。XML 是 SGML的子集合
，並針對網路傳遞做了最佳化。由 World Wide Web Consortium (W3C) 所定義。XML 確
保結構化資料的格式一致，並且不受應用程式或廠商影響。
其所形成的交互作業性，促成了新一代業務與電子商務的 Web 應用程式。

XML 提供了一種資料標準，可以對許多簡單或複雜的專案、表達其內容、語意和結構，它
可以用以標示下列項目︰

一份普通的文件。

一筆結構化的資料錄，如約會記錄或採購單。

一個具有資料和 method 的物件，如 Java 物件或 ActiveX 控制項的固定格式。

一組資料錄，如一組查詢的結果。

有關網站的中介內容（Meta-content），如「Channel Definition Format (CDF)」。

圖形的呈現，如應用程式的使用者介面。

標準的結構項目及類型。

網路上人員及資訊之間的所有連結。

一旦資料下載至用戶端，便可以據以運作、編輯，或以各種方式檢視，資料毋需往返伺服
器。伺服器因而可以是任何大小，因為運算負荷和頻寬負荷的需求都比較降低。同時，因
為資料均以 XML 格式交換，可以輕易的合併不同來源的資料。

XML 對 Internet ，以及大型企業的內部網路環境，都是十分具有價值，因為它藉由一個
開放式，且具有彈性的標準格式，來提供交互作業性。以嶄新的方式來使用長年經營的資
料庫，並將資料傳遞到 Web
的客戶端。應用程式可以更快速地組建、更容易地維護，並且可以輕易地對結構化資料，
做多角度的檢視。

XML 文件
XML 是特地設計來儲存和傳輸資料，以文字為基礎的格式。在許多方面與 HTML 類似。
XML 來源檔是由 XML 元素所組成，每一個元素皆含有起始標註 (<title>) 和結束標註
(</title>)，以及位於兩個標註之間的資訊（亦即內容）。一如 HTML，XML
文件包含以標註註解的文字。不過，與 HTML 不同的是：XML 允許無限制的標註組，每一
組標註所代表的不是物件的外觀，而是物件的含意。例如，XML 的某元素，可能被標註為
價格、訂單編號或品名。完全由文件的作者決定，要使用何種資料，以及哪一種標註名稱
最合適。

建立 XML 文件很容易。如果您熟悉 HTML，您可以迅速地學習如何使用 XML 編寫。在以
下範例中，XML 被用來描述氣象報告。此檔可以使用 XML 的副檔名儲存，如
Weather.xml。

<weather-report>
      <date>March 25, 1998</date>
      <time>08:00</time>
      <area>
            <city>Seattle</city>
            <state>WA</state>
            <region>West Coast</region>
            <country>USA</country>
      </area>
      <measurements>
            <skies>partly cloudy</skies>
            <temperature>46</temperature>
            <wind>
                  <direction>SW</direction>
                  <windspeed>6</windspeed>
            </wind>
            <h-index>51</h-index>
            <humidity>87</humidity>
            <visibility>10</visibility>
            <uv-index>1</uv-index>
      </measurements>
</weather-report>

這些標註指出每一項資料的意義，它是否為 <date> 項目、<area>
元素等等，而非說明資料顯示的順序及樣式。這個資料的任何一個接收者，都可以解讀此
份文件，並且照自己的目的來運用它。例如：某人可能用它來擬定今天的計畫；而某個氣
象研究員，則可能用它作為西雅圖氣象記錄中的資料。

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.144.40]
返回上一页 回到目录 回到页首 下一篇


为什么要XML(二)

 发信人: lingi ( linger), 信区: XML
标 题: 为什么要XML(二)
发信站: BBS 水木清华站 (Thu Apr 6 14:59:27 2000)

转自：chinaasp->xml

可延伸性
在 XML 中，可以定義無限量的一組標註。HTML 標註只能用來指定文字要以粗體或斜體顯
示； XML 卻提供了一個標示結構化資料的架構。一個 XML 元件可以宣告與其相關的資料
為零售價、營業稅、書名、雨量或其他任何資料元素。隨著網際網路上的許多機構逐漸採
用 XML
標註，便會有搜尋並操作，任何用程式中之資料的相關功能出現。一旦鎖定資料，便可以
任何方式透過電纜線傳遞，並在瀏覽器中呈現，或者轉交到其他應用程式做進一步的處理
或檢視。

標註代表一項資料。它通常對應到表格中的一個欄位。但是，也不盡然如此。這個標註也
可能是一個經過計算的欄位（價格乘以數量）。XML 檔案並不一定得代表表格中的資料。
只是 XML 會經常代表牽涉數個表格的查詢結果。只要接收資料的應用程式可以解讀 XML
中的資料，資料來自何處，如何進到 XML 檔案中，便無關緊要了。

資料的呈現和處理是分開的
XML 的功能強大與迷人之處，在於它保持使用者介面與結構化資料的獨立。HTML 敘述如
何在瀏覽器中顯示資料，XML 則定義其內容。在 HTML 中，您使用標註來告訴瀏覽器將資
料顯示成粗體或斜體；而使用 XML，您只要使用標註來描述資料，如程式名稱、溫度和氣
壓。在 XML
中，您會使用樣式表（如「延伸性樣式語言 (Extensible Style Language - XSL)」和「
衍生樣式表 (Cascading Style Sheets - CSS)」在瀏覽器中呈現資料。XML 將資料的呈?nbsp;
F及處理分隔開來，只需套用不同的樣式表和應用程式，即可照希望顯示並處理資料。

將資料由呈現式中抽離，使得多方來源的資料可以完全整合。客戶資訊、採購單、研究結
果、帳單付款、醫療記錄、型錄資料和其它來源的資料，可以在中間階層轉換成 XML，讓
資料在線上交換，就像現在用 HTML 頁面顯示資料一樣簡單。用
XML撰寫的資料，隨後可以由網路傳遞到桌面。儲存在大型電腦資料庫或文件中的既有資
訊，不需重組。且因為使用 HTTP 來傳遞 XML，無需額外修改，便可使用此項功能。

讓 XML 的資料可以自我表述
採用 XML，文件類型定義 (Document Type Definitions - DTD) 便會附在文件中。基本
上，它會定義，有哪些元件，及元件之間的結構關係等，的文件規則。 當接收的應用程
式不具輸入資料的說明時，DTD 可以協助辨識資料。不過，DTD 並非必要元件。

與 DTD 一起傳送的資料稱為「可驗證的」 XML。在此例中，一支XML 剖析程可以核對輸
入資料與 DTD 所定義的規則，以確認資料的結構是否正確。資料傳送時，不具 DTD 的，
稱為「已格式化」。在此，一份以 XML
編寫的文件，如前所示的階層式的結構化天氣資料，可以用來表述自身。

不論是使用「可驗證的」或「已格式化」的 XML，由XML 撰寫的資料均可自我表述，因為
用來描述的標註，已經含在資料中。 XML 所使用的開放式、具彈性的格式，讓它在任何
要需交換並轉換資訊的地方，都可以被採用。這點，讓它變得十分有用。

例如，XML 可以用來陳述 HTML 頁面，或可以用來陳述包含在業務規則，或電子商務交易
中之物件的資料。如發票、採購單以及訂購單。因為 XML 有別於 HTML，所以 XML 可以
加進 HTML 文件中。 W3C 已經定義了一種格式，XML 資料或 XML 資料島（data islands
）都可以駐進 HTML
頁面。藉由在 HTML 頁面內嵌 XML 資料，籍由內含在 XML 中的語意資訊，可以對傳遞來
的資料，採取不同角度的檢視。XML 也可以用來強化，像是分散式列印、資料庫搜尋之類
的應用程式。

Schemas
Schemas是 XML 文件規則的正式陳述，也就是元件名稱，它指定文件中所允許的元素，及
其可能的組合。新Schemas 的語言（如定義於 XML-Data Working Group 提交至 W3C 的
XML-Data and Document Content Description (DCD)提案，提供和DTD相同的功能。不過
，因為這些 Schemas
語言都是可擴充的，開發人員可以使用額外資訊，如資料類型、繼承性以及呈現規則，來
加強它。這使得這些新的 Schemas 語言，遠比 DTD 的功能更為強大。

利用 XML 資料和 DCD，Microsoft 和其他公司已經提出，使用 XML 來表達 XML 文件架
構的辭彙。讓 XML 的資料可以表述自身的結構。在 XML 中敘述 Schema，為 XML 格式挹
注了強大的功能。因為，自此以後，軟體無需內建任何資料結構的陳述，可以籍由解譯某
些資料來瞭解其結構。

藉由 Schema 的使用，作者可以精確地定義文件中，所許可的元件名稱，以及在每一個元
件中，允許何種子元件、屬性和關係。作者可以從其他架構匯入 Schema 的片段，然後經
由繼承以擴充其類型。這可允許元件間擁有複雜的關係，但仍維持語彙樹狀目錄結構的簡
單性。

作者可以創作自己的 Schemata，或共用其他人所建立的 Schemata。讀者可以檢查
Schemata，來驗證他們接收到的文件類型是否正確。它們也可以使用 Schema 中的 資訊
，自行辨認文件的結構。

想採用 XML 的公司，需要有一個簡單的方式，來尋找其他公司和應用程式所支援的
Schema、文件和業務流程的相關資訊。試想，若每一個企業都要定義自己的方式以發表資
訊，對使用者或企業而言，成本將是十分龐大的。即便使用
Web，其設定和維護網站的相關成本，也超過許多企業所能負荷的金額。由於可以發表資
訊的企業無以計數，缺乏一個標準以定義，如何能以安全，且可掌控的方式發表資訊，將
會導致數以千計的不同執行方式、導覽方式以及內容的深度。讓這種 "瘋狂"
的環境繼續滋長，成本的負擔將會波及使用者。

Microsoft 決定以建立和管理 http://www.biztalk.org/ 。的方式來減輕問題。這個站
台將成長為一個入口網站，以尋找、管理、學習新知和公佈 XML、XSL以及和數以千計之
應用程式，所使用的資訊模型。一個完整功能的線上Schema存放庫，預計在 1999 年入秋
時上線。

開放式標準
XML 的基礎是經過驗證的標準技術，並針對網路做最佳化。 Microsoft 與其他頂尖公，
以及 W3C 的工作群組併肩合作，協助確保交互作業性，支援各式系統和瀏覽器上的開發
人員、作者和使用者，以及改進 XML 標準

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.144.40]


为什么要XML(三)

 发信人: lingi ( linger), 信区: XML
标 题: 为什么要XML(三)
发信站: BBS 水木清华站 (Thu Apr 6 15:00:49 2000)

转自：chinaasp->xml

XML 的設計便包含了一組相關的標準：

延伸性標示語言 (XML) 是一個推薦項目，己進入W3C 核准程序的最後階段。 這表示標
準是固定的，可完全被 Web 以及工具開發人員所採用。

XML namespaces 是一個推薦項目，描述namespaces的 語法，並支援可以解讀
namespaces 的 XML 解析程式。

文件物件 模型 (DOM) 層級 1 是一個推薦項目，提供經由經由指令，設計程式以存取結
構化資料的標準。讓開發者可以一致地使用，和計算 XML 的資料。

延伸性樣式表語言 (XSL) 是擬定中的草稿。 XSL 具有兩個模組︰「XSL
Transformation Language」和「XSL Formatting Objects」。前者可以用來轉變 XML 的
型式以供顯示。既然 XSL 的兩個部分都以模組化，前者可以獨立使用在一般用途的轉型
，包含轉換 XML 為「已格式化」的
HTML。CSS 可以套用到一般結構的 XML 資料，但不能用與接收時不同的順序來呈現資訊
。

XML 連結語言 (XLL) 及其附屬項目 XML 連結語言 (XPointer) 是擬定中的草稿。
XLL 是 XML 連結語言，它提供 XML 中的連結，與 HTML 中的類似， 但功能更強大。使
用 XLL，可以多方向連結，且連結可以存在於物件層級， 而非只是頁面層級。Internet
Explorer 5 並不支援
XLL 的繼承。

XML 結構化Schema，如描述於 XML-Data Note 和 以及 Document Content Description
for XML (DCD) ，也都是 W3C XML-Data Working Group 的主旨。

使用 XML 的好處
XML 為網路應用程式帶來如此強大的功能和彈性，也提供數個隨即而來的好處給開發人員
和使用者︰

更符合原意的搜尋

開發更具彈性的網路應用程式

整合不同來源的資料

就地運算和運作資料

不同方式的資料檢視

部分更新

更符合原意的搜尋
資料使用 XML 標註加以辨識，可讓客戶指定作者 為 Winston Churchill 的書籍，而非
有關 Winston Churchill 的書籍。相較之下，使用目前的方法搜尋，可能找出兩類書籍
，並且混在一起。沒有 XML，搜尋應用程式需要解讀每一個資料庫的
Schema（描述其組建方式）。這幾乎是不可能的，因為每一個資料庫表示資料的方式都不
相同。不過，若使用 XML，書籍可以輕鬆地依照作者、書名、ISBN 號碼，或其他準則的
標準方式歸類。代理商就可以使用一致的方式，搜尋這些經過篩選的書店網站，找出有?nbsp;
P Winston Churchill
的書籍。

開發具彈性的網路應用程式
一旦找到資料後，可以將 XML 傳遞給其他應用程式、物件和中間階層伺服器，以進一步
處理，或是將它傳遞到桌面，在瀏覽器中檢視。XML 連同 HTML 用於顯示、Script 用於
邏輯、以及一個共用物件模型用於連接資料及顯示，提供了具彈性的三階 Web 應用程式?nbsp;
_發時所需的技術。

整合不同來源的資料
今天要搜尋數個、不相容的資料庫，在實際上是不可能的。XML 使不同來源的結構化資料
可以輕易地合併。軟體代理程式可以在中間階層的伺服器上，整合來自後端的資料庫，和
其它的應用程式的資料。然後這份資料可以傳遞到用戶端或其他伺服器，以進一步匯總、
處理和分發。

XML 的擴充性和彈性，使得它可以描述內含在許多不同種類 - 從描述網頁到資料錄 - 之
應用程式中的資料。因為 XML 資料可自我表述的，所以資料可以交換並處理，毋需內建
要輸入資料的說明。

就地運算與運作
當資料傳遞到用戶端以後，XML 格式中的資料可以經由解析，讓用戶端應用程式就地運算
、編輯和運作。使用者可以使用各種方式運用資料，而非只是顯示。XML「文件物件模型
(DOM)」亦可讓資料在Script或不同程式語言中操作。資料運算可以不需往返伺服器而執
行。將檢視資料的使用者介面和資料本身分離，讓先前只存在高階資料庫應用的強應用程
式， 可藉由使用簡單、彈性的開放格式，在 Web 上建立。

不同方式的資料檢視
一旦資料傳遞到桌面，就能以不同方式檢視。藉由以簡單、開放和可擴充的方式描述結構
化資料，XML 加強了 HTML，它被廣泛地用來描述使用者介面。再次強調，HTML 陳述資料
外觀，而 XML 陳述資料本身。因為顯示方式與資料的分離，XML
中便能定義不同的檢視方式，資料進而可以適當地呈現。透過用戶端設定、使用者喜好設
定或其它條件設定，本機資料便可以動態地方式呈現。CSS 和 XSL 提供了宣告機制，以
陳述資料的特定檢視方式。

部份更新
資料可以使用 XML
部份更新，不必每一次在資料某部份變更時，便需要重送整個結構資料集。僅有變更的部
份必須從伺服器傳送到用戶端，也不必重新整理整個使用者介面，以顯示變更過的資料。
目前，即使只有一項資料變更，一整個頁面也必須重建，即使當時的檢視方式維持不變。
這將會嚴格地限制伺服
器的大小。

同時，XML 允許加入其它資料，如預測的高低溫度、預期的降水量以及機率（以百分比表
示）。這些資訊可以輸入使用者現存的檢視畫面，而不用瀏覽器重送新的檢視畫面。如果
要求其他資訊，如氣壓，它可以傳送而不必重建。

未來
做為表達結構化資料的業界標準而言，XML
提供了許多優點給企業、軟體開發者、網站以及一般使用者。隨著更多主要市場如進階資
料庫搜尋、線上銀行、醫療、法律、電子商務，和其它領域的垂直市場資料格式建立後，
機會將更多。且當網站開始運作資料，而非只是檢視資料時，特殊的機會也會應運而生。

客戶服務現在已經從電話客服中心和客服中心，移轉到網站上，且將因此而受惠於 XML
的強大功能。而且，因為大多數商業應用程式涉及資料和資料庫的記錄（如採購單、發票
、客戶資訊、約會、地圖等等）的運作或轉送，XML 將因允許大量商業應用程式的執行，
徹底改變可能使用
Internet 的使用者族群。此外，已經存在於網站上的資訊，不論是存放在文件或者是資
料庫中，都可以使用 XML 為基礎，且為企業內網路導向的字彙，來標示。這些字彙可以?nbsp;
f助小型及中型企業，在客戶和供應商之間交換資訊。

一個不可或缺、但尚未開發的市場就是開發工具。它可以讓一般使用者輕易地建立他們自
己的合作網站，包括從傳統的資料庫資訊，以及現存的使用者界面，來產生 XML 資料的
工具。此外，可以開發標準的Schema，以描述文件檔或其它資料，例如，它可以使用
Excel
或其它現有試算表的版面配置、圖表及其它功能。描述從傳統資料庫所產生的 XML 的宣
告，和視覺工具是相當大的契機。可以使用 Visual Basic 開發系統、Java 和 C++ 來撰
寫，可以呈現XML 資料的工具。

XML 將需要新的強大工具，以呈現有豐富、複雜 XML 資料的文件。這可以經由架構使用
者的顯示畫面階層，於一組可以動態變更的複雜階層資料頂端來完成。使用 XML 資料的
可能版面配置包含收合框線、PivotTable 動態檢視畫面，以及一張用於每一個資料夾的
簡單表單。

網站可以提供存貨詢價、新文章或即時交通資料。他們可以經由篩選 Web 廣播而取得，
或是經由這些網站伺服器的樹狀結構，以智慧型輪詢而取得。使用 XML
可以避免資訊超載現象，只要針對資訊的新舊來撰寫自訂規則，如同使用電子郵件一般。
讓使用者訂立這些規則，以及在伺服器和用戶端執行的軟體的 XML
工具，是一個非常大的契機。一個「標準物件模型」可以讓這些功能（一般寫於指令檔中
）篩選輸入訊息、檢查儲存的訊息、建立送出郵件、存取資料庫等等。這些代理程式可以
編寫後，以在任何地方自動執行。

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.144.40]
上一篇 返回上一页 回到目录 回到页首


About XML (BM: inannan)

编号 | 类别 | 标题 | 编辑日期
1 | 文件 | About XML<1> (转载) veb | 2000.05.28
2 | 文件 | About XML<2> (转载) veb | 2000.05.28
返回上一页 回到上一级目录


About XML<1> (转载)

 发信人: BBSPIN (Stupid), 信区: XML
标 题: About XML<1> (转载)
发信站: BBS 水木清华站 (Mon Apr 10 17:21:49 2000)

【 以下文字转载自 Java 讨论区 】
【 原文由 BBSPIN 所发表 】
XML is a text-based markup language that is fast becoming the standard for
data interchange on the Web. As with HTML, you identify data using tags (ide
ntifiers enclosed in angle brackets, like this: <...>). Collectively, the ta
gs are known as "markup".
But unlike HTML, XML tags tell you what the data means, rather than how to d
isplay it. Where an HTML tag says something like "display this data in bold
font" (<b>...</b>), an XML tag acts like a field name in your program. It pu
ts a label on a piece of data that identifies it (for example: <message>...<
/message>).

In the same way that you define the field names for a data structure, you a
re free to use any XML tags that make sense for a given application. Natural
ly, though, for multiple applications to use the same XML data, they have to
agree on the tag names they intend to use.
Here is an example of some XML data you might use for a messaging applicatio
n:
<message>
<to>you@yourAddress.com
<from>me@myAddress.com
<subject>XML Is Really Cool</subject>
<text>
How many ways is XML cool? Let me count the ways...
</text>
</message>

.........TO BE CONTINUED...

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.136.147]
返回上一页 回到目录 回到页首 下一篇


About XML<2> (转载)

 发信人: BBSPIN (Stupid), 信区: XML
标 题: About XML<2> (转载)
发信站: BBS 水木清华站 (Mon Apr 10 17:22:00 2000)

【 以下文字转载自 Java 讨论区 】
【 原文由 BBSPIN 所发表 】
The tags in this example identify the message as a whole, the destination a
nd sender addresses, the subject, and the text of the message. As in HTML, t
he <to> tag has a matching end tag: </to>. The data between the tag and and
its matching end tag defines an element of the XML data. Note, too, that the
content of the <to> tag is entirely contained within the scope of the <mess
age>..</message> tag. It is this ability for one tag to contain others that
gives XML its ability to represent hierarchical data structures
Once again, as with HTML, whitespace is essentially irrelevant, so you can f
ormat the data for readability and yet still process it easily with a progra
m. Unlike HTML, however, in XML you could easily search a data set for messa
ges containing "cool" in the subject, because the XML tags identify the cont
ent of the data, rather than specifying its representation.

...... TO BE CONTINUED...

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.136.147]
上一篇 返回上一页 回到目录 回到页首


关于 XML 的十种观点

 发信人: reedlotus (晨曦中的剪影), 信区: XML
标 题: 关于 XML 的十种观点
发信站: BBS 水木清华站 (Sat Apr 15 02:50:12 2000)

在计算机信息技术中，少有象类似 XML 那样的技术，她让人们产生范围很大的联想，
而这些联想及其应用又可能相距甚远。她也更多引起人们对 XML 彼此不同的理解与认识
，当然也包括误解。她什么也是，但又什么都不是，正所谓“雾里看花”，而这也正是
她的魅力所在。一百个人可能会产生一百种观点，这里整理其中的十类观点，可能有助
于您对 XML 的认识与应用。

1. XML 是文本化的小型数据库表达语言。可以对其进行 LOAD/SAVE, INSERT/REMOVE/UPDA
TE, SELECT 等操作；甚至可以把 XML 应用成为一个中间层的虚拟数据库。

2. XML 是客户端计算的数据结构载体。通过联合使用 JavaScript/DHTML 技术实现客户端
的小型信息过滤、查询、计算与通讯应用。

3. XML 是信息的高层封装与运输的标准。据此 XML 也是不同应用系统之间的数据接口标准
，是所有信息的中间层表示；是中间层应用服务器(AS)的通用数据接口。甚至可以用于
数据仓库技术的数据迁移过程、数据库报告格式中。

4. XML 是 HTML 的高层扩展。HTML 面向文本、信息发布，HTML 容许混乱；XML 面向数据
、数据处理，XML 要求工整(well-formed)合法(Valid)；用户可用 XML 创建自己的 HT
ML?nbsp;
?nbsp;
5. XML 是信息的对象化语言。DTD/Schema 是界面或类 INTERFACE/CLASS，XML 是对象实例
OBJECT，XSL 是方法定义 IMPLEMENT/METHOD，XML-Data 解决了 XML 类的继承问题。
而 XML 中的资源(URI)寻址(URL)、物理实体等又构成了信息的组件 Compoent。XML 的
RDF 是信息导航、浏览、搜索的用户接口 UI 标准。

6. XML 是不同数据结构体的文本化描述语言。它可以描述线性表、树、图形等数据结构，
也能描述文件化的外部数据结构。甚至可以制造类似 XML 的 Compiler，可使文档在文
本与二进制文件间互相转换，XML-Data 中严格定义了 XML 中数据的物理类型。也可以
说 XML 是一种通用的数据结构。

7. XML 是行业 HTML 扩展标记的定义语言。XML 与 HTML 结合描述行业的专用信息文档，
如 CDF, CML, MathML, SMIL 等。

8. XML 是在因特网时代与 Java、CORBA 等量齐观的一个概念。Java 解决了语言实施的同
一，CORBA 解决了通讯协议的同一，XML 解决了信息表示、关联的同一；OO 面向对象是
这三者的共同理论基础。万维网接口定义语言 WIDL 就是 XML 与 IDL 技术结合的产物
。

9. XML 是国际标准化组织的标准通用标记语言 SGML 的子集。SGML 面向诸于飞机设计文档
的大规模、长生命周期的信息储存，XML 则面向短期的临时数据处理、面向万维网络；
二者是相互补充的关系。

10. XML 是巴斯克范式 BNF 的语言化、标准化、电子化。元素是其基本构成单位。

摘自member.netease.com/~element

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.114.1.206]
返回上一页 回到目录 回到页首 下一篇


[范文][XML]什 么 是 XML ? (转载)

 发信人: DDG (导弹驱逐舰~雾的季节), 信区: XML
标 题: [范文][XML]什 么 是 XML ? (转载)
发信站: BBS 水木清华站 (Thu Apr 6 13:30:24 2000)

【 以下文字转载自 New_board 讨论区 】
【 原文由 shunder 所发表 】

什 么 是 XML ?
什么是XML？
确切地说，XML到底是什么呢？其完整名称是：Extensible Markup Language(可扩
展的标记语言)，缩写为XML，就可以以容易而一致的方式格式化和传送数据(通常是在W
orld Wide Web网上)。实际上，将XML设计成Standard Generalized Markup Language(
标准通用标记语言，简称SGML)的一个子集，它是简化的，而且目标是面向Web。HTML是
SGML的另外一个子集。事实上，如果很熟悉Hypertext Markup Language(超文本标记语
言，简称HTML)，那么再来学习XML就会很省劲。
标识标记
HTML和XML语言中的标记都是用尖括号<和>括起来的文本字符串，而且对读入HTML或
XML文档的应用程序来说，它们是伪指令。
XML描述的是数据本身，而HTML描述了如何显示Web页中的数据。换句话说：作为一
种数据描述语言的XML，使用频率会更高，如果选择了它，就允许我们将数据组织成数据
结构，甚至是很复杂的数据结构。你可以按照自己的需要剪裁数据；XML最有吸引力的特
征是你可以创建自己的标记。这就允许你在XML文档中以自己的方式组织数据。下面看一
个XML的实例，它可使这个概念更清楚。
<? xml version="1.0" ?>
.
.
.
处理指令以<? 开始，以 ?>结束，而且它们直接传给XML处理器，读入并解释XML的
应用程序。在本例中，我们将XML版本通知给XML处理器。
接下来的内容是grocery.xml的XML标记。以<DOCUMENT>标记开如("DOCUMENT"是我们
选择的标记，并没有已定义的XML DOCUMENT标记)，来显示我们要启动XML文档了：
<? xml version="1.0" ?>
<DOCUMENT>
.
.
.
此标记启动了一个新的XML文档。我们可以一个顾客接一个顾客地构造XML文档groc
ery.txt，在<CUSTOMER>和</CUSTOMER>标记之间列出每个顾客的货物：
<? xml version="1.0" ?>
<DOCUMENT>
<CUSTOMER>
.
.
.
</CUSTOMER>
接下来，存储这个顾客的名字。我们可以在XML中嵌套任意深度的标记；在本例中，
就意味着，通过创建和使用一个<NAME>标记，我们可以为每个顾客设置一个名字部分，
如下所示：
<? xml version="1.0" ?>
<DOCUMENT>
<CUSTOMER>
<NAME>
.
.
.
</NAME>
</CUSTOMER>
我们可以调用<FIRSTNAME>和<LASTNAME>标记，进一步存储顾客的第一个及最后一个
名字：
<? xml version="1.0" ?>
<DOCUMENT>
<CUSTOMER>
<NAME>
<LASTNAME>Edwards</LASTNAME>
<FIRSTNAME>Britta</FIRSTNAME>
</NAME>
.
.
.
</CUSTOMER>
现在，通过设置一个<DATE>标记，我们可以存储顾客购买货物的日期：
<? xml version="1.0" ?>
<DOCUMENT>
<CUSTOMER>
<NAME>
<LASTNAME>Edwards</LASTNAME>
<FIRSTNAME>Britta</FIRSTNAME>
</NAME>
<DATE>April 17,1998</DATE>
.
.
.
</CUSTOMER>
这时，我们准备存储顾客购买货物的顺序。可以创建一个新<ORDERS>标记，来完成
这个任务：
<? xml version="1.0" ?>
<DOCUMENT>
<CUSTOMER>
<NAME>
<LASTNAME>Edwards</LASTNAME>
<FIRSTNAME>Britta</FIRSTNAME>
</NAME>
<DATE>April 17,1998</DATE>
<ORDERS>
.
.
.
</ORDERS>
</CUSTOMER>
我们可以用<ITEM>标记存储顾客顺序购买的每种商品：
<? xml version="1.0" ?>
<DOCUMENT>
<CUSTOMER>
<NAME>
<LASTNAME>Edwards</LASTNAME>
<FIRSTNAME>Britta</FIRSTNAME>
</NAME>
<DATE>April 17,1998</DATE>
<ORDERS>
<ITEM>
.
.
.
</ITEM>
</ORDERS>
</CUSTOMER>
假定顾客购买了五个黄瓜，那么可以使用三个新标记<PRODUCT>．<NUMBER>和<PRIC
E>存储购买数量和价钱：
<? xml version="1.0" ?>
<DOCUMENT>
<CUSTOMER>
<NAME>
<LASTNAME>Edwards</LASTNAME>
<FIRSTNAME>Britta</FIRSTNAME>
</NAME>
<DATE>April 17,1998</DATE>
<ORDERS>
<ITEM>
<PRODUCT>Cucumber</PRODUCT>
<NUMBER>5</NUMBER>
<PRICE>$1.25</PRICE>
</ITEM>
</ORDERS>
</CUSTOMER>
这样，通过创建和使用自己的XML标记，我们已经存储并构造了需要记录顾客的有关
数据。使用一套已定义的标记，就免于受HTML的限制。
然而，正如你所知道的，XML是一种自由形式的语言。它取决于我们是否弄清了所使
用标记的意义，而不是一些预写的浏览器应用程序。

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.49.215]


DDG (导弹驱逐舰~雾的季节), 信区: XML

 发信人: DDG (导弹驱逐舰~雾的季节), 信区: XML
标 题: [范文][XML]XML：新 世 代 网 页 标 示 语 法 (转载)
发信站: BBS 水木清华站 (Thu Apr 6 13:30:39 2000)

【 以下文字转载自 New_board 讨论区 】
【 原文由 shunder 所发表 】

XML：新 世 代 网 页 标 示 语 法
Neil Randall／苏菲
正式、制式
文件格式定义系统只是制作 XML文件的方法之一。即使文件格式定义提供相当大的
弹性及扩充性，但是当初设计 XML时的目的却不希望使用者写这些东西。因此 XML文件
有两种版本，一种需要文件格式定义一种不需要。遵循SGML标准含有文件格式定义的文
件格式称为正式的(Valid) ，不含文件格式定义的则必须符合特定的标准规格，称为制
式的(Well-formed) 。而即使是正式的文件也一样要符合标准规格。
   一份正式的 XML文件就像一般的SGML文件，透过元件的指定值，打开一个文件格式
宣告档(Document Type Declaration) ，在此之前可能还会宣告 XML的版本，不过不一
定要宣告，如果有可能是
<?xml Version="1.0?>
1.0表示其版本编号。该版本的XML必须可从本机或网路上其他地方取得，宣告时就
要指明取得的地点。
   文件格式定义档的用意在於规范所有该类文件的内容架构，因此文件格式定义便代
表了SGML的精髓。由此看来， XML要完全不使用好像有点奇怪甚至不可能。但是藉由完
整格式化的文件内容，浏览器可将它视为SGML来处理。而没有文件格式定义的XML文件取
而代之的是简单的规范。
   首先，该文件开头的标示语法宣告( RequiredMarkup Declaration) 要指明不需要
文件格式定义档，位置和XML版本宣告同一行。
<?xml VERSION="1.0"RMD="NOME">
接著，所有属性的设定值都必须以双引号括起来。最後，所有的元件都要有起始的
标示，不像有些HTML的元件。其他则视元件的属性不同而有不同的要求及限制。只要遵
守这些规则便可完全摒弃文件格式定义，这也慢慢地实现让 XML比SGML容易使用的理想
。
   至於HTML文件该如何处理？你现在的HTML文件是”正式”或”制式”还是两者都不
是？其实都不用烦恼。请记住HTML也是一种SGML文件格式定义，只要符合HTML 3.2的标
准，起码都算得上是制式文件。只要确定遵循 XML制式文件的规范，就算大功告成。不
妨试著在支援SGML的编辑器内打开你的HTML文件，如SoftQuad的HotMetal Pro(www.sq.
com)，或是以解译软体检查看看，如Lark(www.textuality.com/Lark/)。
   超链结是 XML胜於HTML的一个例子。虽说HTML的超链结是建构 Web的基石，但功能
却非常有限。虽然可以链结本机或其它主机上的文件，不过只能指定单向且固定的链结
位置，因此使用者常见”找不到档案”(Document not found)的错误讯息。
   HTML的重导链结(Redirection) 功能－将使用者导向其它的网页，解决了部分的问
题，不过提案中的XML标准提供了更多的链结功能w3.or/pub/WWW/TR/WDxml-link-97040
6.html) 。网页编辑可建立多重链结，除了目标网页的位置之外，同时还可提供如何从
别的网址链结的资讯。好比说，当网页提供某个网址时，可同时显示其它同样参考到该
网页的链结位置。 XML的编辑并可进一步指定目标网址找到後的动作：是否自动显示或
穿插到原有的文件内。一旦 XML的链结功能普遍化之後，整个全球资讯网的超媒体链结
系统会更臻完善。

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.49.215]


[范文][XML]XML意味什么？ (转载)

 发信人: DDG (导弹驱逐舰~雾的季节), 信区: XML
标 题: [范文][XML]XML意味什么？ (转载)
发信站: BBS 水木清华站 (Thu Apr 6 13:31:22 2000)

【 以下文字转载自 New_board 讨论区 】
【 原文由 ttao 所发表 】
去年公布的XML 1.0标准，引起了互联网世界的轰动。XML是可扩展标记语言
(Extensible Markup Language) 的英文缩写。作为下一代互联网技术的开路先锋
，由XML取代HTML（超文本标记语言）似乎已成定局。另外由于XML能很好地结合
Java程序语言，因此自然有很多开发商伸出双臂热情欢迎这个Web世界的新主人。

    XML技术的起源可以令人认清它的面目，并且看到它的发展趋势和可能的辉煌
前景。任何希望利用XML的优势开发互联网络空间的个人或组织，毫无疑问会承认
这样的前景以及伴随而来的严峻挑战。

    就在1996年，微软总裁Bill Gates曾大力宣扬HTML作为Web网络开发工具的强
大功能，并积极参与World Wide Web的开发和利用。由此数不清的Web空间在互联
网上“无中生有”。而用来创建众多内容精彩、界面友好的Web站点的超文本标记
语言，无论对企业界还是教育界，政府机关还是出版机构，私人组织还是个人访问
者，都彰显了无与伦比的信息处理能力。

    然而，HTML并不是没有缺陷，假如换一个视角考查HTML，就会发现以下一些不
可避免的遗憾。

    HTML仅仅是个表示技术，它不一定能够说明HTML标签所指示的信息的任何内容
。比如：在Web浏览器里，

Apple
这样的语句代表一定的、可预见的表现形式，然而到底是个计算机公司，一个水果
，还是别的什么，HTML却无法说明。相类似的语义问题，HTML也无能为力。因为
HTML的标签集是被固定的，所以不能随意增加新的标签。

    基于HTML的Web浏览器一般被当作潜在的应用平台，而Java技术却提出更多的
要求。由于HTML的数据标准，为了运行Web页数据，基于We b的应用程序对服务器
上的CGI脚本要求很高。这样以来便严重地加大了网络通信流量负载，导致Web信息
查询的迟缓。

    HTML的这些不足当然不会是致命的，然而相对于XML，却无法竞争了。

    当全世界都对HTML趋之若鹜的时候，只有一部分人怀着另样的心情关注着整个
事件的进展。他们是一些富有远见的开发人员，还有就是一些HTML父背产品──标
准通用标记语言(Standard Generalized Marku p Language, SGML)的忠实用户。
这些人还有他们的公司，已经在SGML 身上进行了大量的投入，并相信能够对文件
和组成文件信息的语义进行管理的SGML会有发展。此外，与HTML不同的是SGML可以
提供可扩展标签集，以及一系列的文件（或术语称为"信息产品"）的创建规则。
SGML可以通过产生扩展的标签集来对每一条信息的具体内容作相应的说明和定性。
XML也是由SGML发展而来的，不过XML保留了SGML关键功能和结构，并对HTML有许多
重要改进，因此倍受业界人士的欢迎，并被认为可能对 Web世界产生一些革命性的
冲击。

    XML到底有哪些优势呢？归纳起来，主要有以下几个方面：

    XML的结构化信息系统的主要功效促进数据的交流。各个产业联盟通常彼此独
立地创建自己的标准，并应用这些标准来规定一定的内容模式，基于约定模式的标
记信息才可以方便地高效地在彼此之间共享。按照行业的技术术语，结构化信息的
模式被称为文件型式定义(Document Type Definition, DTD)。因为HTML缺乏必要
的数据格式，于是不能表达一定的内容模式和语义。而XML却能够服务于更为广泛
的EDI应用领域，在象诸如Web网络这样的对电子数据交换有很高要求的地方大显身
手。

    Java技术的出现可以说是九十年代最为重要的技术进步。Java为浏览器提供了
通用的应用平台，从而各独立的平台不再成为障碍。可是由于HTML采用的是固定的
标签集，也不具备语义技术，因而不能为Java提供什么支持，令其英雄无用武之地
。XML有所不同，它有标准格式规定的丰富的数据信息，同Java技术相结合，可以
仅仅在客户端上就进行程序的多进程处理。这一点同HTML只能依赖于Web服务器的
CGI脚本才能实现程序功能形成了强烈的对比。

    显然，XML和Java的结合可以加大客户端应用程序处理的比例，从而很有效地
降低局域网络或整个互联网络的通信负载，显著提高Web速度。

    SGML本身也是一个独立平台技术，可以规定信息的相应结构和语义。当各个厂
商独自确立各自的信息格式的时候，（比如：微软的RTF格式，Adobed的
PostScript和MIF格式，以及其它一些分别源自WordPerf ect，Lotus和Borland等
公司的格式）SGML可以提供一致的连续的独立平台形式的信息表示。可惜SGML在当
时没有得到重视，原因可能主要在于SGML自身的标准阻碍了它被广泛地接受。于是
象W3C（World Wide W eb 联盟）和图像通信联合会等组织开始积极地对SGML作必
要的改进工作，并为了区别于HTML技术，将改进后的成果命名为可扩展标记语言─
─XML。

    从此以后，XML再也不是当时的SGML了。全世界都对它反应热烈，无论是在关
于互联网（包括Intranet和extranet）还是出版发行的有关会议上，各大销售商一
致表示对XML的支持，更有甚者，已经开始展示自己基于XML的相关技术产品。XML
以然成了互联网络内容管理系统，互联网络内容传送程序，以及要创建丰富多彩的
互联网内容的最先进，也最有希望的技术。

--
简洁就是美.

※ 来源:·BBS 水木清华站 smth.org·[FROM: 210.73.88.195]


XML与SGML

 发信人: Nullgate (空门大师~~Powered by Perl), 信区: XML
标 题: XML与SGML
发信站: BBS 水木清华站 (Mon Apr 10 18:22:43 2000)

有人声称XML将代替SGML，因为将出现很多免费或低价的XML软件。
另一些人断定XML用户将像HTML用户一样需要更多的SGML内容，最终转向
整个SGML标准。
两种断言都是毫无疑义的——XML和SGML没有任何竞争关系。
XML是SGML的一个简化子集。其特色是面向数据处理（不是信息发布）、
段生命周期。XML文档的大部分内容由计算机程序产生，再由其他程序处理，
最后释放掉，人们根本就看不到它。
当然，如果你的文档像波音公司的文档（譬如飞机型号、配件）那样庞大，
或者是政府文档，你应该选择SGML。
[--Charles F.Goldfarb 有删节]

我们不可能用到SGML :-)

--
Perl资源： http://166.111.160.5/nullgate/perl/
神秘代理： telnet 166.111.160.214 9999

※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.160.216]


Perl与XML

 发信人: Nullgate (空门大师~~Powered by Perl), 信区: XML
标 题: Perl与XML
发信站: BBS 水木清华站 (Mon Apr 10 19:26:56 2000)

我在Goldfarb的书中发现了这么一段：

实际上,XML的一个设计目的就是要支持“急迫的Perl研究者”，他们急需
用如Perl之类的脚本语言写出一个程序来处理XML文档，这个程序把XML文档当作
纯文本文件来扫描，而不用真正的语法分析器，这样的程序即可以搜索标记字符串，
也可以搜索数据。
这样的研究者(hacker)经常在XML文档中嵌入一些对自己来说有特殊意义的
搜索线索，例如对出现在行首的标签进行特殊处理，尽管这些线索可能对语义分析
器没有任何意义。

--
Perl资源： http://166.111.160.5/nullgate/perl/
神秘代理： telnet 166.111.160.214 9999

※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.160.216]


XML — —21 世 纪 的 “ 世 界 语”

 发信人: veb (君), 信区: XML
标 题: XML — —21 世 纪 的 “ 世 界 语”
发信站: BBS 水木清华站 (Tue Apr 25 22:39:37 2000) WWW-POST

中国计算机世界出版服务公司版权所有

XML — —21 世 纪 的
“ 世 界 语”
军 事 医 学 科 学 院 一 所 信 息 中 心
代 炼 忠 周 士 波

------------------------------------------------------------------------------
--

---- 以 往 的HTML 由 于 难 以 扩 展、 交 互 性 差、 语 义 性 差 以 及 单 向 的
超 链 接 等 缺 点 使 其 在 电 子 数 据 交 换、 数 据 库 与 搜 索 引 擎 等 领
域 的 应 用 存 在 着 障 碍， 而XML 的 出 现 就 是 为 了 解 决 这 些 问 题。
XML 是 一 种 元 语 言， 可 以 定 义 其 他 的 语 言， 并 且 它 的 标 记 是 用
户 定 义 的， 从 理 论 上 讲， 其 类 型 的 数 量 可 以 是 无 限 的。XML 的 前
景 被 人 看 好， 在21 世 纪，XML 语 言 将 成 为 世 人 皆 知 的“ 世 界 语”。

---------------— — 编 者

----在 当 今 的IT 行 业，XML 越 来 越 成 为 一 个 热 门 的 话 题。 我 们 知 道
，Web 上 的 通 用 语 言 是HTML， 正 是 由 于 它 的 出 现，Internet 才 像 现 在
这 样 如 此 深 入 人 心， 规 模 也 变 得 异 常 庞 大。 也 正 因 为 如 此， 问
题 出 现 了， 人 们 越 发 觉 得HTML 不 够 用 了。 1996 年，W3C 开 始 对HTML
的 后 续 语 言 进 行 研 究， 并 于1998 年2 月 正 式 推 出 了XML。 以 下 是XML
相 关 的 一 些 话 题。

XML 的 优 势
----正 如 上 面 提 到 的，XML 出 现 的 原 因 主 要 是 HTML 不 够 用。 我 们 至
少 可 以 罗 列 出 下 列 这 些HTML 的 不 足：
----1.难 以 扩 展

----HTML 是 符 合SGML 语 法 的 一 种 固 定 格 式 的 超 文 本 标 记 语 言， 因
其 格 式 固 定， 故 难 以 扩 展。 浏 览 器 供 应 商 通 过 非 标 准 的 扩 展 来
获 得 市 场 份 额， 这 就 破 坏 了Web 的 交 互 操 作 性。

----XML 的 诞 生 正 是 为 了 解 决 这 个 问 题， 从 其 全 称“ 扩 展 标 记 语
言”(Extensible Markup Language) 就 可 以 知 道 这 一 点。 XML 是SGML 的 一 个
子 集， 一 个 摒 弃 了 其 中 一 些 复 杂 性 并 考 虑 到 适 合Web 特 性 的 一
个 子 集。 所 以 它 和SGML 一 样， 都 是 元 语 言， 可 以 定 义 其 它 的 语 言
。HTML 4.0 现 在 由SGML 描 述， 将 来 可 能 由XML 重 新 定 义。 所 以，HTML 的
标 记 是 固 定 的， 只 有 如H1、P、Table 等 在HTML 标 准DTD 中 定 义 的 标 记
。 而XML 的 标 记 是 用 户 定 义 的， 所 以 从 理 论 上 讲， 其 类 型 的 数 量
可 以 是 无 限 的。

----2.交 互 性 差

----用 户 需 要 与 应 用 进 行 交 互， 而 使 用HTML 却 并 不 容 易 做 到。 频
繁 的 请 求 处 理 已 经 使 现 在 的Web 服 务 器 不 堪 重 负 了， 动 态HTML 可
以 把 一 些 处 理 交 给 浏 览 器， 但 在 这 方 面 它 远 不 及XML。 更 为 重 要
的 是， 当 我 们 想 对 同 一 数 据 以 不 同 的 视 角 进 行 观 察 时，HTML 的
办 法 是 请 求 服 务 器 重 传 另 一 个 页 面， 这 无 疑 更 加 重 了 服 务 器
的 负 担。 而 如 果 使 用XML， 我 们 可 以 在 本 地 排 序、 过 滤 和 进 行 其
他 的 数 据 操 作。

----3.语 义 性 差

----HTML 最 初 是 被 设 计 用 来 标 记 文 档 以 反 映 其 结 构 的( 如Title、H1
、L1、P、Table 等)， 同 时 它 也 包 含 一 些 用 于 显 示 格 式 的 标 记( 如B、
I)， 再 加 上 超 文 本 链 接，HTML 在Web 上 获 得 了 巨 大 的 成 功。 由 于
HTML 没 有 考 虑 语 义 性， 因 此 它 至 少 在 以 下 三 个 方 面 存 在 极 大 的
不 足：

----(1) 电 子 数 据 交 换(EDI)

----在HTML 中， 产 品 名 和 产 品 价 格 可 能 隐 藏 在 文 档 的 任 何 地 方，
没 有 任 何 特 别 之 处， 计 算 机 无 法 将 其 从 文 档 识 别 出 来， 因 此 也
就 谈 不 上 对 其 进 行 更 深 入 的 处 理。 而XML 可 以 将 产 品 名 和 产 品
价 格 用 类 似PRODUCT_NAME 和PRODUCT_PRICE 的 标 记 将 它 们 标 记 出 来， 这
样 种 种 不 同 的 应 用 就 能 理 解 它 们 的 含 义 并 进 行 相 应 的 处 理。
XML 实 际 上 带 来 的 是 一 场EDI 技 术 的 革 命， 因 为 它 彻 底 弥 补 了 商
业 规 则 和 数 据 的 内 容 与 结 构 密 不 可 分 的 传 统EDI 的 缺 陷。

----(2) 数 据 库

----要 在HTML 中 展 示 数 据 库 中 的 数 据， 一 般 的 过 程 是： 通 过 某 种
手 段 从 数 据 库 中 取 出 数 据， 然 后 将 它 们 写 到 用 于 展 示 的HTML 文
档 中， 加 上 各 种 标 记， 提 交 给 用 户。 这 样 做 的 结 果 就 是 用 户 得
到 一 些“ 死” 数 据。 即 使 用 户 仅 仅 想 以 另 外 一 种 方 式 浏 览 数 据
， 也 只 能 重 来 一 次。 而XML 提 供 了 极 大 的 灵 活 性， 我 们 可 以 把 数
据 库 中 的 每 个 字 段 和XML 中 的 相 应 标 记 对 应 起 来， 如 此 带 来 的
好 处 是 不 言 而 喻 的。

----(3) 搜 索 引 擎

----相 信 每 个 使 用 过 搜 索 引 擎 的 人 都 有 过 同 样 的 体 会， 返 回 的
结 果 太 多， 你 需 要 足 够 的 耐 心 和 时 间 去 检 查 哪 些 是 你 需 要 的
结 果。 问 题 在 于 现 在 的 搜 索 引 擎 只 能 检 索 单 词 的 频 率、 文 档 的
标 题 以 及 某 些 情 形 下 描 述 页 面 内 容 的 元 标 记 等， 这 是HTML 的 缺
陷 带 来 的 限 制。 而 在XML 中， 像〈AUTHOR〉 这 样 的 标 记 很 明 确 地 表
达 了 它 包 含 的 意 义， 如 果 我 们 查 找 张 某 某 写 的 书， 而 张 某 某 又
是 被〈AUTHOR〉 所 标 记， 搜 索 引 擎 就 可 以 很 清 楚 地 知 道 我 们 表 达
的 语 义 而 返 回 正 确 的 结 果。

----4.单 向 的 超 链 接

----虽 然 现 在HTML 提 供 的 超 文 本 链 接 机 制 被 证 明 是 很 有 用 的 并
取 得 了 巨 大 的 成 功， 但 这 种 机 制 的 如 下 特 征 注 定 了 它 的 局 限
性：

----(1) 超 链 接 在 它 的 某 一 端( 源 端) 定 义。

----(2) 超 链 接 确 定 了 它 的 另 一 端 ( 目 的 端)， 虽 然 服 务 器 可 以 有
很 大 的 自 由 度 来 寻 找 和 创 建 它 的 目 的 端。

----(3) 用 户 只 能 从 源 端 出 发 走 到 目 的 端。

----(4) 超 链 接 的 效 果 由 浏 览 器 而 不 是 由 超 链 接 本 身 来 决 定。 举
例 来 说， 当 用 户 打 开 一 个 链 接 时， 一 般 的 情 形 是 用 目 的 端 的
文 档 来 取 代 源 端 的 文 档， 浏 览 器 可 能 提 供 一 个 选 择 让 用 户 在
一 个 新 窗 口 中 打 开。

----实 际 上 在 早 些 的 一 些 专 用 的 超 媒 体 系 统 中 已 经 有 一 些 更 灵
活 的 机 制 来 表 达 更 复 杂 的 链 接 关 系， 如 多 个 目 的 端， 多 向 链
接 等，XML 足 以 满 足 这 样 的 需 求。

应 用 领 域
----我 们 从W3C 公 布 的XML 的 设 计 目 标 就 可 以 大 致 推 测 出XML 的 应 用
领 域，XML 的 前 三 个 设 计 目 标 是：
----(1)XML 可 直 接 在Internet 上 使 用。

----(2)XML 应 支 持 广 泛 的 不 同 种 类 的 应 用。

----(3)XML 应 和SGML 兼 容。

----用 一 句 话 来 描 述， 就 是XML 应 用 于 文 档 的 制 作 和 发 布。 具 体
来 说，XML 可 广 泛 应 用 于Internet、 出 版 业、 电 子 商 务 等 当 今 热 门
的 市 场。 每 个 行 业 的 组 织 和 开 发 人 员 都 可 用 XML 创 建 他 们 自 己
的 标 识 语 言， 用 于 在 他 们 各 自 的 领 域 中 实 现 信 息 的 交 互， 如 音
乐、 化 学、 电 子、 登 山、 财 务、 冲 浪、 石 油、 地 质、 语 言、 烹 调、
历 史、 工 程、 数 学 等 等。 实 际 上，W3C 已 经 正 式 发 布 了
SMIL(Synchronized Multimedia Integration Language)，MathML(Mathematical
Markup Language)， 其 他 的 一 些 组 织 也 在 开 发 各 自 领 域 的 基 于XML 的
标 记 语 言。

相 关 的 标 准
----XML 1.0 是W3C 于1998 年2 月 正 式 发 布 的 标 准( 以 建 议 书 的 形 式 发
布 的， 以 下 同)， 它 是 一 个 关 于 标 记 和 属 性 的 规 范， 除 此 之 外，
还 有 一 些 相 关 的 标 准 来 支 持XML 的 广 泛 应 用。 XML 最 新 的 版 本 可
在http://www.w3.org/TR/REC-xml 下 找 到， 最 近 的 版 本 是http://www.w3.org/T
R/1998/REC-xml-19980210。

----·XLink(XML Linking Language)

----关 于XML 扩 展 链 接 的 标 准， 目 前 该 标 准 还 在 制 定 之 中。 最 新
的 版 本 可 在http://www.w3.org/TR/xlink 下 找 到， 最 近 的 版 本 是
http://www.w3.org/1999/07/WD-xlink-19990726。

----·XPath(XML Path Language)

----为XSLT 和XPointer 提 供 了 一 种 公 用 的 语 法 和 语 义 机 制， 用 于XML
内 部 结 构 寻 址。 最 新 的 版 本 可 在 http://www.w3.org/TR/xpath 下 找 到，
最 近 的 版 本 是http://www.w3.org/TR/1999/ REC -xpath-19991116。

----·XPointer(XML Pointer Language)

----关 于XML 文 档 的 内 部 结 构 寻 址 的 标 准， 它 是 建 立 在XPath 的 基
础 上 一 种 语 言，HTML 中 相 应 的 机 制 是 片 段 标 识 符。 最 新 的 版 本
可 在http://www.w3.org/TR/WD-xptr 下 找 到， 最 近 的 版 本 是http://www.w3.or
g/1999/07/WD-xptr-19990709。

----·XSLT(XSL Transformations)

----把 一 种XML 结 构 的 文 档 转 换 成 另 一 种 XML 结 构 的 语 言， 主 要 和
XSL 一 起 使 用， 用 于 把 原 始XML 文 档 转 换 为 使 用XSL 专 用 的 格 式 化
词 表 的XML 文 档。 最 新 的 版 本 可 在 http://www.w3.org/TR/xslt 下 找 到，
最 近 的 版 本 是http://www.w3.org/TR/1999/REC -xslt-19991116。

----·XSL(Extensible Stylesheet Language)

----XML 的 格 式 化 描 述 语 言， 它 对CSS 的 功 能 有 所 扩 展 而 又 摒 弃 了
DSSSL 的 复 杂 性。XML 文 档 的 表 现 分 为 两 步： 第 一 步， 用XSLT 对XML 源
文 档 进 行 转 换， 第 二 步， 用XSL 对 结 果 文 档 进 行 解 释 和 表 现。 最
新 的 版 本 可 在http://www.w3.org/TR/WD-xsl 下 找 到， 最 近 的 版 本 是
http://www.w3. org/TR/1999/WD-XSL-19990421。

----·CSS(Cascading Style Sheets)

----另 外 一 种 格 式 化 描 述 语 言， 主 要 用 于 HTML， 但 在 不 需 要XSLT
进 行 转 换 的 情 况 下，XML 文 档 可 以 使 用 CSS。 最 新 的 版 本 可 在
http://www.w3.org/TR/REC －CSS2 下 找 到， 最 近 的 版 本 是http://www.w3.
org/TR/1998/REC-CSS2-19980512， 目 前W3C 正 在 讨 论 研 究 CSS3(level3)。

----·XHTML(The Extensible HyperText Markup Language)

----一 个 对HTML 4.0 再 生、 子 集 化 和 扩 展 的 文 档 类 型 的 家 族， 这 种
类 型 的 文 档 是 符 合XML 语 法 并 最 终 可 以 用 于 基 于XML 的 浏 览 器 的
，XHTML 1.0 是 这 个 家 族 的 第 一 个 文 档 类 型， 它 对HTML 4.0 的 文 档 进
行 重 新 表 达, 然 后 将 其 作 为XML 1.0 的 一 个 应 用， 它 适 用 于 基 于
XML 的 浏 览 器。 如 果 遵 从 某 些 准 则 的 话， 它 也 适 用 于 基 于HTML 的
浏 览 器。 最 新 的 版 本 可 以 在 http://www.w3.org/TR/xhtml1 下 找 到， 最
近 的 版 本 是http://www.w3.org /TR/1999  WD-xhtml2-19991124。

----·DOM(Document Object Model)

----对 文 档 结 构 的 标 准 化 的 内 部 表 示， 目 的 是 让 编 程 人 员 可 以
方 便 地 访 问 文 档 的 元 素， 删 除、 增 加 和 编 辑 文 档 的 内 容、 属 性
和 风 格 等， 其 最 大 的 特 点 是 平 台 独 立 性 和 语 言 中 立 性。

----W3C 现 在 已 完 成 的 工 作 是level 1， 它 建 立 在Netscape Navigator 3.0
和Microsoft Internet Explorer 3.0 所 实 现 的 功 能( 被 称 为 level 0) 基 础
上， 适 用 于XML 和HTML。 其 最 新 的 版 本 可 在 http://www.w3.org/TR/REC-DOM
-Level-1 下 找 到， 最 近 的 版 本 是 http://www.w3.org/TR/1998/REC-DOM-Level-
1-19981001。W3C 现 在 正 着 手level 2 的 工 作， 并 已 规 划 到level 3 甚 至
更 深。

----·Namespaces

----一 个XML 文 档 可 能 包 含 被 不 同 的DTD 或 其 他 机 制 定 义 的 元 素 和
属 性， 这 就 难 免 产 生 识 别 和 冲 突 的 问 题，XML Namespaces 使 用URL 的
机 制 来 解 决 这 个 问 题。 最 新 的 版 本 可 在http://www.w3.org/TR/REC-xml
-names 下 找 到， 最 近 的 版 本 是 http://www.w3.org/TR/1999/REC-xml-names-19
990114。

----·RDF(Resource Description Framework)

----关 于 元 数 据 的 标 准， 它 是 处 理 元 数 据 的 基 础。RDF 十 分 强 调
Web 资 源 的 自 动 处 理， 可 应 用 于 多 个 领 域， 如 搜 索 引 擎， 资 源 分
类 编 目， 知 识 共 享 及 交 流， 网 页 的 著 作 权 描 述 等。 该 标 准 引 进
了 一 个 表 示 元 数 据 的 模 型 和 用 于 编 码 和 传 输 元 数 据 的 语 法 规
则， 其 中 语 法 由XML 表 达， 因 此XML 和RDF 是 互 为 补 充 的。 最 新 的 版
本 可 在http://www.w3.org/TR/REC-rdf-syntax 下 找 到， 最 近 的 版 本 是
http://www.w3.org /TR/1999/REC-rdf-stntax-19990222。

----·RDF Schema(Resource Description Framework Schema)

----RDF 定 义 了 一 个 用 命 名 的 属 性 和 值 的 方 法 来 描 述 资 源 间 的
关 系 的 简 单 模 型，RDF 的 属 性 值 就 是 代 表 资 源 间 的 关 系， 这 类 似
数 据 库 技 术 中 的E －R 图。 但 是 这 个 模 型 既 没 有 提 供 声 明 这 些
属 性 的 机 制， 也 没 有 提 供 定 义 这 些 属 性 和 资 源 之 间 的 关 系 的
机 制，RDF Schema 的 任 务 就 在 于 此。 最 新 的 版 本 可 在http://www.w3.org
/TR/PR-rdf-schema 下 找 到， 最 近 的 版 本 是 http://www.w3.org/TR/1999/PR-rd
f-schema -19990303。

----·XML Schema

----对XML 文 档 的 结 构 进 行 描 述 和 内 容 进 行 限 制 的 语 言， 它 包 含
XML 的DTD 提 供 的 全 部 功 能 并 有 所 扩 展， 它 本 身 用XML 来 表 达。 目
前 的 版 本 由XML Schema Part 1:Structures 和XML Schema Part 2:Datatypes 两 部
分 组 成。 最 新 的 版 本 可 分 别 在 http://www.w3.org/TR/xmlschema-1 和
http://www. w3.org/TR/xmlschema-2 下 找 到， 最 近 的 版 本 是http://www.w3.or
g/TR/1999/WD-xmlschema-1-19991105 和 http://www.w3. org/TR/1999/WD-xmlschema-2
-19991105。

----·Canonical XML

----对XML 文 档 进 行 规 范 化 的 标 准。 两 个 在 外 在 表 现 形 式 上( 如 实
体 结 构、 属 性 的 顺 序 和 字 符 的 编 码 等) 不 同 的XML 文 档 可 能 在 许
多 应 用 中 是 等 价 的， 称 之 为“ 逻 辑 等 价”。 Canonical XML 就 是 一
个 将XML 文 档 转 换 为 其“ 逻 辑 等 价” 的 规 范 化 的XML 文 档 的 语 法 规
则。 最 新 的 版 本 可 在http://www.w3.org/TR/xml-cl4n 下 找 到， 最 近 的 版
本 是http://www.w3.org/TR/1999/WD-xml-cl4n-19991115。

----·XML Signature Core Syntax and Processing

----关 于XML 数 字 签 名 的 语 法 和 处 理 规 则， 它 提 供 了 一 种 对XML 文
档 和 其 他Internet 资 源 进 行 数 字 签 名 的 机 制， 这 种 签 名 是 用XML 来
进 行 编 码 的。 最 新 的 版 本 可 在 http://www.w3.org/TR/xmldsig-core 下 找
到， 最 近 的 版 本 是 http://www.w3.org/TR/1999/WD-xmldsig-core-19991119。

----·XML Fragment Interchange

----XML 标 准 支 持 可 能 由 多 个 实 体 组 成 的 逻 辑 文 档， 一 个 用 户 可
能 想 浏 览 或 编 辑 其 中 一 些 实 体 或 实 体 的 部 分 内 容 却 对 文 档 的
其 他 部 分 没 有 兴 趣 和 需 求。XML Fragment Interchange 提 供 一 种 机 制
来 传 输 用 户 需 要 的 片 段 及 片 段 所 在 的 上 下 文 关 系。 最 新 的 版
本 可 在http://www.w3.org/TR/WD-xml-fragment 下 找 到， 最 近 的 版 本 是
http://www.w3.org/1999/06/WD-xml-fragment-19990630.html。

----·XML Information Set

----关 于XML 信 息 集 的 标 准，XML 信 息 集 是 一 个 抽 象 的 数 据 集， 是
对 一 个 成 形 的(well-formed)XML 文 档 可 包 含 的 信 息 的 描 述。 最 新 的
版 本 可 在http://www.w3.org/TR/xml-infoset 下 找 到， 最 近 的 版 本 是
http://www.w3.org/TR/1999/WD-xml-infoset-19990517。

----在 这 里 我 们 不 可 能 将 所 有 的 标 准 都 一 一 列 出， 它 们 大 部 分
都 还 在 进 行 当 中，W3C 目 前 甚 至 还 没 有 关 于 它 们 的 工 作 草 案， 如
XML Syntax、XML Query 等， 相 对 于HTML 来 说， XML 是 一 个 更 庞 大 的 家 族
。

XML 的 未 来
----如 果 说HTML 曾 经 为Internet 开 拓 出 一 片 新 的 天 地， 那 么，XML 将
使 这 片 天 地 变 得 更 加 令 人 心 驰 神 往， 并 将 大 大 拓 展 这 片 应 用
领 域。 但 是， 我 们 也 必 须 看 到，XML 现 状 还 仅 仅 停 留 在 雾 里 看 花
的 阶 段， 主 流 的 浏 览 器 中， 只 有IE 5.0 对XML 提 供 有 限 的 支 持， 尽
管 微 软 和Netscape 公 司 都 声 称 在 他 们 下 一 个 版 本 的 浏 览 器 中 全
面 支 持HTML 4.0 和XML， 但 这 只 有 等 待 时 间 的 证 明 了。 可 以 预 见 的
是，21 世 纪 将 是 一 个XML 收 获 的 季 节， 也 许 我 们 很 快 就 会 发 现 在
主 流 的 字 处 理 器 中 包 含 这 样 一 个 选 项 — —“ 存 为XML 格 式”， 那
时，XML 就 是 世 人 皆 知 的“ 世 界 语” 了。

--

Powered by eXtensible Markup Language

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.112.99.209]


XML 与 第 二 代Web

 发信人: veb (君), 信区: XML
标 题: XML 与 第 二 代Web
发信站: BBS 水木清华站 (Tue Apr 25 23:01:10 2000) WWW-POST

中国计算机世界出版服务公司版权所有

XML 与 第 二 代Web
Jon Bosak Tim Bray

------------------------------------------------------------------------------
--

作 者 简 介
---- Jon Bosak 与Tim Bray 在XML 的 开 发 中 发 挥 过 重 要 作 用。Bosak 是Sun
Microsystems 公 司 的 在 线 信 息 技 术 设 计 师， 他 组 织 和 领 导 了W3C 的
XML 工 作 组， 他 现 在 是W3C XML 协 调 小 组 主 席。Bray 是XML1.0 说 明 书 及
相 关 的XML 名 域 的 编 者 之 一， 也 是W3C XML 文 法 工 作 组 的 主 席 之 一
。
---- 超 文 本 与 全 球 化Internet 的 结 合 引 发 了 一 场 革 命，XML 为 完 成
这 项 工 作 做 好 了 准 备。

----电 脑 与 人 脑 的 区 别 在 于， 电 脑 无 法 接 受 提 示 而 人 脑 可 以。
当 人 们 看 一 本 杂 志 时， 只 要 看 过 文 章 的 标 题 就 能 猜 出 文 章 的
大 致 内 容； 看 看 物 品 清 单 就 能 了 解 相 关 的 购 物 指 南； 看 几 行 数
字 就 知 道 自 己 银 行 账 户 的 状 况。 这 显 然 是 人 脑 的 优 势。 电 脑
当 然 没 有 这 么 聪 明! 它 们 需 要 被 明 确 告 知 有 什 么 事 情 ？ 相 互 之
间 的 关 系 如 何 ？ 以 及 该 如 何 处 理 这 些 事 情 ？

----可 扩 展 标 记 语 言(Extensible Markup Language， 简 称 为XML) 正 是 为 了
用 来 对 信 息 进 行 自 我 描 述 而 设 计 的 一 种 新 语 言。 这 项 对 计 算
机 通 信 方 式 的 简 单 变 革 有 可 能 会 将Internet 从 信 息 传 送 扩 展 到
人 类 活 动 的 许 多 其 他 方 面。 事 实 上， 自 从 万 维 网 联 合 组 织（
World Wide Web Consortium， 一 般 称 为W3C） 在1998 年 初 完 成 XML 标 准 制
定 以 来， 该 标 准 便 如 同 燎 原 之 火， 迅 速 从 科 学 领 域 蔓 延 到 工 业
领 域， 包 括 制 造 业 和 医 药 行 业 等。

----这 种 热 烈 的 响 应 源 自 于 人 们 期 望XML 能 够 解 决 目 前Web 上 存 在
的 一 些 大 问 题。 这 些 问 题 是 众 所 周 知 的： Internet 的 速 度 极 慢，
有 时 甚 至 与 爬 行 速 度 不 相 上 下； 虽 然 您 可 以 在 线 获 得 各 种 信
息， 但 要 找 到 您 需 要 的 信 息 却 极 为 困 难。

----上 述 问 题 的 产 生 主 要 是 由Web 语 言 — — HTML ( 超 文 本 标 记 语
言) 的 性 质 引 起 的。 尽 管 自HTML 发 明 以 来， 它 已 成 为 最 成 功 的 电
子 发 布 语 言， 但 它 却 过 于 表 面 化。 事 实 上， HTML 仅 仅 描 述Web 浏
览 器 应 该 如 何 在 页 面 上 安 排 文 字、 图 片 和 按 钮。HTML 注 重 表 现
形 式， 因 此 相 对 简 单 易 学， 但 同 时 也 有 弊 端 存 在。

----首 先， 用HTML 创 建 的Web 站 点 除 了 像 一 台 能 发 送 文 档 的 传 真 机
外， 很 难 实 现 更 多 的 功 能。 个 人 和 公 司 都 希 望 通 过Web 站 点 从
半 个 地 球 之 遥 的 地 方 接 收 顾 客 订 单 或 传 送 医 疗 档 案， 甚 至 管
理 整 个 工 厂 或 操 作 科 学 仪 器。 但 遗 憾 的 是， HTML 不 是 为 完 成 这
类 任 务 而 设 计 的。 因 此， 虽 然 您 的 医 生 可 以 将 您 的 药 物 反 应 历
史 记 录 拖 到 他 的Web 浏 览 器 上， 但 他 却 无 法 通 过 电 子 邮 件 将 该
记 录 发 给 其 他 专 家 以 便 让 他 们 直 接 将 记 录 输 入 其 医 院 的 数 据
库 中， 因 为 这 些 专 家 的 电 脑 不 知 道 该 如 何 处 理 这 些 信 息。 在 电
脑 的 眼 中， 除 了“〈H1〉 文 字〈/H1〉”、“〈BOLD〉 文 字〈/BOLD〉” 以 外
， 其 他 信 息 都 是 无 法 理 解 的。

----正 如 编 程 方 面 的 传 奇 人 物Brian Kernighan 曾 经 指 出 的 那 样，“
所 见 即 所 得” 的 问 题 是“ 您 所 看 到 的 就 是 您 所 得 到 的 一 切”。
在 上 面 的 例 子 中， 尖 括 号 叫 做 标 记。HTML 没 有 表 示 药 物 反 应 的
标 记， 这 正 是 它 的 另 一 个 重 要 缺 陷： 不 够 灵 活。 如 要 增 加 新 的
标 记， 则 要 涉 及 一 大 堆 烦 琐 的 过 程， 花 费 大 量 的 时 间， 没 有 人
愿 意 做 这 种 尝 试。 而 且， 不 仅 是 医 疗 档 案 的 交 换， 每 种 应 用 都
需 要 自 己 的 标 记。HTML 的 这 种 局 限 性 减 缓 了 目 前 在 线 书 店、 邮
购 目 录 及 其 他 交 互 式Web 站 点 的 发 展 步 伐。

----在 网 上 购 物 过 程 中， 如 果 要 对 订 单 中 的 数 量 及 运 输 方 式 进
行 修 改， 或 者 想 查 看 订 单 中 某 些 数 字 的 变 化， 您 就 需 要 让 远 处
超 负 荷 运 转 的 服 务 器 重 新 发 一 份 新 的 网 页 过 来。 此 时， 您 的
高 性 能 计 算 机 只 能 坐 等 信 息。 因 为 它 只 知 道 处 理〈H1〉 和〈BOLD〉
， 不 知 道 如 何 处 理 价 格 及 选 择 运 输 方 式 等 问 题。 此 外， 对Web 搜
索 质 量 的 不 满 也 源 于 此， 由 于 没 有 办 法 对 价 格 等 信 息 做 标 记
， 因 此 您 就 无 法 利 用 价 格 信 息 进 行 搜 索。

新 旧 参 半
----从 理 论 上 讲， 解 决 这 些 问 题 的 方 法 非 常 简 单： 用 标 记 标 明
信 息 是 什 么， 而 不 是 它 看 起 来 像 什 么。 例 如， 一 张 衬 衫 订 单 的
标 记 并 不 像HTML 提 供 的 那 样， 说 明 其 是 否 为 黑 体 或 者 是 其 行 列
的 布 局， 而 是 标 明 它 的 价 格、 尺 寸、 数 量 和 颜 色 等。 随 后， 程 序
可 以 识 别 出 该 文 档 是 一 份 客 户 订 单， 并 且 做 它 该 做 的 工 作：
以 不 同 的 方 式 显 示 它， 或 者 将 它 传 送 给 计 账 系 统， 或 者 在 第 二
天 将 一 件 新 衬 衫 送 到 订 购 者 的 家 门 口。
----作 为W3C 工 作 组 成 员， 我 们 于1996 年 开 始 策 划 这 样 的 解 决 方 案
。 我 们 的 想 法 很 有 吸 引 力， 但 并 非 完 全 独 创。 过 去， 在 进 行 印
刷 排 版 时， 印 刷 工 要 在 原 稿 上 做 出 标 记， 给 排 字 工 以 指 示。 这
种“ 标 记” 不 断 发 展， 直 到1986 年， 国 际 标 准 化 组 织（ISO） 终 于 通
过 了 一 套 创 建 新 型 标 记 语 言 的 系 统， 这 种 语 言 被 命 名 为 标 准
通 用 标 记 语 言， 即SGML。 这 种 描 述 语 言 的 语 言（ 也 被 称 为“ 元 语
言”） 已 被 证 明 在 许 多 大 型 出 版 应 用 中 非 常 有 用。 事 实 上，HTML
语 言 就 是 用SGML 定 义 的。SGML 的 唯 一 问 题 是 它 过 于 概 括。 这 种 语
言 包 含 大 量 智 能 化 的 特 性， 其 目 的 是 为 了 尽 量 减 少 击 键 次 数，
但 这 要 求 必 须 对 每 个 字 节 都 加 以 说 明， 这 使 得SGML 文 档 过 于 复
杂， 以 致 于Web 浏 览 器 很 难 处 理。

----我 们 通 过 删 除SGML 中 的 虚 饰 来 创 建 XML， 使 其 成 为 一 种 更 流
畅、 更 易 理 解 的 元 语 言。XML 包 含 一 组 规 则， 任 何 人 都 可 以 根 据
这 组 规 则 创 建 标 记 语 言。 这 些 规 则 确 保 使 用 一 个 简 洁 的 程 序
就 能 处 理 所 有 这 些 新 语 言， 这 种 简 洁 的 程 序 叫 做“ 解 析 器（
parser）”。 让 我 们 再 次 考 虑 那 位 想 要 将 您 的 医 疗 档 案 用 电 子 邮
件 发 送 给 专 家 的 医 生。 如 果 医 学 专 家 用XML 定 义 出 一 种 对 医 疗
档 案 进 行 编 码 的 标 记 语 言（ 事 实 上， 已 经 有 一 些 组 织 正 在 着 手
进 行 这 项 工 作）， 那 么， 您 的 医 生 的 电 子 邮 件 就 能 够 包 括 各 种
所 需 信 息。

----接 下 来， 为 任 何 计 算 机 编 写 程 序 以 识 别 这 种 标 准 的 医 疗 符
号 并 将 重 要 的 统 计 数 据 添 加 到 数 据 库 中 就 变 得 很 简 单 了。 正
如HTML 为 每 一 位 计 算 机 用 户 阅 读Internet 文 档 创 造 了 一 种 方 式 一
样， 抛 开 计 算 机 系 统 的 不 兼 容 问 题，XML 也 使 创 建 一 种 所 有 人 都
能 够 读 写 的 世 界 语 成 为 可 能。 与 大 多 数 计 算 机 数 据 格 式 不 同
，XML 标 记 对 人 类 也 有 意 义， 因 为 它 只 包 含 普 通 的 文 本， 除 此 之
外 别 无 其 他。

---- XML 的 统 一 能 力 来 自 于 几 条 精 心 挑 选 的 规 则。 规 则 之 一 是
几 乎 所 有 的 标 记 都 是 成 对 出 现。 如 同 括 号 一 样， 这 些 标 记 总 是
将 应 用 文 本 包 括 在 其 中。 此 外， 标 记 也 像 引 号 一 样， 可 以 多 级
嵌 套。

----嵌 套 规 则 采 用 树 状 结 构， 使 每 个XML 文 档 达 到 一 定 程 度 的 简
化。 正 如 家 谱 一 样，XML 文 档 中 的 每 一 个 图 形 和 每 一 个 文 本 代 表
其 他 元 素 的 父 亲、 孩 子 或 兄 弟； 相 互 之 间 的 关 系 是 无 歧 义 的。
尽 管 树 状 结 构 不 能 表 示 所 有 类 型 的 信 息， 但 是 它 的 确 可 以 表
示 我 们 需 要 计 算 机 理 解 的 大 多 数 类 型 的 信 息。 而 且， 程 序 员 使
用 树 状 结 构 是 非 常 方 便 的。 如 果 银 行 结 算 单 以 树 状 结 构 表 示
， 那 么 编 写 受 理 交 易 或 显 示 支 票 清 单 的 软 件 就 非 常 简 单 了。

---- XML 的 统 一 能 力 还 源 于 它 对Unicode 新 标 准 的 依 赖。 这 种 编 码
标 准 支 持 世 界 上 所 有 以 主 要 语 言 编 写 的 混 合 文 本。 像 大 多 数
字 处 理 程 序 一 样， 在HTML 中， 文 档 通 常 是 用 一 种 特 殊 语 言 写 成
的， 可 能 是 英 语、 日 语 或 者 阿 拉 伯 语。 如 果 您 的 软 件 不 能 阅 读
某 种 语 言 的 特 殊 字 符， 那 么 您 就 不 能 使 用 该 文 档。 有 时 情 况 还
会 变 得 更 糟： 由 于 编 码 的 不 兼 容， 为 中 国 台 湾 用 户 编 写 的 软
件 不 能 阅 读 中 国 大 陆 的 文 本， 因 为 编 码 不 兼 容。 但 是， 能 正 确
阅 读XML 的 软 件 就 能 处 理 这 些 字 符 集 的 任 意 组 合。 因 此，XML 使 得
信 息 交 换 不 仅 能 在 不 同 的 计 算 机 系 统 之 间 实 现， 而 且 能 跨 越
国 界 和 不 同 的 文 化 背 景 交 换 信 息。

结 束 万 维 网 上 的 等 待
----随 着XML 的 扩 展，Web 的 响 应 时 间 将 大 大 加 快。 目 前， 连 接 在
Web 上 的 计 算 设 备， 无 论 是 功 能 强 劲 的 台 式 机， 还 是 小 型 便 携
机， 所 能 做 的 不 过 是 获 得 表 单， 填 写 后 返 回 给Web 服 务 器， 直 到
完 成 一 项 任 务。 但 是， 随 着XML 中 增 加 的 结 构 化 和 语 义 化 信 息，
这 些 设 备 将 可 以 在 现 场 进 行 大 量 的 处 理。 这 不 仅 能 减 轻Web 服
务 器 的 许 多 负 担， 而 且 会 极 大 地 减 少 网 络 流 量。
----为 理 解 其 原 理， 请 设 想 到 在 线 旅 行 社 查 询7 月4 日 从 伦 敦 飞
往 纽 约 的 航 班 情 况。 很 可 能 您 收 到 的 航 班 列 表 是 您 显 示 屏 长
度 的 几 倍， 这 时， 您 可 以 通 过 选 择 起 飞 时 间、 价 格 或 航 空 公 司
来 缩 短 航 班 列 表。 但 是， 要 做 到 这 一 点， 您 可 能 不 得 不 通 过
Internet 向 旅 行 社 发 送 请 求， 并 等 待 它 的 回 答。 如 果 航 班 列 表 是
以XML 文 档 形 式 发 送 的， 则 情 形 将 大 为 不 同， 旅 行 社 将 随 航 班
记 录 发 送 一 小 段Java 程 序， 您 可 以 利 用 这 个 程 序 在 几 微 秒 钟 内
分 类 和 筛 选 航 班 记 录， 而 无 需 麻 烦 服 务 器。 如 果 几 百 万 的 Web
用 户 都 这 样 做， 则 可 获 得 惊 人 的 整 体 效 益。

----随 着Internet 上 越 来 越 多 的 信 息 采 用 特 定 行 业 的XML 标 签 做 标
记， 寻 找 您 所 需 要 的 信 息 会 变 得 更 加 容 易。 而 现 在， 如 果 通 过
Internet 搜 索“ 股 票 经 纪 人 工 作”， 其 结 果 将 使 您 淹 没 在 广 告 之
中， 而 且 可 能 搜 索 的 结 果 列 表 上 所 显 示 的 工 作 寥 寥 无 几 — —
大 多 数 信 息 被 隐 藏 在 新 闻 网 站 的 分 类 广 告 业 务 中， 搜 索 引 擎
无 法 获 得。 目 前， 美 国 新 闻 协 会 正 在 为 分 类 广 告 建 立 一 种 基 于
XML 的 标 记 语 言， 这 种 语 言 将 大 大 提 高 这 类 搜 索 的 效 率。

----很 早 以 前， 图 书 管 理 员 就 发 现 了 寻 找 信 息 的 有 效 方 法， 不
是 查 找 信 息 本 身， 而 是 查 找 小 得 多 的、 更 集 中 的、 能 够 引 导 找
到 有 用 信 息 源 的 数 据 集， 这 就 是 图 书 分 类 卡 片。 这 种 与 信 息 有
关 的 信 息 叫 做 元 数 据。 从 一 开 始，XML 项 目 的 一 部 分 就 是 为 元
数 据 创 建 一 套 配 套 标 准。1998 年2 月 完 成 的 资 源 描 述 框 架（
Resource Description Framework， RDF） 就 能 起 到 这 种 作 用， 它 对 Web 数
据 的 作 用 就 像 图 书 分 类 卡 片 对 图 书 的 作 用 一 样。RDF 元 数 据 分
布 在 整 个Web 中， 它 将 使 信 息 的 获 取 变 得 更 快、 更 准 确。

----当 然， 除 了 搜 索 以 外， 还 有 其 他 方 式 可 以 找 到 信 息。 但 是
Web 毕 竟 是 一 种“ 超 文 本”， 其 数 十 亿 的 页 面 由 超 链 接 连 接 在 一
起， 只 要 点 击 页 面 上 带 下 划 线 的 字， 您 就 能 迅 速 从 一 个 页 面
链 接 到 另 一 个 页 面。 当 用XML 驱 动 后， 超 链 接 将 具 有 更 多 的 功 能
。 被 命 名 为XLink 的 基 于XML 的 超 文 本 标 准 将 于 今 年 年 底 由W3C 发
布。XLink 使 您 能 够 从 目 标 页 面 列 表 中 选 择 您 要 链 接 的 页 面。 其
他 类 型 的 超 链 接 可 以 在 您 点 击 的 地 方 插 入 文 字 或 图 片， 而 不
是 迫 使 您 离 开 页 面。

----也 许 最 有 用 的 事 实 是，XLink 将 使 作 者 能 够 使 用 间 接 链 接， 该
链 接 指 向 中 央 数 据 库 的 条 目， 而 不 是 链 接 到 页 面 本 身。 当 页
面 地 址 改 变 时， 作 者 只 需 编 辑 一 条 数 据 库 记 录 就 能 修 改 所 有
指 向 该 记 录 的 超 链 接。 这 将 有 助 于 消 除 由 于 超 链 接 断 开 而 产
生 的 类 似 于“404 File Not Found” 的 错 误。XLink 所 具 有 的 更 有 效 的
处 理、 更 准 确 的 搜 索、 更 灵 活 的 链 接 等 功 能， 将 使 Web 结 构 产 生
革 命 性 的 变 化， 有 可 能 产 生 全 新 的 信 息 访 问 方 式。 用 户 将 发
现 这 个 新 的Web 比 今 天 的Web 更 快、 更 强 大、 更 有 用。

需 要 的 一 些 组 件
----当 然， 事 情 并 非 如 此 简 单。XML 的 确 能 让 任 何 人 都 设 计 出 全
新 的 定 制 语 言， 但 设 计 好 的 语 言 是 一 种 挑 战， 这 不 是 轻 易 就 能
做 到 的。 并 且， 设 计 语 言 仅 仅 是 开 始， 对 其 他 人 而 言， 您 的 标
记 的 意 思 并 不 明 确， 除 非 您 编 写 文 字 说 明 来 解 释 它 们。 对 计 算
机 而 言， 它 也 不 明 白 标 记 的 意 思， 除 非 您 编 写 软 件 来 处 理 它
们。

----只 需 简 单 地 想 一 下 就 能 明 白 其 原 因。 如 果 只 需 用 标 签 做 标
记 就 可 以 教 会 计 算 机 处 理 采 购 订 单， 那 么 我 们 就 不 需 要XML 了，
甚 至 我 们 也 不 需 要 程 序 员 了 — — 计 算 机 聪 明 得 可 以 自 己 照 顾
自 己。XML 所 做 的 并 没 有 这 么 神 奇， 然 而 非 常 有 效。 它 是 一 种 底
层 规 则， 解 决 了 编 程 的 细 节 问 题， 让 兴 趣 相 投 的 人 们 可 以 集
中 精 力 处 理 编 程 中 的 难 点 — — 制 定 协 议 以 表 示 他 们 通 常 需 要
交 换 的 信 息。 这 不 是 一 个 容 易 解 决 的 问 题， 当 然 也 不 是 一 个 新
问 题。

----不 兼 容 的 计 算 机 系 统 不 断 扩 张， 几 乎 给 人 类 活 动 的 各 个 领
域 都 带 来 了 延 误、 费 用 损 失 和 混 乱， 因 此 需 要 制 定 一 些 协 议。
人 们 希 望 不 必 使 用 同 样 的 计 算 机 就 能 交 流 思 想 或 进 行 交 易，
为 使 这 一 理 想 成 为 可 能， 人 们 已 经 制 定 了 许 多 有 针 对 性 的 交
互 式 语 言。

----在 新 的XML 语 言 草 案 出 现 之 前， 设 计 者 们 必 须 在 三 件 事 上 达
成 一 致： 允 许 使 用 什 么 样 的 标 记、 标 记 元 素 如 何 相 互 嵌 套 以 及
如 何 处 理 它 们。 对 于 前 两 者， 也 就 是 语 言 的 词 汇 表 和 结 构， 它
们 被 文 档 类 型 定 义（Document Type Definition ， DTD） 所 规 定。XML 标
准 并 不 要 求 语 言 设 计 者 必 须 使 用DTD， 但 大 多 数 新 语 言 都 将 使
用DTD， 因 为 它 可 以 使 程 序 员 更 轻 松 地 编 写 能 够 理 解 标 记 并 智
能 地 处 理 标 记 的 软 件。 程 序 员 同 时 也 需 要 一 套 指 南， 该 指 南 以
人 类 的 语 言 描 述 所 有 标 记 的 意 义。 例 如，HTML 有DTD， 但 是 当 程
序 员 在 编 写 浏 览 器 或 其 他Web 软 件 时， 要 参 考 数 百 页 描 述 性 的
文 字 说 明。

有 关 样 式 的 问 题
----对 用 户 而 言， 重 要 的 是 程 序 能 够 做 什 么， 而 不 是 说 明 什 么。
在 许 多 情 况 下， 人 们 希 望 软 件 能 够 向 读 者 显 示 用XML 编 码 的 信
息。 但 是，XML 标 记 并 没 有 提 示 如 何 在 显 示 屏 或 页 面 上 显 示 信 息
。
----事 实 上， 这 对 出 版 人 员 非 常 有 利。 出 版 人 员 总 希 望 能 够“ 一
次 写 入， 随 处 发 布” ， 即 根 据 需 要， 提 取 出 版 物 中 的 内 容 以 各
种 格 式 显 示， 既 可 以 是 打 印 的 又 可 以 是 电 子 的。XML 通 过 对 内
容 做 标 记 来 描 述 其 意 义， 从 而 使 显 示 与 内 容 相 分 离。 出 版 人 员
可 以 采 用“ 样 式 表” 的 规 则 为 不 同 显 示 设 备 重 新 定 义 格 式。 目
前， 针 对XML 样 式 表 开 发 的 标 准 被 称 为 可 扩 展 样 式 表 语 言（
Extensible Stylesheet Language）， 即XSL。 有 几 种Web 浏 览 器 的 最 新 版 本
都 能 阅 读XML 文 档， 并 采 用 合 适 的 样 式 表， 在 屏 幕 上 对 信 息 进
行 分 类 和 格 式 化。 除 了 基 于XML 的 网 站 运 行 速 度 更 快、 更 易 使 用
外， 读 者 可 能 根 本 不 知 道 他 所 看 到 的 是XML 文 档 而 不 是 HTML 文
档。

----这 种 发 布 方 式 对 视 力 有 缺 陷 的 人 非 常 有 利。 样 式 表 使 他 们
可 以 将XML 译 为 盲 文 或 可 听 见 的 语 音。 这 项 功 能 还 给 想 在 汽 车
里 冲 浪 的 人 带 来 了 好 处： 他 们 会 发 现 将 页 面 转 换 为 语 音 非 常
方 便。

----虽 然Web 起 源 于 学 术 界， 但 推 动 其 飞 速 发 展 的 是 商 业， 准 确
地 说， 是 对 未 来 所 获 商 业 利 益 的 预 期。 最 近 出 现 的 通 过Web 进 行
商 品 零 售 的 现 象 已 经 引 起 了 广 泛 的 注 意， 但 是B-to-B 的 商 务 活
动 向 在 线 发 展 的 速 度 却 受 到 限 制。 例 如， 通 过 制 造 过 程 的 商 品
流 需 要 自 动 化， 但 实 际 上， 依 赖 于 复 杂 的 程 序 到 程 序 的 交 互
作 用 系 统 的 运 行 状 况 并 不 理 想， 其 原 因 是 它 们 所 依 赖 的 统 一
处 理 过 程 并 不 存 在。 几 个 世 纪 以 来， 人 类 在 商 务 活 动 中 已 经 成
功 地 采 用 了 交 换 标 准 化 文 档 的 方 式， 如 采 购 订 单、 发 票、 货 物
清 单、 收 据 等。 文 档 能 够 在 商 务 活 动 中 起 作 用 是 因 为 它 并 不
要 求 所 涉 及 的 各 方 知 道 对 方 的 内 部 处 理 过 程。 每 条 记 录 所 表
述 的 信 息 正 是 其 接 收 者 所 需 知 道 的 信 息， 除 此 之 外 别 无 其 他。
也 许， 这 种 交 换 文 档 的 方 式 也 是 在 线 进 行 商 务 活 动 的 最 佳 方
式。 但 是，HTML 并 不 是 为 此 项 任 务 而 创 建 的， 相 反 地，XML 是 为 文
档 交 换 所 设 计 的。 而 且 越 来 越 清 晰 的 是， 全 球 化 的 电 子 商 务 将 主 要 依 赖
于 协 议 流， 几 百 万 条 协 议 以XML 文 档 形 式 在Internet 上 传 送。

----这 样， 对 用 户 而 言， 由XML 驱 动 的Web 将 更 快、 更 友 好、 更 适 合
进 行 商 务 活 动。 另 一 方 面，Web 站 点 设 计 者 将 发 现 越 来 越 需 要XML
， 大 批 程 序 员 将 被 要 求 尽 量 开 发 新 的XML 语 言。 此 外， 自 学 成 才
的 网 络 黑 客 还 没 有 消 失， 危 险 依 然 存 在， 将 来 的Web 设 计 者 不
仅 需 要 精 通 如 何 创 建 文 字 和 图 形， 而 且 还 要 精 通 如 何 构 建 多
层 次 独 立 的DTD 系 统、 数 据 树、 超 链 接 结 构、 元 数 据 和 样 式 表，
这 些 都 是 使 第 二 代Web 结 构 变 得 更 加 健 壮 的 基 础。

--

Powered by eXtensible Markup Language

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.112.99.209]


XML名称的一点历史

 发信人: veb (君), 信区: XML
标 题: XML名称的一点历史
发信站: BBS 水木清华站 (Tue May 16 17:43:27 2000)

关于此规范的正确题目，亦即XML的正确全名，应该是Extensible Markup Language，
eXtensible Markup Language只不过是一个拼写错误罢了。但是，现在简写XML不仅正
确，而且正如它在本规范的标题中一样，是Extensible Markup Language的官方名称。

这个名称和简写是由James Clark最先提出的，其它可供选择的名称还包括小型标准置标
语言MGML (Minimal Generalized Markup Language), 标准置标语言的小型结构MAGMA
(Minimal Architecture For Generalized Markup Applications), 以及互联网置标结
构语言SLIM (Structured Language for Internet Markup)。
——Extensible Markup Language (XML) 1.0 Specs, The Annotated Version. ”

--

Powered by eXtensible Markup Language

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.112.99.209]


a comparetive view on html and xml

 发信人: lanyjie (收复台湾), 信区: XML
标 题: a comparetive view on html and xml
发信站: BBS 水木清华站 (Wed May 17 13:52:12 2000)

//this lecture is a little old, but most views are still valid
//and helpfull:) sorry it is malformatted, I can only provided as it

Web Documents: HTML->XML
How HTML has been evolving ? We are not to discuss how to do HTML in detail, but it‘s required, by self-study, that every one acquires certain maturity in HTML document composition. Even if there are hundreds of authoring tools available, familiar with
basic HTML rules are certainly helpful in real work.
Beyond HTML: CSS, XML, XSL, DHTML...
An evolution process: an idea waken up in 20 years
Vannevar Bush, “As We May Think”, July 1945, Atlantic Monthly.
Ted Nelson, Computer Dreams. 1965, introduce the word “hypertext”.
1968, Douglas Engelbart demo his NLS system at FJCC
1987, HyperCard, a popular, massively used Macintosh program to create hypertext document.
Hypermedia: hypertext is extended to include “media”, multimedia is extended to “hyper”.
An evolution process
1989.3, Tim Berners-Lee’s famous proposal, “mesh”.
1992, first version of HTML: has anchors, paragraphs, lists, headings; but no table, no image, no form, ...
1994, HTML 2.0: a major step, adding primitive image, form, imagemap,...
1996, HTML 3.2: tables, applets, text flow around images, font, superscript, subscript, ...
1998, HTML 4.0: style sheets, better tables and forms, objects, frame, ...
HTML+ (1993), HTML 3.0 (1995): too aggressive, not standard.
What a browser can do may be less or more than standard ! (good or bad ?)
SGML: the grandparent (1)
标准通用标注语言, Standard Generalized Markup Language. 1969年起源于IBM, 1986年成国际标准, ISO 8879:1986.
SGML是一种为解决不同格式文档在不同平台上的兼容性问题的通用语言, 复杂, 主要用户是排版业、政府和大企业的专职信息处理人员.
不同于HTML, SGML重点不在于直接说明文档的内容该如何表现, 而是提供一种让人们描述自己的标注语言的一种规范.
SGML: the grandparent (2)
一个SGML文档包括三个部分：声明（字符集，分界符等），DTD (Document Type Definition)，经过标注的内容。相当于“词法”, “语法”和“示例”.
DTD是核心, SGML提供描述DTD的规则, 一个DTD规定文档的结构（例如段落之间的距离，表格的显示特征等）、元素（例如段落，章节等）和类型（例如报告，信件等）
有许多用SGML描述的DTD, business letters, aircraft manuals, poetry, ...
HTML is an application of SGML
从语言语法的角度，HTML对应SGML的一 个DTD, 例如HTML 2.0的规范中有如下段落.
Primitive HTML
An HTML document is an ASCII file with “marks”/tags.
<!DOCTYPE …> <html><head> <TITLE>…</TITLE> </head> <body>….</body></html>
anchor: the essence of hypertext (concept not from SGML), links to other files or things within current file.
<a href=URL> … </a>; <a href=#id> … </a>, <a name=id>
paragraph: HTML ignors white spaces, use <p> to start a new paragraph.
list: ordered, unordered, definition
<ol><li>…</ol>, <ul><li>…</ul>, <dl><dt><dd>….</dl>
heading: setting up various headings, <h1>,…,<h6>
例子: a minimum HTML document
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<TITLE>A study of population dynamics</TITLE>
<html>, <head>, <body> may be inferred from the context
DOCTYPE给出的是关于DTD的信息，浏览器用来决定如何解释后面的内容。
例子: anchor, paragraph, list, heading
Preliminary HTML is dull
People want to be able to make web pages more attractive. (表现力问题)
image: include an image in the page, not easy to position it ! (2.0)
table: a two dimensional data presentation using a one dimensional description.
applet: graphics and animation
text flow around images: better image
Discussion: HTML 2.0的图像
problem with mixed text and image
<IMG…>中的ALIGN属性: top |middle | bottom
当文字信息和图像混杂在HTML文本中时，其显示效果常出人意料之外。一般的逻辑是：图像只不过是尺寸可能大一些的“文字”而已，它们都在同一个要被显示的对象流中。前面的ALIGN属性指出由于尺寸的不同而相对摆放的方式。“ALIGN=TOP”说的是“让和这个图像处于同一显示行的文
字向图像的顶部看齐”，等等。缺省为bottom.
Imagine: …. text stream <img .. align=middle> … test stream (见例子html-2, 3, 4)
Discussion: HTML 3.2的增强
3.2允许ALIGN取另外两个值(align=left|right)，它们指定的是图像在被显示时出现在浏览器窗口中的位置，从而有可能造成文子信息全部出现在一幅图像的左边或者右边的情形. (例子html-5,6)
结合<br>的扩展, 文字和图像的相对摆放关系能得到更好的控制
<img … align=left> This is from China. <br> 1986 <br clear=left> Starts a new line from left end.
这时，<br> 标记用于在图像旁边开始新的一行。而<br> 标记的一个扩展属性CLEAR=left|right|all , 用于指定开始一个“全新”的行, 其左边, 右边, 或者两边都没有图像.

关于table: HTML 3.2的要点之一
<table><tr><td>…<tr><td>…</table>
利用rowspan和colspan
<table>
<tr><th colspan=2> ABCDEFG <th colspan=2> 1234567 </tr>
<tr><td rowspan=2> xyz <td> a <td> b <td> c </tr>
<tr><td> 1 <td> 2 <td> 3 </tr>
</table>
每一个<td>中的内容可以很丰富, list, table等
bgcolor在表中应用可得一种高效、明快的效果

Interactive HTML: a boost to Web application
People want to go beyond newspaper stand type of services (服务性质问题)
form: be able to gather information from the user: a major step forward.
imagemap: associate regions of an image with information
applet: not just beautify web pages, but also communicate with the server
From “documents” to “services”
Information services：主动服务与被动服务；个性化服务与标准服务。
Transaction services：要有session的概念，保持连接，保持状态。
Collaboration services：分布、实时，共享信息，虚拟场合。
Computation services：metacomputing, 无缝计算。
Technical Needs for Full-featured Web Application
Better appearance, look as good as paper document.
Active pages, richer multimedia, natural audio and video.
Interactive pages, multiple ways of information flow.
Dynamic pages, generated on-the-fly
Persistent state: loosely maintaining a session
Persistent connection, more than state
Making the browser a desktop
imagemap
服务器方imagemap (有些浏览器, 例如Netscape, 还支持客户方imagemap,非标准）的实现有如下要素
一副图，layout.gif
若干描述性HTML文件，room1.html, room2.html, hall.html, etc.
一个映射文件, layout.map, 给出layout.gif中的不同区域和room1.html等的对应关系
一个CGI脚本, intro.pl，它认识layout.map, 在收到浏览器方的图像坐标后，根据layout.map返回相应的HTML文件。
Why only HTML is not enough
People want to make the browser a desktop.
HTML can grow, but inherently limited.
A strategy is to make it a general “container” to encompass various other technologies.
Applet, script, object, style sheet
改善HTML的描述能力: 多种方向与途径
CSS, DHTML, DOM, XSL, XML, …
大致可从文档结构化程度和表现力两个方面来考虑
(interactive page和dynamic page等问题属另外一个范畴的问题)
HTML的固有弱点
非结构化风格
源文件中tags遍布,不严格, 作者的随意性较强
extremely difficult to convert anything from HTML
逻辑tags使网页的表现因平台而异
<EM>, <ADDRESS>,<CITE>,<VAR>. 人们往往更愿意用“物理”tag, 诸如<I>,<B>,<FONT>等.
排版表现能力弱. 网页为什么不能达到和Word, Latex等同样的效果 ?
page designer的理想
存在创作工具(authoring tools), 有如下特性.
丰富的表现力, 例如Word.
设计的时候, WYSIWYG, 图形界面; 如果不能WYSIWYG, 手工做不应太复杂.
转换成web文档后, 在不同的平台上(浏览器中)看起来和设计时一样.
空间和时间的高效率.
SGML能满足上述1, 3两点, 但不满足2, 4.
HTML尤其在4上表现极好: 最初的成功所在.
A perspective on markup technologies
Cascading Style Sheets (CSS)
Web文档结构化表现(structured formatting)的一种技术
CSS Level 1规范, 1996年, W3C. http://www.w3.org.TR/REC-CSS1
IE 3.0开始支持
Netscape支持得不好, 但提出了自己的JavaScript Style Sheet, 从4.0开始实现.
JSSS在精神上类似于CSS.
例子: Cascading Style Sheet
为什么称“cascading”?
在文档中可定义多个“style sheet”, 它们按“逆序”优先的方式应用于文挡的表现. 例如在上例中加上
<STYLE TYPE="text/css"><!--
LI {font-family:Times New Roman;
font-size: 24pt;
color: #ff00ff}
--></STYLE>
表单项的字体将取24点.
自从有了CSS, HTML 3.2中定义的<FONT>标记将被逐步淘汰. (HTML 4.0定<FONT>为 “deprecated”, 预计下一个HTML标准将不会再有<FONT>)
CSS可以在多个层次应用
文件中的元素, <DIV>和<SPAN>.
DIV用于段落结构(起一新段落,且后跟空格换行); SPAN用于段落之中.
整个文件, <STYLE> … </STYLE>出现在<HEAD>…</HEAD>中.
一组文件, 创建单独的风格描述文件, 在HTML文件中用<LINK>标记引用.
<HEAD><LINK … HREF=“demo.css”></HEAD>

风格定义的重用
文档中的DIV和SPAN元素可取两个属性, ID和CLASS: <DIV ID=“id”>, <SPAN CLASS=“class”>.
在<STYLE>…</STYLE>定义中分别用DIV#id和SPAN.class对应说明.
ID适用于单个元素, 即文档中同一id值只应该出现一次(尽管当前浏览器不一定严格检查)
同一CLASS值可用于多个元素, 使它们具有同样风格.

在单独文件中的风格说明
在style sheet中能说明什么 ?
color: #RGB或者颜色名yellow, red, green等
font-family: 字型, Arial, Helvetica, serif, ...
font-size: 字号, 24pt, …, larger; …
font-style: 字体, normal, italic, oblique
font-variant: normal, small-caps
font-weight: normal, bold, lighter
white-space: normal, pre (保留空格), nowrap (不自动换行).
… …http://www.w3.org.TR/REC-CSS1
XSL: eXtensible Style Language
Inso, Microsoft, ArborText给W3C的建议, 尚未被标准化, W3C也还没有安排研究.
功能强于CSS, 不仅提供风格设计手段, 还提供文档结构化设计的手段(如同XML)
源于DSSSL (Document Style Semantics and Specification Language), SGML文档格式信息的一种描述方式.
XSL: 简单例子
<xsl>
<style-rule>
<target-element type=“price”/>
<attribute-name=“sale” value=“true”/>
<apply font-weight=“bold” font-color=“red”/>
<style-rule>
</xsl>
这将导致“红色黑体”应用于文本中的元素
<PRICE SALE=“true”> …. </PRICE>
我们注意到设计者可以“自定义”标记 (CSS只是“半自定义”)
Dynamic HTML: a competitor to JavaScript
W3C和Microsoft1997年初提出, IE 4.0支持.
将Object的概念引入HTML, 增加web page在浏览器方的交互性和动态性
Dynamic styles: 动态改变元素的显示属性
Absolute positioning: 图像等在x,y,z方向的定位
Dynamic content: 网页内容可动态增减
Multimedia effects: 将图像处理和动画功能等应用于网页元素.
Data awareness: 从数据自动生成表等
object, script makes above possible.
XML: eXtensible Markup Language
HTML done right.
SGML-lite, 允许作者自定义tags.
not only for web documents, potential to become a standard for virtually all documents in an organization.
works smoothly with Cascading Style Sheets
例子: XML文件
<?xml version=“1.0”?>
<WEATHERREPORT>
<DATE> 7/14/97 </DATE>
<CITY> NORTH PLACE </CITY> , <STATE> NX </STATE>
<COUNTRY> USA </COUNTRY>
High Temp: <HIGH SCALE=“F”> 103 </HIGH>
Low Temp: <LOW SCALE=“F”> 70 </LOW>
Morning: <MORNING> Partly Cloudy, Hazy </MORNING>
Afternoon: <AFTERNOON> Sunny and Hot </AFTERNOON>
Evening: <EVENING> Clear and Cooler </EVENING>
</WEATHERREPORT>
设计者可以用CSS的方式自定义标记, 例如CITY {font-family: bold}等. 标记定义和用它们标注的内容一起送给处理器.
一般来讲, 情况可以丰富得多, 标记定义只是DTD的一部分.
XML: 强调的是文档的结构
关心“how a document is built, rather than how it is formatted.”
文档的结构意味着标题, 章节, 段落, 图表, 表项, … (例如我们可以想象例子中的<WEATHERREPORT>的定义含有关于天气预报报告格式的全局性要求和说明.)
“formatting a document”关心字型, 字体, 字号, 颜色, ...
XML: 基本概念
元素(element)与标记(tag). 元素由标记加上内容构成.
标记与属性(attribute). 属性是针对元素的, 但形式上常附着在标记中.
处理器与浏览器. XML不仅是为了web.
“Well Formed”XML文档
标记成对, 适当嵌套, 大小写敏感. <B>..<I>..</B>..</I>不合法
冠以<?xml version=“1.0”?>, 一个well formed HTML文档即成为XML文档.
Browser: a parsing engine and a presentation engine
parsing: 看一个标注的文档是否符合要求
由于HTML不严格, 通常HTML浏览器也就不严格, 这造成跨平台的不一致性
non-validating parser: 只检查文件是否“well formed”. XML既要求标记严格成对, 还要求不同的标记对之间只能有并列或者嵌套关系.
validating parser: 检查是否符合DTD.
presentation: 表现一个文档
Plan in the present, save in the future
我们能够感受到自定义标记的power.
文档编写也直截了当 (XML DTD的编写也比SGML DTD简单许多)
但需要仔细设计: 将注意力集中在文档的结构特征上. 信件, 备忘录, 技术报告等通常可能有不同的结构要求. HTML没有什么结构要求, 例如它不要求<H2>一定要在<H1>之后出现.
例子: XML文档和它的DTD
like style sheet, DTD can appear in the document or in separate files.
<?xml version=“1.0” standalone=“no” encoding=“UTF-8”?>
<!DOCTYPE SIMPLE SYSTEM “http://127.0.0.1/simple.dtd”>
<SIMPLE><DOCUMENT trackNum=“1234”>
<TITLE> Sample Document </TITLE>
<AUTHOR><FIRSTNAME> Simon </FIRSTNAME>
<LASTNAME> St. Laurent </LASTNAME>
<COMPANY> XML Mania </COMPANY></AUTHOR>
<SUMMARY> This is an entry inside an element:&Description;
</SUMMARY></DOCUMENT></SIMPLE>
DOCTYPE指出了DTD所在,standalone=“no”说明本文档引用某个单独的DTD.
一个关于图书编目卡的DTD:
<!ELEMENT DOCUMENT (TITLE, AUTHOR+, SUMMARY*, NOTE?)>
<!ATTLIST DOCUMENT
trackNum CDATA #REQUIRED 必要属性
secLevel (unclassified|classified) “unclassified”> 可选安全属性, 缺省值
<!ELEMENT TITLE (#PCDATA)> 语言的一种固有数据类型
<!ELEMENT AUTHOR (FIRSTNAME, LASTNAME, (UNIVERSITY|COMPANY)?)> 作者元素所含的子元素
<!ELEMENT FIRSTNAME (#PCDATA)>
<!ELEMENT LASTNAME (#PCDATA)>
<!ELEMENT UNIVERSITY (#PCDATA)>
<!ELEMENT COMPANY (#PCDATA)>
<!ELEMENT SUMMARY (#PCDATA)>
<!ENTITY Description “This is a very simple sample document.”>
一些解释
CDATA: character data, 将内容看成纯字符, 处理时不需分析.
PCDATA: parsed character data, 将内容看成加标注的数据, 处理时要分析.
Element: 描述文档中逻辑成份, 可以嵌套, 可有属性. (嵌套关系限定了文档的结构, 例如按本例的DTD, <LASTNAME>就不能出现在<AUTHOR>外.
Entity: 特殊需要的“named constant”. 例如“lt”代表“<”, “nbsp”代表空格等. 引用时在前面加“&”, 在后面加“;”.
+, 至少出现一次; *, 出现零次和多次; ?, 最多一次; 无符号, 必须恰好出现一次; |, 或条件.
XML for Commerce
a general data interchange format
both machine readable and human readable (PDF is not human readable)
platform independent
can represent data from various types of databases
easy to parse
XML and the Future: Site Architectures
Currently, only a few tools available
Lark, MSXML, NXP, Jumbo, NSGMLSU
IE微弱支持, Netscape不支持, 但都表示要支持.
Web site architectures: how it is going to change ?
最初, 站点结构是基于文件系统的 (file system based).
由于对动态网页的需求, 现在已有许多站点是基于数据库的 (database-driven sites). 其技术支持是CGI, ASP, WAI等等.
但基于数据库的站点有些问题: 效率, 对搜索引擎不友好,需专人维护等等.
XML有可能使site变成一个由内容和若干共享成份(DTD, style sheet, link group, script)形成的结构.
XML gives rise to research activities
“An XML Framework for Agent-based E-commerce”, ACM Communications, March 1999.
现在的E-commerce是用户上网看广告,订货. 有鉴别能力; 但时间有限, 精力有限, 知道的URL有限 .
未来的E-commerce, 用户用agent来看广告,订货. 为了生意好, 买方最好给agent提供方便: 用XML重建website !

Home work (HW7)
Create your homepage manually, using as many markup features as possible.
Submit by sending me its URL
important: follow the format
Subject: 姓名

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 162.105.40.80]


XML:下一代Web语言(1)

 发信人: anyhow (来生缘), 信区: XML
标 题: XML:下一代Web语言(1)
发信站: BBS 水木清华站 (Mon May 22 12:11:27 2000)

可扩展标记语言(XML)是一个在文本文档中标记结构的简单语言。它是基于一个叫
做标准归一化标记语言(SGML)的国际标准。开发SGML是为了定义电子文档的结构和
内容，1986年国际标准化组织(ISO)对它进行了标准化。

    SGML最早出自IBM，但很多公司对它进行了大量补充。XML已由万维网公司联盟
(W3C)开发，但XML的技术规范是由Netscape和Microsoft的代表以及一个很大的叫
做"文本编码倡议"(TEI)的学术研究项目的成员共同编写的。W3CXML专门利益集团
拥有100多家公司的代表和特邀专家。

    W3C在1998年2月正式批准了XML的标准定义。本质上，XML的前途不在于它给
Web页面增加趣味的潜力，而在于它能有助于以这样一种方法对文档和数据进行结
构化处理，从而使它们能在部门、客户和供应商之间进行交换。虽然XML尚未广泛
使用，但由于它能让公司共享和使用分布在不同平台上的信息，故正在引起越来越
多的注意。

    XML能帮助用户实现动态内容生成、企业集成和应用开发。正当支持过时系统
变得日益困难以及业务需要合并数据之时，对数据分散在多个过时系统的地方，
XML可以减轻一些负担。

    为观察XML和看看它与超文本标记语言(HTML)有什么不同，最简单的方法就是
从HTML的例子开始。HTML用了一个有限的标志集，来定义文档结构的基本信息。作
为一种标记语言，HTML使用简单，任何有冲动的人都能从乱画开始编制基本的Web
页面。

    XML看上去像HTML，语法的作用也相似，但XML具有灵活性，让你生成和使用自
己的标志集和属性，来识别结构成分和文档内容。但XML不是另一种标记语言：它
以一种与HTML相似的方法定义文档的内容、定义文档在Web上的外观。利用HTML，
Web设计师以一种对内容的意义不说任何话的标志集，标记Web页面上的文本、图像
和其他内容；他们只建议如何通过Web浏览器来显示内容。XML不只是处理文档的外
观，而且还处理它的内容。

    一般而言，XML被看成比HTML更好的工具，因为它给出有关数据的更完整信息
。XML提供元数据，即有关数据的数据。这就使智能信息搜索更容易，例如，在
HTML中，apple(苹果)这个单词可以标记成bold(粗旷)，来描述它应该看上去是怎
样的。但是，XML还将包含描述对象的标记，如fruit(水果)，或apple(苹果)或
red(红色)。

    有些行业已编制了自己的XML方言，包含了行业特有的识别标志，如化学行业
已开发了化学标记语言CML。

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 162.105.40.80]


shaken but not stirred

 发信人: FreeM (孤雁·随意飞翔未曾迷途), 信区: XML
标 题: shaken but not stirred
发信站: BBS 水木清华站 (Wed Jun 7 06:30:12 2000)

May 24, 2000
Shaken, But Not That Stirred
by Edd Dumbill
Although the XML Protocols Shakedown Panel at WWW9 in Amsterdam last week hi
ghlighted the positions of Sun, Microsoft, and IBM on SOAP, attendees hoping
for a clear vision of the future would have been disappointed.
The panel, chaired by Dan Connolly (XML Activity Lead, W3C), consisted of so
me of the main protagonists in the XML protocols arena, including authors an
d implementors of SOAP and XML-RPC. Connolly introduced the panel session by
noting the submission to the W3C of several XML protocol specifications as
Notes (including ICE and SOAP1.1), and mentioning that there was a feeling t
hat there may be scope for a standardization process in this area.
The SOAP 1.1 submission certainly brought with it a higher level of vendor c
onsensus than we have seen before -- six companies adding their names to tho
se of author companies Microsoft, IBM, DevelopMentor, and UserLand. The 1.1
revision, separating out the data encoding from the RPC, has even penetrated
the skeptical firewall of Sun Microsystems. While not endorsing SOAP, Sun a
ppears at least to be able to live with the most recent version.
For the most part, the panel served as a useful summary of the positions exp
ressed over recent weeks on the xml-dist-app mailing list.
Goals
The W3C has a diverse membership, and understanding the perspectives of the
member companies sheds some light on their positions with regard to XML prot
ocols, and SOAP in particular. Some companies--notably Sun--come from a more
enterprise-based angle, concerned about scalability and issues such as late
ncy. Other companies, coming from the PC world (UserLand Software, and to a
certain extent, Microsoft), are concerned more with application and operatin
g system integration, using XML-over-HTTP to achieve this over the Internet.

It is not at all clear that there is agreement on the goals of an XML protoc
ols activity. While the encoding aspects of the SOAP proposal received broad
approbation, the notion that RPC should be a key part of an XML protocol wa
s the subject of much disagreement. The RPC approach, advocated by UserLand
Software (an enthusiastic deployer of XML-RPC), has too many shortcomings to
satisfy the broader requirements of many other companies. Issues such as ne
twork latency and risk of lock-in were raised by panel members.
Noah Mendelsohn, representing Lotus and IBM, highlighted the tensions within
this area. At one end of the spectrum, an application might simply want to
fetch a stock-quote, while at the other end lay high-volume robust e-commerc
e applications. Analyzing the situation, he advocated that the W3C should se
ek to provide a common infrastructure that would support the construction of
solutions to both these requirements. At the basic level, what is required
is an enveloping and encoding solution, which applications can then build on
top of. RPC-only approaches seem to close down these options too early. Ken
Macleod, an independent consultant and implementor of lightweight protocols
, agreed that the generic enveloping and encoding scheme proposed by SOAP wa
s a good thing. He observed that the infrastructure provided by current line
-based interchanges (FTP, HTTP, SMTP, etc.) was not really expressive enough
, and a structured container for protocol exchanges would be of benefit.
Both Sun and IBM indicated that a lightweight XML protocol only solved certa
in problems, and did not provide the complete infrastructure that industrial
-strength electronic business required. Both these companies are participant
s in the ebXML initiative, which will address these higher level concerns. T
here seemed to be a certain amount of optimism that a lightweight XML protoc
ol might form the substrate upon which more heavyweight machinery could be b
uilt.
Alan Kotok's report from the recent ebXML meeting, published in XML.com this
week, shows that SOAP 1.1 hasn't been actively considered yet by the ebXML
transport, routing, and packaging team, but it must surely be a good candida
te for a foundation layer. It is to be expected that SOAP will form a key pa
rt of Microsoft's BizTalk systems.
Microsoft's Henrik Frystk Nielsen, referring to the RPC argument, noted that
a programming model wasn't the issue at hand, but that a Web-like enabling
technology was required--one that would enable programmers to add on modules
, and use it for what they want. He took the view that drawn-out standardiza
tion and invention processes (surely not a reference to ebXML?) placed unnec
essary barriers to innovation for developers who wanted to create new distri
buted applications. However, the contention of the XML protocol conservative
s is that it's precisely this freedom--familiar to those who have programmed
in a PC environment--that allows many bad things as well as good creations
to happen.
Declarative Approach Should Be Preserved
Henry Thompson, co-editor of the XML Schema specification, provided an alter
native view on the problem. He presented an idea for business exchanges cond
ucted via two connected monologues where instead of exchanging messages, the
participants updated documents which the other party read. While his idea w
as admittedly purely in the research stage, it served as a useful platform t
o remind us that preserving the declarative and self-describing nature of ma
chine-to-machine exchanges was important. This helps avoid proprietary lock-
in and poor design.
Encouraging lock-in and fragmentation was an accusation leveled at the RPC a
pproach to XML protocols -- vendor A will invent their API and all subsequen
t vendors must either conform or reinvent. However, it is equally a danger e
ven if RPC is not considered. The temptation presented by the serialization
model of SOAP is for developers simply to take the literal serialization of
their internal data structures as their message format. This drives applicat
ion semantics into the processing application and out of the public gaze.
Such points again reinforce that, for general inter-enterprise exchanges, a
lightweight XML protocol is not enough, and requires the addition of higher-
level constraints. Where such a protocol is sufficient, though, is in applic
ation integration for private applications communicating over the Internet (
an example of this sufficiency is UserLand's web site editing system, Manila
& Pike, where the editor application retrieves content from a remote web si
te using XML-RPC).
However, HTTP-enabling hitherto machine- or LAN-bound applications is one of
the factors giving rise to security worries with XML protocols. Although th
ere is nothing inherently insecure about the SOAP or XML-RPC specifications,
neither is there any security baseline or implementation recommendations. S
uch matters would be left to implementors. While it can be argued that the p
rotocols are no more or less secure than CGI scripts, the expected deploymen
t of XML protocols is much more pervasive than that of CGIs. Nobody ritually
exposes their entire applications to the world at large through the Web, bu
t careless integration of SOAP or XML-RPC could do just that.
SOAP Still the Front Runner
How They Stand on SOAP
Microsoft: Enthusiastic promoters of SOAP from the start. Expected to base t
heir next generation Windows architecture on XML and SOAP technology.
IBM: Joined as co-authors in most recent draft. Have already made a freely a
vailable SOAP implementation, which is expected to be donated to the open-so
urce Apache XML project. Also involved in ebXML. Pragmatists.
Sun: Not overly enthusiastic about SOAP, but will selectively deploy it and
donate programmer time to support IBM in an open-source SOAP effort. Pushing
ebXML as a more robust alternative in serious e-commerce situations.
So, now that the arguments have been thoroughly rehearsed by the concerned p
arties, where do we stand? Microsoft is still pressing ahead with their SOAP
deployment, the technology likely to find its way deep into their new produ
cts. Thus, anyone wanting to communicate with their systems will find SOAP a
n irresistible force. At a higher level, the ebXML effort is expected to del
iver a more wide-ranging solution to meet the needs of electronic business,
but not for at least 12 months. If the W3C were to undertake an activity on
XML protocols, it is highly likely they would take that amount of time (or m
ore) as well. The W3C Advisory Committee meets this week and will probably m
ake a recommendation as to whether the W3C should pursue the issue.
SOAP is definitely here for the short and medium term, regardless of any oth
er activity undertaken by standards bodies. The many issues of security, sca
lability, and interoperability remain to be discovered by implementors.
As with XML schemas a year or so ago, there's no "silver bullet" solution fr
om Day One. There are several existing protocols that you can choose from, a
nd ultimately there will be some consolidation--either by standardization, o
r by market forces.

--
At every level, Perl is about helping you get from here to there
with minimum fuss and maximum enjoyment. That's why so many
Perl programmers go around with a silly grin on their face.

※ 来源:·BBS 水木清华站 smth.org·[FROM: edunix.cic.tsin]


Dr.Bob 的 xml 观

 发信人: smuggle (我想小胖), 信区: XML
标 题: Dr.Bob 的 xml 观
发信站: BBS 水木清华站 (Tue Jun 13 05:59:01 2000) WWW-POST

XML - Hit or Hype?

Is it me, or does every other IT-related announcement contain some kind of
reference to XML-support these days? XML certainly seems hot, or at least
a hype if you ask me. According to some people at least, XML is The Holy
Grail - the Final Answer to Life, the Universe and Everything (or at least
everything on your computer). But what exactly is XML? And what does it
mean to us? Join me on a personal gold quest...

XML stands for eXtensible Markup Language. It's a subset of SGML, while
HTML is an application of SGML. The difference between XML and HTML is the
fact that for HTML a pre-defined set of syntax rules exists. An XML
document needs to follow the general XML syntax rules, but the exact
keywords (tags) that can be used in an XML document are up to the author
of the document, and specified in something called the DTD (Document Type
Definition). Together with a DTD, an XML document is said to be a self-
describing document, and that's powerful indeed. And yes, an XML DTD for
HTML documents probably exist as well. So, an XML document is just an
ASCII file, and while anyone and anything can read it, in order to
understand it, we should have access to the DTD file as well.

So, what's the advantage of XML then? Well, it's a simple file format that
everyone and everything can read. Combined with the ability to define your
own syntax rules in a DTD, we can put just about everything in XML. From
books to webpages to databases to customer order forms and invoices to
entire operating or file systems - it's like a Silver Bullet. It almost
sounds like Java, doesn't it? And with Java I always had the idea that
there was more written about Java then was written in Java.

When it comes to XML, most people seem to think that XML will be the Holy
Grail of file formats. Everything will be XML, and XML will be the
ultimate way of communicating. That certainly seemed to be the case at XML
One Fall '99 in Santa Clara (early November 1999), which I attended as
visitor as well as speaker. There were roughly three kind of people there.
Speakers could be divided into Vendors or Consultants, and the biggest
group were the Visitors; almost 400 were present. Vendor sessions
(including some of the keynotes that I attended) usually were along the
lines of "we have these tools that support XML - you need them!".
Consultant sessions usually went along the lines "Your organisation needs
to adapt XML now - and we can help you! (especially defining your DTDs,
which seems to be an area where a lot of money is made currently)". The
visitors all went like "XML is really important, we must do XML now" (and
some already "did XML"). When I asked some of these people (speaker as
well as visitor) about "Why XML?", they usually stared at me, and - after
a few awkward silent moments - answered "because it's the future; everyone
goes XML". Yes, but why go bananas about it? I can see the sense of having
an intermediate file format or language for data transfer (the "Esperanto"
of computers), which XML and DTD can provide. Especially with the open
community on the internet, XML-support will be handy. But I doubt
if "everything will become XML". Sure, one or two years from now most
tools and applications will have some kind of "import/export to XML"
feature, just like most today have an "export to HTML" feature of some
sort. But that doesn't mean that everything goes HTML. Nor did
everything go Java when this was predicted a few years ago (remember
Corel's Java Office Suite?)

XML is a way to give structure to data and information that can be passed
between one application to another (including inter-application
communication between multiple tiers,like Delphi 5 InternetExpress
offers). As such, it offers a standard format, independent of
the communication protocol being used. This is also one of the reasons why
XML will play an important role in Electronic Commerce EDI (Electronic
Data Interchange) applications and situations. The fact that a DTD can be
used to "define" (and check) the XML document itself means that -
theoretically - everyone can talk to everyone and everything as long as
proper XML/DTD is used. XML will also play a role in the Publishing
world. While I don't see XML replacing HTML for creating webpages, XML can
certainly be used to publish papers, books or reference material (the
structured way in which an XML document is built-up will also have effect
on cataloguing these publications). IMHO, however, that's a relative small
market, especially compared to the hype that "everything
will become XML [format]".

Personally, I think that the hype around XML shouldn't prevent us from
seeing what XML can really mean for us, and our applications. A portable
file format, useful as language for inter-application communication.
Nothing more, but nothing less. And when it comes to
support for XML, then it's good to know that IBM, Oracle, Sun, Microsoft
and all the other big Vendors have numerous tools that we can buy that
support XML Today. As it's good to know that even more Consultants are
nearby to help us (and our organisation) to get ready for XML. But it's
even better to know that we can write applications that utilise XML - with
or without DTD - by ourselves, for example using Borland Delphi 5.

Delphi 5 InternetExpress makes use of XML to communicate between the
Application Server (MIDAS DataSetProvider) and the Client, which is a Web
Server in this case (XMLProvider - talks only to a WebBroker
MidasPageProducer). The XML that's being passed back and forth between the
Application Server and the Web Server actually contains MIDAS data
packets. In previous versions of Delphi, this MIDAS packet was in a
propriety file format, and now it's XML. More open. In theory, that is,
since the MIDAS data packet does not come with a DTD, so for now the only
applications (or tiers) that have a good chance of "understanding" these
XML packets are written in Delphi 5 (or C++Builder 5, once that version
ships).

In other words: while MIDAS Clients and Servers in Delphi 5 can now send
packets in XML, this does not really benefit from one of the core benefits
of XML. I still can't connect a PowerBuilder Client to a DataSetProvider,
nor can Oracle8i produce XML capable of being used by an XMLBroker
component. And in fact, even within Delphi 5 applications, the XML
produced by the DataSetProvider seems to be usable only by an XMLBroker
component, which in turn only talks to a MidasPageProducer. Between a
DataSetProdiver and a "regular" ClientDataSet, the data is still passed
in the old propriety (and undocumented) data format.

So, XML is hype and Delphi's support of XML is also hot air? Well, Delphi
does support XML all right, but not in the way or manner where XML is at
its best. And even the other area where Delphi supports XML - as part of
the ADO components - is merely inherited from functionality that is
already present in the ADO components (and believe it or not:
the XML produced by an ADOTable is not the same as the XML produced by the
DataSetProvider when connected to an ADOTable).

Delphi 5's support of XML gives us a good headstart. We can create
distributed applications where the different tiers can communicate between
each other by sending XML back and forth. And we can load and save MIDAS
data packets in XML format. To be used by MIDAS-aware applications only,
for now. But it's a start, and it's here.

And XML itself? Well, at least I hope to have shown that it certainly has
potential to play an important role. But the Holy Grail? Personally, I
don't think so. Not as long as - without a DTD - mine looks different than
yours.

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.117.98.32]


一种新的编程语言

 发信人: veb (君), 信区: XML
标 题: 一种新的编程语言
发信站: BBS 水木清华站 (Wed Jun 28 08:41:49 2000) WWW-POST

MS推出C# (C sharp)
下面是与XML有关的一部分.

The new model for developing applications means more and more solutions
require the use of emerging Web standards like Hypertext Markup Language
(HTML), Extensible Markup Language (XML), and Simple Object Access Protocol
(SOAP). Existing development tools were developed before the Internet or when
the Web as we know it today was in its infancy. As a result, they don't
always provide the best fit for working with new Web technologies.

C# programmers can leverage an extensive framework for building applications
on the Microsoft .NET platform. C# includes built-in support to turn any
component into a Web service that can be invoked over the Internet-from any
application running on any platform.

Even better, the Web services framework can make existing Web services look
just like native C# objects to the programmer, thus allowing developers to
leverage existing Web services with the object-oriented programming skills
they already have.

There are more subtle features that make C# a great Internet programming
tool. For instance, XML is emerging as the standard way to pass structured
data across the Internet. Such data sets are often very small. For improved
performance, C# allows the XML data to be mapped directly into a struct data
type instead of a class. This is a more efficient way to handle small amounts
of data.

--

Powered by eXtensible Markup Language

※ 修改:·veb 於 Jun 28 08:44:47 修改本文·[FROM: 202.112.99.209]
※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.112.99.209]


今天居然这么多文章

 发信人: justkidding (IADer--单身土人), 信区: XML
标 题: 今天居然这么多文章
发信站: BBS 水木清华站 (Fri Jul 28 19:16:08 2000)

我还以为走错版了呢，呵呵
关于java+xml我也来说两句
最近在做一个项目，就是拿java+xml做EDI的
首先，我对java的前景还是非常看好的
中国现在应用java可能并不多，
但是据在国外的人说在硅谷java程序员却比C程序员受欢迎得多
做软件不能因为大家都不用好东西，而说这个东西就不适合我用
最好是自己试试再说。
我个人感觉java使用起来比vc要爽，很好的OO结构，当然前提是对OO设计有很好的认识
如果仍然停留在原来的结构化编程思想上，或者是半结构化半OO，用起来就没那么爽了
xml的parser，目前最快的确实是c写的，但是java的parser却是最多应用最广泛的
跨平台性是最重要的原因，这也是为什么现在我们的项目要用java的原因
其次，xml同样是一个很好的平台无关的知识自表述方式，
对于通用性的web商业应用，用java+xml可以获得最多的支持和最大限度的自适应性
当然，我并不排斥在如银行等对数据交换安全性等方面有特别要求的商业应用中
使用其他专门化架构。
目前M$提出的BizTalk和UN的ebXML等方案都是在试图制定一种能够最大程度降低进入
电子商务的门槛的解决方案，其采用的数据表述方式就是XML。至于veb提到的XML效率低
的问题，我认为这只是一种认识上的错觉而已。如果说效率，那么在一个IP packet里
有多少和要传输的数据无关的东东呢？更别说高层的HTTP等协议了。技术发展的一个
方向就是易用性，而易用性必然是以效率降低（表面上的）为代价的。这种通用性带来的
好处只要超过其降低效率的坏处，人们就会去采用它。
我曾经有一段时间认为如果出现一个完整的XML数据交换解决方案以后，java的跨平台性
就没有以前那么大的优势了，因为XML形式的数据如果象现在的IP packet一样被广泛的
支持和应用以后，就没有必要再开发什么跨平台的东东了，正如现在我们用不着开发一套
东东来让两块网卡通信一样。不过目前来说，还没有很成型的XML构架出现，所以目前
仍然只能在java上做跨平台的东东。不管怎么说，目前java+xml还是一种不错的通用性
解决方案，无论在国外在国内都是很有市场前景的。
--
长亭外，古道边，芳草碧连天，晚风拂柳笛声残，夕阳山外山
天之涯，地之角，知交半零落，一斛浊酒尽余欢，今宵别梦寒
韶光逝，留无计，今日却分袂，骊歌一曲送别离，相顾却依依
聚虽好，别虽悲，世事堪玩味，来日后会相予期，去去莫迟疑

※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.173.255]


xml版走向问题初探

 发信人: veb (晨雪¤终于有昵称了), 信区: XML
标 题: xml版走向问题初探
发信站: BBS 水木清华站 (Tue Sep 5 22:54:24 2000)

这篇文字早就想写,现在可能时机比较合适[ fangyu : ) ],
尽管写的匆忙//2分钟时间

xml研究的几个不同层面
//注意,各个标题是我随便想的,可能不合适,总之是一个简单分类.

1.html->xml
这一块跟Internet紧,群众基础好 : ),也比较热门.
技术上不是很难,与编html+script+server script类似.
主要有意思的地方在xsl,与DOM, SAX, SOAP等关系不大.
//也可以DOM+script来模拟xsl

2.xml开发
DOM, SAX, parser, validator等
这一块一直希望有人来做,
说句心理话,由于我以前一直做开发,现在有点腻味了,呵呵
//别kick我,救命
这也是我对不起xml版的网友的地方.这一块我一直没有发挥积极作用.

3.xml分布式开发
xml+(corba/com+)的开发,这一块我其实有一定基础,但是感觉工作量较多
同时有点曲高和寡,看看以后.

4.xml网络基础应用.
在网络协议上的开发,如soap等
各种基于网络的框架,主要是一些与电子商务有关的应用

5.xml实例化
如WAP, SVG, 这个就太多了.不细说了.

6.xml基础研究.
xml的存储策略,
XML数据库/XML+RDBMS
数据库技术在xml中的应用,如查询,数据模型,XML中的SQL(XQL等)

总之, XML的研究范围并不窄, 每一个层面其实都很新,也很有前途.
不过,每个人的兴趣不同,情况不同,自然看法差别较多.
作为版主, 我还是希望先在某一点上先作出一点看的见的东西.
方雨的技术力量很好, 他的加入会在上述某些层面起到好的作用,
也许还有其他很重要的应用,我叫方雨给我发信,也是
想先了解一下他的爱好,长处,打算...等等.
总之, 对xml版有利的东西,我是不会拒绝的,我也没有权利拒绝,
xml版是大家的.
先就写这么多吧.这一周左右上网时间不会很多.

--
<?XML?>欢迎访问我的主页http://xml.zixia.net <?XML?>
Powered by eXtensible Markup Language
※ 修改:·veb 於 Sep 5 23:03:04 修改本文·[FROM: 202.112.99.209]
※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.112.99.209]


XML常见问题

 发信人: ai (小沐~专业灌水&辅修聊天), 信区: XML
标 题: XML常见问题
发信站: BBS 水木清华站 (Sun Oct 22 05:25:03 2000)

(转载自中国XML联盟)
XML常见问题
作者:郁桦

A．概述性问题

A.1 什么是 XML?

XML 全称是“可扩展标识语言“（Extensible Markup Language）。之所以称之为
可扩展，是因为它不像HTML 那样只有固定的形式。它是被用来使SGML 能在万维网
上能应用自如。

XML并不是一个独立的，预定义的标识语言。它是一种元语言。它是用来描述其他
语言的语言。它允许你自己设计你的标识。(HTML 是一种预定义的标识语言。HTML
只是在一类特定的文件中定义了一种描述信息的方法。而XML 能允许你在不同的
文件中定义你自己设计的标识语言。）这是因为XML 是用SGML （“通用标识语言
标准”国际标准的标识元语言）书写的。

A.2 XML的目的是什么？

XML是被设计用来使SGML 能在万维网上能自如应用的：方便地定义文件类型，方便
地制作和管理用SGML定义的文件，在网上方便地传输和共享这些文件。

A.3 什么是SGML？

SGML的全称是“Standard Generalized Markup Language“（通用标识语言标准）
。 它是国际上定义电子文件结构和内容描述的标准。在往上有以下相关资源：

SGML FAQ: http://www.infosys.utas.edu.au/info/sgmlfaq.txt
SGML 主页: http://www.oasis-open.org/cover/sgml-xml.html

A.4 什么是HTML？

HTML的全称是“HyperText Markup Language “（超文本标识语言）。它是SGML在
网络上的一个特殊应用。

A.5 XML，SGML，HTML是不是一回事？

不竟然。SGML是XML和HTML的母语言。SGML的覆盖面很广。它几乎涉及人们生活的
每一个领域。它被用来描述成千上万中文件。HTML只是其中一种文件类型，是一种
在网上最常用的类型。它定义了一种简单而固定且含标识的文件类型。

XML是SGML的简化版。为了实现更加方便地编写和理解应用程序，更加方便地在网
络上传输信息，更加方便地实现互操作性，XML申略了一些SGML中复杂和不常用的
部分。但XML还能和SGML一样通过解析。

A.6 SGML/XML 和 C/ C++?什么不同？

C和C++和Fortran, Pascal, Basic, 或是 Java一样都是编程语言。是用来制定运
算和操作的。

而SGML和 XML标是说明性的语言。它们是用来表现信息的。它们使得信息能被程序
正常地存储传输和处理。就它们本身而言，并不能产生什么操作。操作要由应用程
序来实现。

A.7 是由谁负责XML？

XML是W3C(World Wide Web Consortium 万维网络联盟)的一个项目。XML不是任何
一家公司的私有财产。

A.8 为什么XML是一项重要的技术？

应为它解决了两个制约网络发展的问题：
1.基础是单一固定的文件类型。（HTML）；
2.完整的SGML过于复杂。

A.9 为什么不只是扩展HTML？

不同的厂家在开发HTML时产生了许多有趣但却不兼容的发明。这已使HTML不堪重负
。因为这使得你只能用一种方法表现你的信息。XML却允许许许多多的个人与组织
来创造他们自己的标识语言。应用这些标识语言他们可以在自己的领域内自由地交
换信息。HTML在表现信息方面是有缺陷的。当然我们必须承认它现在仍然扮演着重
要的角色。但许多新的应用领域需要更加强大和灵活的工具。

<<返回标题

B.SGML的使用（包括HTML的各种浏览器）

B.1 为什么我们要推荐XML而不主张HTML？

1.我们可以用XML设计自己的文件类型。
2.信息的内容将更加丰富，更加方便使用。在XML中超文本链接的能力比HTML更强
。
3. XML能使得浏览器的表现形式更加丰富。
4.处理XML文件比.处理SGML文件来得简单。信息的开放性和重复使用的性能斗将提
高。
5.合法（Valid 参见D中Valid与-formed）的XML文件在SGML中也是合法的。

B.2 我是不是必须由SGML或是HTML转向XML？

不是的。现存的SGML和HTML的应用软件仍能正常处理现有的文件。

<<返回标题

C. SGML 和HTML的编写

C.1 XML是否已取代了HTML？

没有。XML并没有取代HTML。它只是给了你一种新的选择。HTML将仍在一段时间内
广泛地被使用。HTML的DTD（参见C中DTD）将既有XML版本，又有SGML版本。但XML
版本更加简单。

C.2 XML文件是怎样的？

它的基本结构和SGML和 HTML差不多。XML文件可以非常简单。它可以不需要文件类
型说明，而直接就是你自己设计的内嵌式标识。如下面一段代码：

<?xml version="1.0" standalone="yes"?>
<conversation>
<greeting>Hello, world!</greeting>
<response>Stop the planet, I want to get off!</response>
</conversation>

当然它也可以更加复杂些。如DTD声明，内嵌子集，等等：

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

<!DOCTYPE titlepage SYSTEM "http://www.frisket.org/dtds/typo.dtd"
[<!ENTITY % active.links "INCLUDE">]>

<titlepage>
<white-space type="vertical" amount="36"/>
<title font="Baskerville" size="24/30" alignment="centered">Hello,
world!</title>
<white-space type="vertical" amount="12"/>
<!-- In some copies the following decoration is hand-colored, presumably
by the author -->
<image location="http://www.foo.bar/fleuron.eps" type="URL"
alignment="centered"/>
<white-space type="vertical" amount="24"/>
<author font="Baskerville" size="18/22" style="italic">Vitam
capias</author>
</titlepage>

C.3 是不是HTML有一个XML版本？

已经有好几个HTML的XML版本，但都只是在准备阶段，并未完成。

C.4 既然说XML是SGML的子集，我能不能用SGML的工具直接处理XML文件？

是的.而且非常简单。一个结构完整的XML文件和HTML文件非常相像。当然也有一些
小的而且是重要的不同。在实际操作当中最大的不同就是XML文件必须摇遵守一定
的法则。HTML的浏览器可以允许一些小的错误。而如果是XML就行不通了。

C.5 什么是DTD？我能在哪儿找到？

DTD的全称是“Document Type Definition“（文件类型定义）。具体地说，DTD是
一个或是一些用XML书写的文件。它包含了对一种文件的正式定义。它定义了文件
中的元素能用什么名字，能放在什么位置，应该怎样组合。在这里举一个简单的例
子。比如说你想要你的文件可以描述一组<List>，其中每个<List>由可以包含若干
个<Item>。那么你的DTD中应该有以下语句：<!ELEMENT List (Item)+>

<!ELEMENT Item (#PCDATA)>

这样一个框架定义了一个表（list），它可以包含若干个项(items)。每一个项只
能包括文本的内容。当处理器处理XML文件时将自动检查DTD，以此确定文件中元素
从哪而来，以及它们之间是什么关系。上面的框架允许你生成下面的一个表：

<List><Item>Chocolate</Item><Item>Music</Item><Item>Surfing</Item></List
＞

而这样一个表在屏幕上是怎样一个表象,取决于你的样式表(Stylesheet)。在HTML
中你要在文件中指定应是怎样的形式。使用DTD表明你能够确定一类文章的结构和
格式。

要想找一个DTD看看吗？实际上，各个领域里的SGML DTD由成千上万。你可以参看
SGML 的网页。

C.6 我总是听说DTD的替代者Schema，它到底是什么？

有许多XML的开发者并不满意XML的规范。原因有两点：

1.既然XML在说明结构信息是有很多好处，那么用来描述文件类型的结构的文件（
这就是Schema）为什么不是也用XML书写的呢？这样做的好处不光是统一，而且便
于用正规的文件工具编辑管理Schema。

2.过去的DTD对数据的限制不够。比如说你想要一个元素只取负值，或是必须有一
个值，DTD很难做到。

C.7 我能用XML作算术运算吗？

只要你的文件类型提供算术类型，知识可以的。W3C已经有了一个
MathML(Mathematical Markup Language数学标识语言)的计划。清参看W3C最新
(1999年7月)发布的MathML规范。

C.8 在XML中,我能使用Java, ActiveX吗?

这取决于浏览器制造者运用的工具. XML是用来描述信息的; 描述性语言和用来描
述内嵌函数功能的语言的目的是使得信息能在客户端被操作.. XML本身提供了一种
定义标识的方法,而这些标识是描述性语言所必需的. XML是一个中立的标准.他不
支持或是反对任何一种描述性语言.所以说它是一个开放的领域. 描述性语言是在
”Extensible Style Language”XSL (可扩展类型语言).计划中提出的.

C.9 我能用Java编写或是管理XML文件吗?

可以.我们可以用任何一种编程语言从任何一种XML格式的信息中提取数据.

<<返回标题

D.高级开发者和应用者(包括网络管理员和服务器操作人员)

D.1哪儿可以找到XML的规范?

请参见: http://www.w3.org/TR/REC-xml

D.2 "DTDless" ,"valid",和"well-formed"这些术语是什么意思?

在完整的SGML中,我们用DTD描述特定文件中的各种标识.但DTD的生成是一件极其复
杂的工作.所以XML被设计成可以缺省DTD. DTDless表示您可以创造一个标识而不需
正式的定义.当然这也要付出代价.您不能在其他的文件中对同样的形式采用自动的
处理. DTDless的文件是以一种非正式的方式定义它的标识的.标识是在哪儿出现的
就在哪儿定义它.但当一个比方说是浏览器的XML应用程序打开了一个DTDless的文
件,它必须要有办法来理解文件的结构.但它又没有DTD,所以规则上有了一些改变.
举一个例子：

HTML中的<img> 是被定义为”EMPTY”(空)的.它并不需要”end-tag”(结尾标签).
DTD 的XML应用程序在打开一个缺省DTD. 的文件,读到<img>时不知道是否需要一
个”end-tag”.所以”well-formed”(结构良好)的定义也变得重要了. ”
well-formed”可以使得一般元素和”EMPTY” 元素区分开来.

D.2.1 ”well-formed” (结构良好的)文件

1.如果一个文件没有DTD,它必须在开头处有一个"Standalone Document
Declaration"(独立文件声明):

<?xml version="1.0" standalone="no" encoding="UTF-8"?>
<foo>
. <bar> ...<blort/>...</bar>
</foo>

2.除了空素以外, 标记必须前后匹配.
3.所有的”attribute”值都要用引号括起来.
4. ”EMPTY” 元素的tag要么用”/>”结尾,要么要补成”non-EMPTY”(非空)的元
素. 比如说: <BR>要么写为<BR/> 或是 <BR></BR>
5.文件中必须不能出现”markup-start “(标识开始符), 比如”<”或是 “&”.

6.元素必须遵守SGML的规则,正确嵌套.

D.2.2”Valid “(合法的)XML

合法的XML是指有DTD的文件.它必须是”well-formed”的.

D.3 在DTD中,我什么时候用属性, 什么时候用元素?

这并没有唯一的答案.着取决于您设计文件的风格.以下是两个极端的例子,它们的
功能是一样的:

1. <l n="184"><sp>Portia</sp><text>The quality of mercy is not strain’
d,</text></l>
2. <line speaker="Portia" text="The quality of mercy is not strain’
d">184</line>

D.4 SGML 和 XML之间还有什么区别?

主要的区别在于DTD的内容.为了简化语法和编写软件的过程, XML中对SGML做了很
大缩减.

D.5 现在有哪些XML的软件可以使用?

由于更新速度太快,我们建议您参看: http://www.oasis-open.org/cover/xml.
html.

D.6 要使用XML,我是否要改变服务器的软件?

要的,但改动不大.您只要编辑您的mime-types文件,加上以下一句:
application/xml xml XML

D.7 有没有为XML服务的API组件?

有的,但还在不断开发的阶段. 我们建议您参看: http://www.oasis-open.
org/cover/sgml-xml.html.

--
人人有权享有主张和发表意见的自由；
此项权利包括持有主张而不受干涉的自由,和通过任何
媒介和不论国界寻求、接受和传递消息和思想的自由。

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.112.3.71]
上一篇 返回上一页 回到目录 回到页首


XML与微软的.NET (BM: inannan)

编号 | 类别 | 标题 | 编辑日期
1 | 文件 | Re: XML与微软的.NET inannan | 2001.05.30
2 | 文件 | Re: XML与微软的.NET inannan | 2001.05.30
返回上一页 回到上一级目录


Re: XML与微软的.NET

 发信人: zerro (伤心的人), 信区: XML
标 题: Re: XML与微软的.NET
发信站: BBS 水木清华站 (Wed Oct 25 14:01:36 2000)

微软的站点上有很多关于.net的介绍
我前两天还听过一个有关的学术报告(微软工程师做的)
大意如下:
.net的本质是微软对下一代互联网提出的一种构想,也可以说是明确了一个发展方向
希望通过微软的倡导,让各厂商能够努力向着一方向发展

.net的原则有4点,在很多资料中都有
我把他总结为三点
1是上网的简洁化智能化,用户和以很方便的利用各种智能设备上网
这一问题核心技术是智能设备的开发,新一代用户界面以及手写和语音输入法
当然,微软的主要研究是后两点,好像是李开复负责的
因为智能设备家庭化的重要问题就是用户界面的傻瓜化和真正智能的输入法
xml在这方面的作用并不是很大,只是用来使web叶面可以根据客户端的硬件
选择不同的显示(套用不同的xsl),而无须针对各种硬件设备写多份叶面
2是解决数字信息孤岛的问题
比如在你的商务通中有一比资料,但却不能转给互联网或者其它智能设备
因为数据结构不同一,相互传送需要特定的程序或硬件来完成
另外,如果你想查询一个航班信息,或是一条新闻,,可能你要走访多个站点
原因是这几个站点对航班信息和新闻的存储没有统一的规范
难以用一个门户网站对其检索,或者性能很低,而一个站点从其它站点获取信息
也需要人工的手段来完成
解决这一问题的方法就是用xml,用xml将互联网上无结构的信息变成有结构的信息
并且有统一的结构规范(如dtd)
从而方便检索,方便数据共享
将各个信息家电设备,各个网站的信息孤岛连为一体
使信息家电之间的数据可以复用
使某站点的信息可以方便的转换为其它站点的信息
3是asp
这里的asp是指应用服务提供商
也就是说站点不仅提供信息共享的服务,也提供应用程序和组件共享的服务
比如,你用信息家电获取一个自己的备忘录
备忘录的信息不是保存在自己的设备内,而是某个站点内
这样,当你的备忘录更新后,其它家电设备的备忘录信息能同步更新
不仅如此,连备忘录程序本身也不是保存在家电内的,
而是网上asp提供商提供的web service(实质是一些可调用的公共组件)
客户端通过基于xml的soap协议访问asp提供的web service,从而执行应用程序
这样你的信息家电设备不需要安装更多的软件就可以享受asp提供商提供的应用服务
另外,开发中,web service将可以作为一个组建可是化的拖放到自己开发的应用程序内
总之,web提供的服务将从信息扩充到应用程序
而诸如2中说描述的信息检索,其实也是站点提供web service
从而使其它站点可以通过接口,查询检索信息
而web service调用的实质是基于xml的soap协议
即通过一份特殊的有统一规范的xml来调用wen service
web组件之间也可以通过soap协议相互访问,调用
这种调用是通过http协议传输的,可以通过各种代理
而不像dcom要利用80端口以外的很多端口,从而无法穿过代理
(soap协议:简单对象访问协议)

另外,新技术开发必将一来与新产品的推广
报告中介绍了微软下一代产品,如Enterprise Server系列产品和vs7.0的主要特点
不过我可能要下一次再发了

另外,本文未借鉴其它参考资料,只是我根据听报告是做的笔录按照我自己的理解整理的
所以很多地方说的可能与实际有一定的偏差,希望大家不要见笑
另外,表述上可能不是很易于理解,如果有不明白的,可以问
【 在 uzibuaa (阿琦 ) 的大作中提到: 】
∶ XML好像是微软.NET计划的一个很重要支持技术,大家对.net计划有什么看法?那里有对
∶ .net计划比较详细的分析资料?谢谢!

--

※ 修改:·zerro 於 Oct 25 14:06:57 修改本文·[FROM: 202.119.37.8]
※ 修改:·zerro 於 Oct 25 14:16:33 修改本文·[FROM: 202.119.37.8]
※ 修改:·zerro 於 Oct 25 14:20:12 修改本文·[FROM: 202.119.37.8]
※ 修改:·zerro 於 Oct 25 14:25:48 修改本文·[FROM: 202.119.37.8]
※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.119.37.8]
返回上一页 回到目录 回到页首 下一篇


Re: XML与微软的.NET

 发信人: zerro (伤心的人), 信区: XML
标 题: Re: XML与微软的.NET
发信站: BBS 水木清华站 (Thu Oct 26 16:24:46 2000)

其实我觉得对于一个it人员来说
并不一定要把没项技术的细节都搞的十分清楚,除非你是专职的程序员
技术发展的太快,如果一有新技术,就要搞的十分精通,那是学不过来的
关键是掌握新技术的思想以及功能
比如xml,我对它的掌握并不是很熟练
只是清楚它的主要思想(用dtd,xml,xsl分别负责结构定义,数据存储,数据显示)
以及它的作用(将信息结构化,使之便于共享,便于检索)
能够看懂xml文件,知道可以在asp,javascript中通过xmldom嵌入xml
至于一些细节,比如语法细节,xsl的详解我并不是很了解
我觉得那是专职程序员的再没有良好的开发环境下才要做的工作
我认为,能够理解一项新技术有哪些有点,能实现那些功能,能在何种环境下产生作用
才是最重要的,因为掌握发展动态,并且能够在现有的技术的基础上在其具体应用上
充分发挥自己的想象力,创造新的商机比做一个程序员更有意义
这一切,依赖于对技术的了解,但并不需要掌握的十分透彻
毕竟时间有限,保持广博的知识面比精通一像技术要重要的多
因为任何新技术都会过时,只有保持广博的知识面才会使自己永远不过时
甚至在新技术的具体应用上走在他人前面
【 在 xuyu (库库) 的大作中提到: 】
∶ 看君一篇文章，胜过我读一个星期XML的文档，
∶ //bow
∶ 希望以后除了讨论纯技术问题，还能更多的探讨一下对未来XML发展的前途和概况

--

※ 修改:·zerro 於 Oct 26 20:51:37 修改本文·[FROM: 202.119.37.8]
※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.119.37.8]
上一篇 返回上一页 回到目录 回到页首


标准与规范 (BM: inannan)

编号 | 类别 | 标题 | 编辑日期
1 | 目录 | XML标准 (BM: takeiteasy) | 2001.04.20
2 | 文件 | XML 中常用的缩写词 veb | 2000.05.28
3 | 文件 | XML结构 veb | 2000.05.27
4 | 文件 | Schema 与 DTDs inannan | 2001.05.25
5 | 目录 | Apache XML project (BM: inannan) | 2001.05.25
6 | 文件 | XHTML标准发布了,和XML有什么差别的说? inannan | 2001.05.25
7 | 文件 | bizTalk XML FrameWork intro inannan | 2001.05.26
8 | 文件 | Soap规范V1 inannan | 2001.05.26
9 | 文件 | XML E-Business Standards: Promises and inannan | 2001.05.27
10 | 目录 | SOAP (BM: inannan) | 2001.05.30
11 | 文件 | Re: XMI? inannan | 2001.05.30
12 | 文件 | Schema 与 DTD区别 inannan | 2001.05.30
返回上一页 回到上一级目录


XML标准 (BM: takeiteasy)

编号 | 类别 | 标题 | 编辑日期
1 | 文件 | 可扩展标记语言(XML) 1.0 veb | 2000.03.14
2 | 文件 | [范文][XML]W3C建议XML 1.0中文版说明（?veb | 2000.03.14
3 | 文件 | [范文][XML]W3C建议XML 1.0中文版说明（?veb | 2000.03.14
4 | 文件 | [范文][XML]W3C建议XML 1.0中文版说明（?veb | 2000.03.14
5 | 文件 | [范文][XML]W3C建议XML 1.0中文版说明（?veb | 2000.03.14
6 | 文件 | [范文][XML]W3C建议XML 1.0中文版说明（?veb | 2000.03.14
7 | 文件 | [范文][XML]W3C建议XML 1.0中文版说明（?veb | 2000.03.14
8 | 文件 | [范文][XML]W3C建议XML 1.0中文版说明（?veb | 2000.03.14
9 | 文件 | [范文][XML]W3C建议XML 1.0中文版说明（?veb | 2000.03.14
10 | 文件 | [范文][XML]W3C建议XML 1.0中文版说明（?veb | 2000.03.14
11 | 文件 | [范文][XML]W3C建议XML 1.0中文版说明（?veb | 2000.03.14
12 | 文件 | [范文][XML]XML专业技术词汇表(草案) (转 veb | 2000.05.27
返回上一页 回到上一级目录


sylvan (睡觉&跑腿), 信区: XML

 发信人: sylvan (睡觉&跑腿), 信区: XML
标 题: 可扩展标记语言(XML) 1.0
发信站: BBS 水木清华站 (Thu Apr 6 13:22:57 2000)

呵呵，恭喜恭喜~~~
贴一片先，不是灌水

可扩展标记语言(XML) 1.0
W3C建议 1998年2月10日
本版本:
http://www.w3.org/TR/1998/REC-xml-19980210
http://www.w3.org/TR/1998/REC-xml-19980210.xml
http://www.w3.org/TR/1998/REC-xml-19980210.html
http://www.w3.org/TR/1998/REC-xml-19980210.pdf
http://www.w3.org/TR/1998/REC-xml-19980210.ps
最新版本:
http://www.w3.org/TR/REC-xml
上一版本:
http://www.w3.org/TR/PR-xml-971208
编者:
Tim Bray (Textuality and Netscape) mailto:tbray@textuality.com
Jean Paoli (Microsoft) mailto:jeanpa@microsoft.com
C. M. Sperberg-McQueen (University of Illinois at Chicago) mailto:cmsmcq@uic.
edu
摘要
本文档完整地描述了可扩展标记语言(Extensible Markup Language，XML)，它是标准通
用标记语言(Standard Generic Markup Language，SGML)的一个子集。其目的在于使得在
Web上能以现有超文本标记语言(Hypertext Markup Language，HTML)的使用方式提供，接
收和处理通用的SGML成为可能。XML的设计既考虑了实现的方便性，同时也顾及了与SGML
和HTML的互操作性。

本文档的状态
本文档已由W3C组织成员和其他相关各方审阅，并已被组织理事批准为W3C建议。这是一个
稳定的文档，可以用作参考材料，也可以作为其他文档的正式参考文献。W3C在建议制定
过程中的作用是吸引对本规范的注意并促进它的广泛使用。这能增强Web的功能和互操作
性。

本文档规定了一种用于World Wide Web的语法，此语法是通过取一个业已存在并已广泛使
用的文本处理国际标准(标准通用标记语言，经增补和更正的ISO 8879:1986(E))的子集而
创建的。它是W3C XML行动组(XML Activity)的工作成果，关于XML行动组的详细信息可以
在http://www.w3.org/XML找到。在http://www.w3.org/TR可以找到现有W3C建议和其他技
术文档的一个列表。

本规范中使用了[Berners-Lee等人]定义的一个术语URI，他们正在从事的的工作将更新
[IETF RFC1738]和[IETF RFC1808]。

本规范的已知错误列表可以在http://www.w3.org/XML/xml-19980210-errata找到。

请将本文档中的错误报告给xml-editor@w3.org。

可扩展标记语言(XML) 1.0
目录
1. 绪论
1.1 开发者和开发目标
1.2 术语
2. 文件
2.1 规范的XML文件
2.2 字符
2.3 通用语法成分
2.4 字符数据和标记
2.5 注释
2.6 处理指令
2.7 CDATA段
2.8 序和文件类型声明
2.9 独立文件声明
2.10 空白处理
2.11 行尾处理
2.12 语言标识
3. 逻辑结构
3.1 起始标签，结束标签和空元素标签
3.2 元素类型声明
3.2.1 元素内容
3.2.2 混合型内容
3.3 属性表声明
3.3.1 属性类型
3.3.2 属性的缺省值
3.3.3 属性-值对的规范化
3.4 条件段
4. 物理结构
4.1 字符和实体引用
4.2 实体声明
4.2.1 内部实体
4.2.2 外部实体
4.3 已析实体
4.3.1 文本声明
4.3.2 规范的已析实体
4.3.3 实体中的字符编码
4.4 XML处理器对实体和引用的处理
4.4.1 不被识别
4.4.2 被包含
4.4.3 进行验证时被包含
4.4.4 被禁止
4.4.5 被包含在常量中
4.4.6 通知
4.4.7 不处理
4.4.8 作为PE被包含
4.5 内部实体置换文本的构建
4.6 预定义实体
4.7 记法声明
4.8 文件实体
5. 一致性
5.1 进行验证和不进行验证的处理器
5.2 使用XML处理器
6. 记法

附录
A. 参考文献
A.1 正式参考文献
A.2 其他参考文献
B. 字符的分类
C. XML和SGML(非正式)
D. 实体和字符引用的展开(非正式)
E. 确定型内容模型(非正式)
F. 字符编码的自动检测(非正式)
G. W3C XML工作组(非正式)

------------------------------------------------------------------------------
--

1. 绪论
可扩展标记语言，缩写为XML，描述了一类称为XML文件的数据对象，同时也部分地描述了
处理这些数据对象的计算机程序的动作。XML是SGML(标准通用标记语言[ISO 8879])针对
应用的一个子集，或者说是SGML的一种受限形式。根据定义，XML文件是合乎规范的SGML
文件。

XML文件由称为实体的存储单元组成，实体可以包含已析数据或未析数据。已析数据由字
符组成，其中一些字符组成字符数据，另一些字符组成标记。标记中包含了对文件存储格
式(storage layout)和逻辑结构的描述。XML提供了一种机制用于约束存储格式和逻辑结
构。

称为XML处理器的软件模块用于读取XML文件，存取其中的内容和结构。XML处理器被设想
为是为另一个称为应用的模块作处理。本规范从XML处理器应如何读取XML数据以及应向应
用提供哪些信息的这两个方面，描述了要求XML处理器作出的动作。

1.1 开发者和开发目标
XML由XML工作组(原先的SGML编辑审查委员会)开发，此工作组由World Wide Web
Consortium(W3C)在1996年主持成立。工作组由Sun Microsystems的Jon Bosak负责，同样
由W3C组织的XML SIG(Special Interest Group)(原先的SGML工作组)积极参与了XML工作
组的工作。XML工作组的成员在附录中给出。工作组与W3C的联系人是Dan Connolly。

XML的设计目标如下：

XML应该可以直接用于因特网(Internet)。
XML应该支持大量不同的应用。
XML应该与SGML兼容。
处理XML文件的程序应该容易编写。
XML中的可选项应无条件地保持最少，理想状况下应该为0个。
XML文件应该是人可以直接阅读的，应该是条理清楚的。
XML的设计应快速完成。
XML的设计应该是形式化的，简洁的。
XML文件应易于创建。
XML标记的简洁性是最后考虑的目标。
本规范与其他相关的标准一起(Unicode和ISO/IEC 10646定义了字符集，Internet
RFC1766定义了语言识别码，ISO 639定义了语言名称代码，ISO 3166定义了国家名称代码
)，提供了理解XML版本1.0和构建相应计算机处理程序所需的所有信息。

在完整保留所有文本和法律注意事项的前提下，本版本的XML规范可以自由分发。

1.2 术语
用于描述 XML 文件的术语在此规范的正文中定义。在这些定义中以及描述一个XML处理器
的动作时，使用了下表中的术语：

可以(may)
允许合乎规范的文件和XML处理器按所描述的方式工作，但不要求必须如此。
必须(must)
要求合乎规范的文件和XML处理器按所描述的方式工作; 否则它们出现错误。
错误(error)
对本规范中的规则的违反; 其结果不确定。合乎规范的软件可以检测和报告错误，并可以
从中恢复。
严重错误(fatal error)
合乎规范的XML处理器必须检测到，并向应用报告的一类错误。在遇到严重错误之后，处
理器可以继续处理数据以发现更多的错误并可以向应用报告这些错误。为了支持错误的更
正，处理器可以向应用提供文件中未经处理的数据(字符数据和标记的混合体)。但是，一
旦检测到一个严重错误，处理器必须停止正常的处理(也就是说，它必须停止以正常的方
式向应用提供与文件逻辑结构有关的数据和信息)。
由用户选择(at user option)
合乎规范的软件可以或者必须(取决于句子中的情态动词)按所描述的方式工作; 如果它满
足这个条件，它必须同时提供用户一种手段，使得用户能够启用和禁用所描述的工作方式
。
有效性约束(validity constraint)
适用于所有有效的XML文件的一种规则。违反有效性约束属于错误;进行验证的XML处理器
必须，由用户选择，报告这些错误。
规范性约束(well-formedness constraint)
适用于所有规范的XML文件的一种规则。违反规范性约束属于严重错误。
匹配(match)
(对于字符串和名字：)被比较的两个字符串或名字必须完全相同。在ISO/IEC 10646中有
多种可能表示方式的字符(例如，既有预定义(precomposed)形式和基字符(base)+变音符
形式的字符)只在两个字符串中的表示方式相同时才匹配。由用户选择，处理器可以将这
些字符规范成某种规范形式。不进行字符的大小写转换。(对于文法中的字符串和规则：
)如果一个字符串属于一个文法产生式产生的语言，则它匹配这个产生式。(对于内容和内
容模型：)当一个元素符合"元素有效性"约束中的描述时，它匹配其声明.
出于兼容性考虑(for compatibility)
仅用于保证与SGML兼容的XML特性。
出于互操作性考虑(for interoperability)
是一个不具约束性的建议，目的是增加XML文件能被在ISO 8879的WebSGML改编附件之前已
有的SGML处理器处理的可能性。
2. 文件
如果一个数据对象满足本规范中规范的定义时，它是一个XML文件。一个规范的XML文件可
以更进一步是有效的如果它满足某些进一步的约束。

每一个XML文件都有逻辑和物理结构。物理上而言，文件由称为实体的单元组成。一个实
体可以引用(refer)其他实体，将它们包含在文件中。文件开始于"根(root)"或文件实体
中。逻辑上而言，文件由声明，元素，注释，字符引用和处理指令组成，所有这些都在文
件中用显式标记指明。逻辑和物理结构必须如"4.3.2 规范的已析实体"中所描述那样严格
地嵌套。

2.1 规范的XML文件(Well-Formed XML Documents)
一个文本对象是一个规范的XML文件如果它满足：

作为一个整体，它匹配document产生式。
它满足本规范中定义的所有规范性约束。
此文件中直接或间接引用的每一个已析实体都是规范的。
文件
[1] document ::= prolog element Misc*

匹配document产生式意味着：

它包含一个或多个元素.
有且仅有一个称为根(root)或文件元素的元素，它不出现在其他任何元素的内容
(content)中。对于其他所有元素，如果起始标签在另一个元素的内容中，则其结束标签
也在同一元素的内容中。换一个更简单的说法，以起始标签和结束标签为界的各个元素，
必须严格地嵌套。
这样做的结果是，对于每一个非根的元素C，文件中另有一个元素P，C在P的内容中，而不
在其他任何被P所包含的元素的内容中。P被称为C的父元素(parent)，而C被称为P的子元
素(child)。

2.2 字符
一个已析实体包含文本(text)，文本是一个字符(character)序列，可以表示标记或字符
数据。一个字符是ISO/IEC 10646[ISO/IEC 10646]中定义的文本最小单元。合法的字符包
括制表符，回车，换行以及Unicode和ISO/IEC 10646中定义的合法的图形字符。不提倡使
用[Unicode]6.8节中定义的"兼容字符(compatibility characters)"。

字符范围
[2] Char ::= #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] |
[#x10000-#x10FFFF] /* 除了替代块(surrogate block)，FFFE和FFFF以外的任意
Unicode字符。*/

将字符代码编码成位模型的机制各个实体间可能会有所不同。所有的XML处理器必须接受
10646中的UTF-8和UTF-16编码；用于指出所用编码或指定使用其他编码的机制在后面的
"4.3.3 实体中的字符编码"中讨论。

2.3 通用语法成分
本节中定义了一些在文法中广泛使用的符号。

S(空白)包括一个或多个空格字符(#x20)，回车，换行和制表符。

空白
[3] S ::= (#x20 | #x9 | #xD | #xA)+

为方便起见，字符被分为字母，数字和其他字符三类。字母可以是字母表中的字母，或是
一个音节基字符(syllabic base character)后跟一个或多个组合字符，也可以是一个表
意字符。在"B. 字符的分类"中给出了每一类字符的完整定义。

名字(name)是以字母或某些标点符号开头的记号，后跟字母，数字，连字符，下划线，冒
号或句号，这些符号统称为命名字符(name character)。以"xml"或其他任何匹配
(('X'|'x') ('M'|'m') ('L'|'l')) 的字符串开头的名字，被保留用于本规范的此版本或
后续版本的标准化。

注意：XML名字中的冒号被保留用于名字空间(name space)实验。它的含义有待于日后标
准化，那时那些将冒号用于实验目的的文件有可能需要更新。(不保证XML采用的任何名字
空间机制会实际采用冒号作为分隔符。)实际上，这意味着除非用于名字空间实验，XML文
件作者不应该在XML名字中使用冒号，但XML处理器应该接受冒号作为一个命名字符。

Nmtoken(名字记号，name token)是任何命名字符的混合体。

名字和记号
[4] NameChar ::= Letter | Digit | '.' | '-' | '_' | ':' | CombiningChar |
Extender
[5] Name ::= (Letter | '_' | ':') (NameChar)*
[6] Names ::= Name (S Name)*
[7] Nmtoken ::= (NameChar)+
[8] Nmtokens ::= Nmtoken (S Nmtoken)*

常量数据是任何用引号括起的字符串，不包括用作分隔符的引号。常量用于指明内部实体
的内容(EntityValue)，属性值(AttValue)，以及外部标识符(SystemLiteral)。注意，对
SystemLiteral的语法分析可以不扫描标记。

常量
[9] EntityValue ::= '"' ([^%&"] | PEReference | Reference)* '"'
         | "'" ([^%&'] | PEReference | Reference)* "'"
[10] AttValue ::= '"' ([^<&"] | Reference)* '"'
         | "'" ([^<&'] | Reference)* "'"
[11] SystemLiteral ::= ('"' [^"]* '"') | "'" [^']* "'")
[12] PubidLiteral ::= '"' PubidChar* '"' | "'" (PubidChar - "'")* "'"
[13] PubidChar ::= #x20 | #xD | #xA | [a-zA-Z0-9] | [-'()+,./:=?;!*#@$_%]

2.4 字符数据和标记
文本由字符数据和标记混合构成。标记包括起始标签，结束标签，空元素标签，实体引用
， 字符引用，注释，CDATA段分隔符，文件类型声明和处理指令。

其他所有非标记的文本组成文件的字符数据。

"and"号(&)和左尖括号(<)只有作为标记分隔符，或在注释，处理指令，或CDATA段中时才
能以常量形式出现。它们在一个内部实体声明的常量实体数值中也是合法的，参见"4.3.2
规范的已析实体"。如果在其他地方需要用到这两个字符，它们必须用数值式字符引用来
转义或分别用字符串"&amp;"和"&lt;"表示。右尖括号(>)可以用"&gt;"表示，而当它在内
容中的字符串"]]>"中出现，但此字符串不表示一个CDATA段的结束时，出于兼容性考虑，
必须用"&gt;"或一个字符引用转义得到。

在一个元素的内容中，字符数据可以是不包括任何标记的起始分隔符的任意字符串。在一
个CDATA段中，字符数据可以是不包括CDATA段结束分隔符"]]>"的任意字符串。

为了允许在属性值中包含单引号和双引号，省略符或称单引号(')可以被表示为"&apos;"
，而双引号(")可以被表示为"&quot;"。

字符数据
[14] CharData ::= [^<&]* - ([^<&]* ']]>' [^<&]*)

2.5 注释
注释可以在其他标记之外的文件中的任何位置出现。另外，它们可以在文件类型声明中文
法允许的地方出现。它们不是文件字符数据的一部分，XML处理器可以，但不是必须，允
许一个应用检索注释文本。出于兼容性考虑，字符串"--"(双连字符)不能在注释中出现。

注释
[15] Comment ::= '<!--' ((Char - '-') | ('-' (Char - '-')))* '-->'

注释的一个例子：

<!-- declarations for <head> & <body> -->

2.6 处理指令
处理指令(PI)允许文件中包含由应用来处理的指令。

处理指令
[16] PI ::= '<?' PITarget (S (Char* - (Char* '?>' Char*)))? '?>'
[17] PITarget ::= Name - (('X' | 'x') ('M' | 'm') ('L' | 'l'))

PI不是文件字符数据的一部分，但必须传递给应用。PI以用于指示传递给哪个应用的目标
(PITarget)开头，目标名字"XML"，"xml"，等等，保留用于本规范的此版本或后续版本的
标准化。XML记法机制可以用于PI目标的形式化声明。

2.7 CDATA段
CDATA段可以出现在字符数据可以出现的任何地方，它们用于转义包含会被识别为标记的
字符串的文本块。CDATA段以字符串"<![CDATA["开始，以字符串"]]>"结束：

CDATA段
[18] CDSect ::= CDStart CData CDEnd
[19] CDStart ::= '<![CDATA['
[20] CData ::= (Char* - (Char* ']]>' Char*))
[21] CDEnd ::= ']]>'

在一个CDATA段内，只有CDEnd字符串被识别为标记，因此左尖括号和"&"可以以它们的常
量形式出现，不需要(也不能)被换码为"&lt;"和"&amp;"。CDATA段不能嵌套。

一个CDATA段的例子，其中"<greeting>"和"</greeting>"被识别为字符数据，而不是标记
：

<![CDATA[<greeting>Hello, world!</greeting>]]>

2.8 序(prolog)和文件类型声明
XML文件可以，也应该以一个XML声明开始，其中指明了所用XML的版本。 例如，以下是一
个完整的XML文件，它是规范的，但不是有效的：

<?xml version="1.0"?>
<greeting>Hello, world!</greeting>

下面这个也同样：

<greeting>Hello, world!</greeting>

版本号"1.0"应该用于表明对与规范此版本相一致，如果使用了值"1.0"但又与本规范的此
版本不一致，那么这是文件的一个错误。XML工作组打算赋予本规范的后续版本不同于
"1.0"的数值，但这并不代表开发后续版本的承诺，也不代表如果有后续版本，会使用任
何特殊的命名方案的承诺。因为不排除有后续版本的可能性，提供了本构造(construct)
作为一旦需要时进行自动版本识别的手段。当处理器收到的文件标有它们不支持的版本时
，可以给出一个错误。

XML文件中标记的功能是描述文件的存储格式和逻辑结构，并将属性-值对和逻辑结构关联
起来。XML提供一种称为文件类型声明的机制，用于定义对逻辑结构的约束，支持预定义
存储单元的使用。如果一个XML文件有相应的文件类型声明并且它遵循其中的约束，则称
它是有效的(valid)。

文件类型声明必须位于文件第一个元素之前。

序
[22] prolog ::= XMLDecl? Misc* (doctypedecl Misc*)?
[23] XMLDecl ::= '<?xml' VersionInfo EncodingDecl? SDDecl? S? '?>'
[24] VersionInfo ::= S 'version' Eq (' VersionNum ' | " VersionNum ")
[25] Eq ::= S? '=' S?
[26] VersionNum ::= ([a-zA-Z0-9_.:] | '-')+
[27] Misc ::= Comment | PI | S

XML文件类型声明包含或指向标记声明，标记声明提供某一类文件的文法。这种文法被称
为文件类型定义(document type difinition，DTD)。文件类型定义可以指向一个外部子
集(一种特殊类型的外部实体)，或者可以在一个内部子集中直接包含标记声明，或者两者
兼用。一个文件的文件类型定义由这两个子集合在一起组成。

标记声明可以是元素类型声明，属性表声明，实体声明，或是记法声明。这些声明可以如
下面规范性和有效性约束中所述，全部或部分地包含在参数实体中，完整的信息参见"4.
物理结构"。

文件类型定义
[28] doctypedecl ::= '<!DOCTYPE' S Name (S ExternalID)? S? ('['
(markupdecl | PEReference | S)* ']' S?)? '>' [ VC: 根元素类型 ]
[29] markupdecl ::= elementdecl | AttlistDecl | EntityDecl | NotationDecl
| PI | Comment [ VC: 严格的声明/PE嵌套 ]
            [ WFC: 内部子集中的PE ]

标记声明可以全部或部分地由参数实体的置换文本组成。本规范后面的各个非终结符
(elementdecl，AttlistDecl，等等)产生式描述的是在所有的参数实体被包含(include)
之后的声明。

有效性约束: 根元素类型(Root Element Type)
文件类型声明中的Name必须匹配根元素的类型。

有效性约束: 严格的声明/PE嵌套
参数实体的置换文本必须用标记声明严格嵌套。即，如果一个标记声明(上面的
markupdecl)的第一个或最后一个字符被包含于一个参数实体引用的置换文本中，两者必
须都在此置换文本中。

规范性约束: 内部子集中的PE
在内部DTD子集中，参数实体引用只能出现在标记声明可以出现的地方，而不能在标记声
明内部出现。(这个约束不适用于出现在外部参数实体内的引用，也不适用于外部子集。
)

同内部子集一样，外部子集和任何DTD中引用的外部参数实体，必须由一系列被非终结符
markupdecl所允许的完整的标记声明组成，其中可以夹杂空白字符或参数实体引用。但是
，外部子集和外部参数实体的部分内容可以通过使用条件段(conditional section)被有
条件地忽略，在内部子集中则不允许这么做。

外部子集
[30] extSubset ::= TextDecl? extSubsetDecl
[31] extSubsetDecl ::= ( markupdecl | conditionalSect | PEReference | S )*

外部子集和外部参数实体与内部实体不同之处还在于：在它们内，参数实体引用不仅可以
出现在标记声明间，还可以出现在标记声明内。

有文件类型声明的XML文件的例子：

<?xml version="1.0"?>
<!DOCTYPE greeting SYSTEM "hello.dtd">
<greeting>Hello, world!</greeting>

系统标识符"hello.dtd"给出了文件DTD的URI。

声明也可以如同下面这个例子一样直接(locally)给出：

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE greeting [
<!ELEMENT greeting (#PCDATA)>
]>
<greeting>Hello, world!</greeting>

如果同时使用外部和内部子集，子集子集被看成出现在外部子集之前，这意味着内部子集
中的实体和属性表声明的优先级要比在外部子集中的高。

2.9 独立文件声明
当文件从XML处理器递给应用时，标记声明可以影响它的内容，属性缺省值和实体声明是
其中的例子。可以作为XML声明成分的独立文件声明，指明了对于文件实体而言，是否存
在外部的声明。

独立文件声明
[32] SDDecl ::= S 'standalone' Eq (("'" ('yes' | 'no') "'") | ('"' ('yes'
| 'no') '"')) [ VC: 独立文件声明 ]

在一个独立文件声明中，值"yes"表示对于文件实体没有外部标记声明(不论是在DTD外部
子集中，还是在由内部实体引用的外部参数实体中)会影响从XML处理器传递给应用的信息
。值"no"表示有或可能有这样的外部标记声明。注意独立文件声明只是表示外部声明的存
在，如果文件中存在对外部实体的引用，而这些实体已在内部声明时，不影响它的独立状
态。

如果不存在外部标记声明，独立文件声明没有意义。如果存在外部标记声明，但没有独立
文件声明，就假定取值"no"。

某些网络传输应用也许需要独立的文件，任何满足standalone="no"的XML文件可以通过一
定的算法转换为独立文件。

有效性约束: 独立文件声明
独立文件声明必须取值为"no"，如果任何外部标记声明中包含：

有缺省值的属性声明，如果适用这些属性的元素出现在文件中而又没有给这些属性赋值的
话。
(除了amp，lt，gt，apos，quot的)实体声明，而对这些实体的引用出现在文件中的话。

需要规范化的属性声明，如果这些出现在文件中的属性的值会因规范化而改变的话。
具有元素内容的元素类型声明，如果在这些类型的任一实例中直接出现空白的话。
具有独立文件声明的XML声明的例子：

<?xml version="1.0" standalone='yes'?>

2.10 空白处理
在编辑XML文件时，使用"空白"(空格，制表符，空行，在本规范中用非终结符S表示)来分
开标记以获得更好的可读性是很方便的。通常在文件的交付版本中不想包含这些空白。另
一方面，必须保留在交付版本中的有意义的空白是很常见的，如在诗歌和源码中的空白。

XML处理器必须始终把不是标记的所有字符传递给应用。一个进行验证的XML处理器必须同
时通知应用这些字符中的那一些组成了出现在元素内容中的空白。

可以在元素中附加一个名为xml:space的特殊属性，以通知应用应该保留此元素中的空白
。在有效的文件中，此属性和其他属性一样，使用时必须声明。它必须被声明为枚举类型
，只有"default"和"preserve"两个可能的值。例如：

<!ATTLIST poem xml:space (default|preserve) 'preserve'>

"default"表示可以对此元素使用应用的缺省空白处理模式，"preserve"表示应用应该保
留所有的空白。这适用于其所处元素的内容中的所有元素，除非被另一个xml:space属性
的实例所覆盖。

任何文件的根元素被认为对应用的空白处理方式不作要求，除非它给此属性赋了值或将此
属性声明为带缺省值。

2.11 行尾处理
为编辑的方便起见，存储XML已析实体的计算机文件经常用行来组织。通常这些行用回车
符(#xD)和换行符(#xA)的一些组合来分隔。

为了使应用的工作简单化，对于一个外部已析实体或内部已析实体的常量实体值中包含的
任何两字符常量序列"#xD#xA"或单独的常量#xD，XML处理器都应换成#xA传递给应用。(这
可以通过在进行语法分析前将所有行分隔符规范成#xA而方便地实现。)

2.12 语言标识
在进行文件处理时，标识出其内容所使用的自然或形式化语言经常是很有用的。可以在文
件中插入一个名为xml:lang的特殊属性用于指出XML文件中任何元素的内容和属性所使用
的语言。在有效的文件中，此属性和其他属性一样，使用时必须声明。此属性的值是
[IETF RFC 1766]，"语言标识码"中定义的语言标识符：

语言标识
[33] LanguageID ::= Langcode ('-' Subcode)*
[34] Langcode ::= ISO639Code | IanaCode | UserCode
[35] ISO639Code ::= ([a-z] | [A-Z]) ([a-z] | [A-Z])
[36] IanaCode ::= ('i' | 'I') '-' ([a-z] | [A-Z])+
[37] UserCode ::= ('x' | 'X') '-' ([a-z] | [A-Z])+
[38] Subcode ::= ([a-z] | [A-Z])+

Langcode可以是下列值：

[ISO 639]，"语言名称的表示码"中定义的两字母语言码。
在Internet Assigned Numbers Authority [IANA]注册的语言标识码，以前缀"i-"(或
"I-")开头。
用户定义或经各方同意的专用语言标识符，必须以前缀"x-"或"X-"开头，以保证它们不会
和以后经IANA标准化或在IANA注册的名字相冲突。
可以有任意多个Subcode段，如果第一个子代码段存在，并且子代码由两个字母组成，那
么此子代码必须是[ISO 3166]，"国家名称的表示码"中定义的国家代码。如果第一个子代
码多于两个字母，那么它必须是在IANA注册的语言代码所表示的语言的子代码，除非它
Langcode以前缀"x-"或"X-"开头。

习惯上用小写字母给出语言代码，用大写字母给出国家代码(如果有的话)。注意这些值与
XML文件中的其他名字不同，是大小写无关的。

举例如下：

<p xml:lang="en">The quick brown fox jumps over the lazy dog.</p>
<p xml:lang="en-GB">What colour is it?</p>
<p xml:lang="en-US">What color is it?</p>
<sp who="Faust" desc='leise' xml:lang="de">
<l>Habe nun, ach! Philosophie,</l>
<l>Juristerei, und Medizin</l>
<l>und leider auch Theologie</l>
<l>durchaus studiert mit hei遝m Bem黨'n.</l>
</sp>

xml:lang所表示的语言选择适用于它所处元素的所有属性和内容，除非被此内容中的元素
内的另一个xml:lang的实例所覆盖。

xml:lang的一个简单声明可以采用如下形式：

xml:lang NMTOKEN #IMPLIED

但是如果合适的话，也可以给出特定的缺省值。在一本供英国学生使用的法文诗歌集中，
评注和注解使用英语，xml:lang属性可以这样声明：

<!ATTLIST poem xml:lang NMTOKEN 'fr'>
<!ATTLIST gloss xml:lang NMTOKEN 'en'>
<!ATTLIST note xml:lang NMTOKEN 'en'>

3. 逻辑结构
每个XML文件包含一个或多个元素，它们的边界用起始标签和结束标签分隔，或者，对于
空元素，用一个空元素标签分隔。每一个元素有一个用名字标识的类型，有时称之为它的
"通用标识符(generic identifier)"(GI)，同时它可以有一个属性说明(attribute
specification)集。每一个属性说明有一个名字和一个值。

元素
[39] element ::= EmptyElemTag
         | STag content ETag [ WFC: 元素类型匹配 ]
            [ VC: 元素有效性 ]

除了那些开头匹配(('X'|'x')('M'|'m')('L'|'l'))的名字保留用于本规范的此版本和后
继版本的标准化外，本规范不对元素类型和属性的语义，用法和名字(语法之外)作出限制
。

规范性约束: 元素类型匹配
元素结束标签中的Name必须和起始标签中的元素类型相匹配。

有效性约束: 元素有效性
如果有一个与elementdecl相匹配的声明的Name与元素类型相匹配，且下述之一成立时，
称此元素是有效的：

此声明与EMPTY相匹配，同时此元素没有内容。
此声明与children相匹配，同时子元素的序列属于内容模型中的正则表达式所产生的语言
，在每对子元素间允许有空白(匹配非终结符S的字符)。
此声明与Mixed相匹配，同时内容由其类型匹配内容模型中的名字的字符数据和子元素组
成。
此声明与ANY相匹配，同时每个子元素的类型均已声明。
3.1 起始标签，结束标签和空元素标签
每一个非空XML元素以一个起始标签作为开始的标记。

起始标签
[40] STag ::= '<' Name (S Attribute)* S? '>' [ WFC: 唯一的属性说明 ]
[41] Attribute ::= Name Eq AttValue [ VC: 属性值类型 ]
            [ WFC: 无外部实体引用 ]
            [ WFC: 在属性值中没有< ]

起始标签和结束标签中的Name给出了元素的类型。Name-AttValue对被统称为元素的属性
说明，其中每一对中的Name被称为属性名，AttValue的内容(在'或"分隔符间的文本)被称
为属性值。

规范性约束: 唯一的属性说明
一个属性名只能在同一个起始标签或空元素标签中出现一次。

有效性约束: 属性值类型
属性必须被声明，其值必须具有所声明的类型。(属性类型参见"3.3 属性表声明"。)

规范性约束: 无外部实体引用
属性值不能包含对外部实体直接或间接的实体引用。

规范性约束: 在属性值中没有<
在一个属性值中直接或间接引用的实体的置换文本(除了"&lt;")不能包含<。

起始标签的一个例子：

<termdef id="dt-dog" term="dog">

由一个起始标签开始的每一个元素必须用一个结束标签标记其结束，结束标签中的名字必
须与起始标签中给出的元素类型相同：

结束标签
[42] ETag ::= '</' Name S? '>'

结束标签的一个例子：

</termdef>

在起始标签和结束标签中的文本被称为元素的内容：

元素的内容
[43] content ::= (element | CharData | Reference | CDSect | PI | Comment)*

如果一个元素为空，它必须表示为一个起始标签紧跟一个结束标签或空元素标签。一个空
元素标签采用一种特殊的形式：

空元素标签
[44] EmptyElemTag ::= '<' Name (S Attribute)* S? '/>' [ WFC: 唯一的属性说明
]

不论元素是否用关键字EMPTY声明，空元素标签都可以用于任何没有内容的元素。出于互
操作性考虑，空元素必须用于，且只能用于声明为EMPTY的元素。

空元素的例子：

<IMG align="left"
src="http://www.w3.org/Icons/WWW/w3c_home" />
<br></br>
<br/>

3.2 元素类型声明
出于验证的目的，可以用元素类型和属性表声明限制XML文件中元素的结构。元素类型声
明限制了元素的内容。

元素类型声明通常限制了子元素的类型。由用户选择，当声明提到的元素类型没有相应的
声明时，XML处理器可以给出警告，但这不是一个错误。

元素类型声明形式如下：

元素类型声明 ode>唯一的属性说明 ]

不论元素是否用关键字EMPTY声明，空元素标签都可以用于任何没有内容的元素。出于互
操作性考虑，空元素必须用于，且只能用于声明为EMPTY的元素。

空元素的例子：

<IMG align="left"
src="http://www.w3.org/Icons/WWW/w3c_home" />
<br></br>
<br/>

3.2 元素类型声明
出于验证的目的，可以用元素类型和属性表声明限制XML文件中元素的结构。元素类型声
明限制了元素的内容。

元素类型声明通常限制了子元素的类型。由用户选择，当声明提到的元素类型没有相应的
声明时，XML处理器可以给出警告，但这不是一个错误。

元素类型声明形式如下：

元素类型声明
[45] elementdecl ::= '<!ELEMENT' S Name S contentspec S? '>' [ VC: 唯一的元
素类型声明 ]
[46] contentspec ::= 'EMPTY' | 'ANY' | Mixed | children

其中Name给出了所声明的元素类型。

有效性约束: 唯一的元素类型声明
元素类型只能声明一次。

元素类型声明的例子：

<!ELEMENT br EMPTY>
<!ELEMENT p (#PCDATA|emph)* >
<!ELEMENT %name.para; %content.para; >
<!ELEMENT container ANY>

3.2.1 元素内容
当某一类型的元素只能包含用可选空白(匹配非终结符S)分隔的子元素(无字符数据)时，
称此元素类型具有元素内容。在这种情况下，有内容模型作为类型限制之一，内容模型是
决定子元素类型和子元素出现顺序的一种简单文法。此文法用内容粒子(cp)构建，内容粒
子由名字，内容粒子的选择表(choice list)或内容粒子的序列表(sequence list)组成：

元素内容的模型
[47] children ::= (choice | seq) ('?' | '*' | '+')?
[48] cp ::= (Name | choice | seq) ('?' | '*' | '+')?
[49] choice ::= '(' S? cp ( S? '|' S? cp )* S? ')' [ VC: 严格的组/PE嵌套
]
[50] seq ::= '(' S? cp ( S? ',' S? cp )* S? ')' [ VC: 严格的组/PE嵌套 ]

其中每一个Name是可以作为子元素的元素的类型。选择表中出现的任意内容粒子在元素内
容中允许出现的位置对应于选择表在文法中的位置。序列表中出现的所有内容粒子必须以
相同的顺序出现在元素内容中。在名字或表之后的可选字符(optional character)决定了
表中元素或内容粒子可以出现一次或多次(+)，还是零次或多次(*)，或是零次或一次(?)
。没有这样一个操作符意味着元素或内容粒子必须恰好出现一次。这种语法和意义和本规
范中的产生式中所使用的相同。

当且仅当一个元素的内容可以通过满足内容模型中的选择，序列和重复操作符得到，并且
内容中的每一个元素与内容模型中的一种元素类型相匹配时，称此元素的内容与一个内容
模型相匹配。出于兼容性考虑， 如果文件的某个元素可以和内容模型中的一种元素类型
多次匹配，这是一个错误。 更详细的信息参见"E. 确定型内容模型".

有效性约束: 严格的组/PE嵌套
参数实体的置换文本用括号括起的组严格嵌套。即，如果choice，seq或Mixed语法成分的
开始或结束括号出现在某个参数实体的置换文本中，两者必须同在此置换文本中。出于互
操作性考虑，如果一个参数实体引用出现在choice，seq或Mixed语法成分中时，它的置换
文本不应为空，同时其置换文本的第一个和最后一个非空字符不应为一个连接符(|或,)。

元素内容模型的例子：

<!ELEMENT spec (front, body, back?)>
<!ELEMENT div1 (head, (p | list | note)*, div2*)>
<!ELEMENT dictionary-body (%div.mix; | %dict.mix;)*>

3.2.2 混合型内容(Mixed Content)
当某元素类型可以包含字符数据，其间可以随意穿插子元素时，称此元素类型具有混合型
内容。在这种情况下，对子元素的类型可能有所限制，但对它们的次序和出现次数没有限
制：

混合型内容声明
[51] Mixed ::= '(' S? '#PCDATA' (S? '|' S? Name)* S? ')*'
         | '(' S? '#PCDATA' S? ')' [ VC: 严格的组/PE嵌套 ]
            [ VC: 无重复类型 ]

其中Name给出了子元素的元素的类型。

有效性约束: 无重复类型
同一名字在单个混合型内容声明中只能出现一次。

混合内容声明的例子：

<!ELEMENT p (#PCDATA|a|ul|b|i|em)*>
<!ELEMENT p (#PCDATA | %font; | %phrase; | %special; | %form;)* >
<!ELEMENT b (#PCDATA)>

3.3 属性表声明
属性用于关联名字-值对和元素。属性说明只能在起始标签和空元素标签中出现; 因此，
用于识别它们的产生式出现在"3.1 起始标签，结束标签和空元素标签"中。属性表声明可
以用于：

定义与一给定元素类型有关的属性集。
确定这些属性的类型限制。
提供属性的缺省值。
属性表声明 详细说明了与给定元素类型相关联的每一个属性的名字，数据类型和缺省值
(如果有的话)：

属性表声明
[52] AttlistDecl ::= '<!ATTLIST' S Name AttDef* S? '>'
[53] AttDef ::= S Name S AttType S DefaultDecl

AttlistDecl规则中Name是元素的类型。由用户选择，当属性声明相关的元素类型没有被
声明时，XML处理器可以给出一个警告，但这不是一个错误。AttDef规则中的Name是属性
的名字。

当与某个给定元素类型相关的AttlistDecl超过一个时，这些声明中的内容被合并在一起
。当给定元素类型的某个属性的定义超过一个时，绑定第一个定义，其余定义被忽略。出
于互操作性考虑，DTD的作者可以选择一个给定的元素类型至多有一个属性表声明，一个
给定的属性名至多有一个属性定义，以及每个属性表声明至少有一个属性定义。出于互操
作性考虑，当一个给定元素有超过一个的属性表声明或一个给定属性有超过一个的属性定
义时，XML处理器可以，由用户选择，给出警告，但这不是一个错误。

3.3.1 属性类型
XML属性有三种类型：字符串类型，一组记号化类型和枚举类型。字符串类型可以以任意
常量字符串为值; 各个记号化类型有不同的词法和语义约束，如下：

属性类型
[54] AttType ::= StringType | TokenizedType | EnumeratedType
[55] StringType ::= 'CDATA'
[56] TokenizedType ::= 'ID' [ VC: ID ]
            [ VC: 每种元素类型一个ID ]
            [ VC: ID属性的缺省值 ]
         | 'IDREF' [ VC: IDREF ]
         | 'IDREFS' [ VC: IDREF ]
         | 'ENTITY' [ VC: 实体名 ]
         | 'ENTITIES' [ VC: 实体名 ]
         | 'NMTOKEN' [ VC: 名字记号 ]
         | 'NMTOKENS' [ VC: 名字记号 ]

有效性约束: ID
ID类型的值必须匹配Name产生式。作为此类型值的名字只能在XML文件中出现一次;即，
ID类型的值必须能唯一标识元素。

有效性约束: 每种属性类型一个ID
每种属性类型只能有一个ID属性。

有效性约束: ID属性的缺省值
ID属性必须有一个声明为#IMPLIED或#REQUIRED的缺省值。

有效性约束: IDREF
IDREF类型的值必须匹配Name产生式，IDREFS类型的值必须匹配Names产生式；每一个
Name必须匹配XML文件中某些元素ID属性的值；也就是说，IDREF类型的值必须匹配某些
ID属性的值。

有效性约束: 实体名
ENTITY类型的值必须匹配Name产生式，ENTITIES类型的值必须匹配Names产生式；每一个
Name必须匹配DTD中声明的未析实体的名字。

有效性约束: 名字记号
NMTOKEN类型的值必须匹配Nmtoken产生式;NMTOKENS类型的值必须匹配Nmtokens产生式。

枚举类型的属性可以在声明中提供的取值表中取值。有两种枚举类型：

枚举属性类型
[57] EnumeratedType ::= NotationType | Enumeration
[58] NotationType ::= 'NOTATION' S '(' S? Name (S? '|' S? Name)* S? ')' [
VC: 记法属性 ]
[59] Enumeration ::= '(' S? Nmtoken (S? '|' S? Nmtoken)* S? ')' [ VC: 枚举
]

一个NOTATION类型的属性标识了一种用于解释与此属性相关的元素的记法，此记法中用系
统或公共标识符在DTD中声明。

有效性约束: 记法属性
此类型的值必须与声明中所包含的记法名之一相匹配;声明中的所有记法名都必须声明。

有效性约束: 枚举
此类型的值必须与声明中所包含的Nmtoken记号之一相匹配。

出于互操作性考虑，同一Nmtoken只能在单个元素类型的枚举属性类型中出现一次。

3.3.2 属性缺省值
属性声明提供的信息指明了某属性是否必须出现，同时指明了在被声明的属性不是必须出
现而文件中没有出现此属性的情况下，XML处理器应如何处理。

属性缺省值
[60] DefaultDecl ::= '#REQUIRED' | #IMPLIED'
         | (('#FIXED' S)? AttValue) [ VC: 必须的属性 ]
            [ VC: 合法的属性缺省值 ]
            [ WFC: 在属性值中无< ]
            [ VC: 固定的属性缺省值 ]

在一个属性声明中，#REQUIRED表示必须总是提供此属性，#IMPLIED表示不提供缺省值。
如果声明既不是#REQUIRED，也不是#IMPLIED，那么AttValue值包含了所声明的缺省值;关
键字#FIXED规定此属性必须总是有缺省值。如果声明了一个缺省值，当XML处理器遇到一
个被省略的属性时，它将当成此属性以缺省值出现

有效性约束: 必须的属性
如果缺省值声明是关键字#REQUIRED，那么在所有此类型元素的属性表声明中必须有此属
性。

有效性约束: 合法的属性缺省值
被声明的属性缺省值必须满足被声明的属性类型的词法约束。

有效性约束: 固定的属性缺省值
如果某属性的缺省值用关键字#FIXED声明，此属性的所有实例必须匹配该缺省值。

属性表声明的例子：

<!ATTLIST termdef
id ID #REQUIRED
name CDATA #IMPLIED>
<!ATTLIST list
type (bullets|ordered|glossary) "ordered">
<!ATTLIST form
method CDATA #FIXED "POST">

3.3.3 属性-值对的规范化(Attribute-Value Normalization)
在将属性的值传给应用或检验有效性之前，XML处理器必须将其规范化：

对字符引用的处理是将被引用的字符附加在属性值之后
对实体引用的处理是递归地处理实体的置换文本
对空白字符(#x20，#xD，#xA，#x9)的处理是将#x20附加在规范化的值之后，例外是对作
为内部已析实体或内部已析实体常量实体值一部分的"#xD#xA"只附加一个#x20。
对于其他字符的处理是将它们附加与规范化的值之后
如果被声明的值不是CDATA，那么XML处理器必须继续处理规范化后的值，去掉其前导和尾
随空格(#x20)字符，并将空格(#x20)字符序列替换成单个空格(#x20)字符。

不进行验证的语法分析器应该将所有尚未读到声明部分的属性当成被声明为CDATA。

3.4 条件段(Conditional Sections)
条件段是文件类型声明外部子集的一部分，取决于相应的关键字，它们或被包含在DTD逻
辑结构之内，或被排除在DTD逻辑结构之外。

条件段
[61] conditionalSect ::= includeSect | ignoreSect
[62] includeSect ::= '<![' S? 'INCLUDE' S? '[' extSubsetDecl ']]>'
[63] ignoreSect ::= '<![' S? 'IGNORE' S? '[' ignoreSectContents* ']]>'
[64] ignoreSectContents ::= Ignore ('<![' ignoreSectContents ']]>'
Ignore)*
[65] Ignore ::= Char* - (Char* ('<![' | ']]>') Char*)

同内部或外部DTD子集一样，条件段可以包含一个或多个完整的声明，注释，处理指令，
或嵌套的条件段，其间可以夹杂空白。

如果条件段的关键字是INCLUDE，那么条件段的内容是DTD的一部分，如果条件段的关键字
是IGNORE，那么条件段的内容逻辑上不是DTD的一部分。注意对于可靠的语法分析过程，
甚至必须读取被忽略的条件段的内容以检测嵌套的条件段，保证最外层(被忽略)的条件段
的结尾被恰当地检测到。如果一个关键字为INCLUDE的条件段出现在更大的关键字为
IGNORE的条件段中，内外两个条件段都被忽略。

如果条件段的关键字是一个参数实体引用，处理器在决定是否包含或忽略此条件段前，必
须先将该参数实体置换成其内容。

一个例子：

<!ENTITY % draft 'INCLUDE' >
<!ENTITY % final 'IGNORE' >

<![%draft;[
<!ELEMENT book (comments*, title, body, supplements?)>
]]>
<![%final;[
<!ELEMENT book (title, body, supplements?)>
]]>

4. 物理结构
一个XML文件可能包含一个或多个存储单元。它们被称为实体(entity);它们都具有内容并
且都用名字进行标识(除了文件实体，见下，和外部DTD子集之外)。每一个XML文件有一个
称为文件实体的实体，它作为XML处理器处理的起点并可能包含了整个文件。

实体可以是已析的或未析的。已析实体(parsed entity)的内容被称为它的置换文本;此文
本被看成是文件整体的一部分。

未析实体(unparsed entity)是一种资源，其内容可以是也可以不是文本，并且，如果是
文本的话，可以不是XML。每一个未析实体有一个相关联的用名字标识的记法。除了要求
XML处理器能向应用提供实体和记法的标识符之外，XML对未析实体的内容不作任何限制。

已析实体以实体引用的方式使用名字来调用;未析实体用ENTITY或ENTITIES属性中给出的
名字调用。

普通实体(general entity)是那些在文件内容中使用的实体。在本规范中，普通实体有时
用未修饰的术语entity来表示。参数实体是用于DTD内的已析实体。这两类实体用不同形
式的引用，在不同的上下文中识别。另外，它们使用不同的名字空间;具有相同名字的参
数实体和普通实体是两个截然不同的两个实体。

4.1 字符和实体引用(Character and Entity References)
一个字符引用引用ISO/IEC 10646字符集中的一个字符。例如不能用输入设备直接输入的
字符。

字符引用
[66] CharRef ::= '&#' [0-9]+ ';'
         | '&#x' [0-9a-fA-F]+ ';' [ WFC: 合法字符 ]

规范性约束: 合法字符
用字符引用引用的字符必须匹配Char产生式。

如果字符引用以"&#x"开头，直到终结;的数字和字母提供了某字符在ISO/IEC 10646中代
码的一个十六进制表示。如果它仅以"&#"开头，直到终结;的数字提供了某字符的代码的
十进值表示。

实体引用(entity reference)引用一个命名实体的内容。对已析普通实体的引用使用
"and"号(&)和分号(;)作为分隔符。参数实体引用则使用百分号(%)和分号(;)作为分隔符
。

实体引用
[67] Reference ::= EntityRef | CharRef
[68] EntityRef ::= '&' Name ';' [ WFC: 声明实体 ]
            [ VC: 声明实体 ]
            [ WFC: 已析实体 ]
            [ WFC: 无递归 ]
[69] PEReference ::= '%' Name ';' [ VC: 声明实体 ]
            [ WFC: 无递归 ]
            [ WFC: 在DTD内 ]

规范性约束: 声明实体
在一个没有任何DTD的文件，或一个只有不包含参数实体引用的内部DTD子集的文件，或一
个"standalone='yes'"的文件内，在实体引用中给出的Name必须与实体声明中所给出的相
匹配，但规范的文件不需要声明以下的这些实体：amp，lt，gt，apos和quot。参数实体
的声明必须先于任何对它的引用。类似地，普通实体的声明必须先于任何在属性表声明中
的缺省值中出现的对它的引用。注意对于在外部子集或外部参数实体中声明的实体，不进
行验证的处理器不必要读取和处理它们的声明;对这些文件，仅当standalone='yes'时，
实体必须被声明的规则才是一个规范性约束。

有效性约束: 声明实体
在一个有外部子集或外部参数实体且"standalone='no'"的实体中，实体引用中给出的
Name必须与实体声明中所给出的相匹配。出于互操作性考虑，有效的文件应该以"4.6 预
定义实体"中的简化形式声明实体amp，lt，gt，apos和quot。参数实体的声明必须先于任
何对它的引用。类似地，普通实体的声明必须先于任何在属性表声明中的缺省值中出现的
对它的引用。

规范性约束: 已析实体
实体引用不能包含一个未析实体的名字。未析实体只能在声明为ENTITY或ENTITIES的属性
值中引用。

规范性约束: 无递归
已析实体不能直接或间接地包含对自身的递归引用。

规范性约束: 在DTD内
参数实体引用只能在DTD中出现。

字符引用和实体引用的例子：

Type <key>less-than</key> (&#x3C;) to save options.
This document was prepared on &docdate; and
is classified &security-level;.

参数实体引用的例子：

<!-- declare the parameter entity "ISOLat2"... -->
<!ENTITY % ISOLat2
SYSTEM "http://www.xml.com/iso/isolat2-xml.entities" >
<!-- ... now reference it. -->
%ISOLat2;

4.2 实体声明(Entity Declaration)
实体以如下方式声明：

实体声明
[70] EntityDecl ::= GEDecl | PEDecl
[71] GEDecl ::= '<!ENTITY' S Name S EntityDef S? '>'
[72] PEDecl ::= '<!ENTITY' S '%' S Name S PEDef S? '>'

[73] EntityDef ::= EntityValue | (ExternalID NDataDecl?)
[74] PEDef ::= EntityValue | ExternalID

实体引用中的Name标识了该实体;对于未析实体，ENTITY或ENTITIES属性的值标识了该实
体。如果同一实体被声明了不止一次，绑定第一个遇到的声明。由用户选择，如果实体被
多次声明，XML处理器可以给出警告。

4.2.1 内部实体(Internal Entities)
如果实体定义是一个EntityValue，被定义的实体被称为内部实体。内部实体没有单独的
物理存储对象，实体的内容在声明中给出。注意常量实体值中一些实体和字符引用的处理
可能要求产生正确的置换文本：参见"4.5 内部置换文本的构造"。

内部实体是已析实体。

内部实体声明的例子：

<!ENTITY Pub-Status "This is a pre-release of the
specification.">

4.2.2 外部实体(External Entities)
如果实体不是内部的，那么它是一个外部实体，声明如下：

外部实体声明
[75] ExternalID ::= 'SYSTEM' S SystemLiteral
         | 'PUBLIC' S PubidLiteral S SystemLiteral
[76] NDataDecl ::= S 'NDATA' S Name [ VC: 声明记法 ]

如果有NDataDecl，那么这是一个普通未析实体;否则它是一个已析实体。

有效性约束: 声明记法
Name必须与记法的名字相匹配。

SystemLiteral被称为该实体的系统标识符。这是一个URI，可以用于存取此实体。注意井
号(#)和URI中常用的片断标识符形式上而言不是URI的一部分；如果一个片断标识符作为
系统标识符的部分给出，XML处理器可以给出一个错误。除非在本规范范围之外另外给出
(如，一个特殊DTD中定义的专用XML元素类型，或一个特殊应用规范中定义的处理指令)，
相对URI指相对于实体声明所在资源的位置。因此，一个URI可能是相对于文件实体，或相
对于包含外部DTD子集的实体，或相对于其他一些外部参数实体。

XML处理器处理URI中的非ASCII字符时，应该将UTF-8中的字符用一个或多个字节表示，然
后将这些字符用URI转义机制转义(即，将每个字节转换成%HH，其中HH是字节值的十六进
制记法)。

除了系统标识符之外，外部标识符还可以包含公共标识符。试图存取实体内容的XML处理
器可以用公共标识符试着产生一个可选URI。如果处理器无法做到这一点，它必须使用系
统常量中的URI。在试着匹配之前，公共标识符中所有空白字符串必须被规范为单个空格
字符(#x20)，同时必须去掉前导和尾随空白。

外部实体声明的例子：

<!ENTITY open-hatch
SYSTEM "">http://www.textuality.com/boilerplate/OpenHatch.xml">
<!ENTITY open-hatch
PUBLIC "-//Textuality//TEXT Standard open-hatch boilerplate//EN"
"">http://www.textuality.com/boilerplate/OpenHatch.xml">
<!ENTITY hatch-pic
SYSTEM "../grafix/OpenHatch.gif"
NDATA gif >

4.3 已析实体(Parsed Entities)
4.3.1 文本声明(Text Declaration)
每个外部已析实体可以以文本声明作为开始。

文本声明
[77] TextDecl ::= '<?xml' VersionInfo? EncodingDecl S? '?>'

文本声明必须以常量形式给出，而不能使用已析实体的引用。文本声明只能在外部已析实
体的开头出现，不允许在其他任何地方出现。

4.3.2 规范的已析实体(Well-Formed Parsed Entities)
如果文件实体匹配document产生式，那么它是规范的。如果外部普通已析实体匹配
extParsedEnt产生式，那么它是规范的。如果外部参数实体匹配extPE产生式，那么它是
规范的。

规范的外部已析实体
[78] extParsedEnt ::= TextDecl? content
[79] extPE ::= TextDecl? extSubsetDecl

如果内部普通已析实体的置换文本匹配content产生式，那么它是规范的。根据定义，所
有内部的参数实体都是规范的。

实体符合规范性的一个结果是XML文件的逻辑和物理结构是严格嵌套的;起始标签，结束标
签，空元素标签，元素，注释，处理指令，字符引用，或实体引用都不能在一个实体中开
始而在另一个实体中结束。

4.3.3 实体中的字符编码(Character Encoding in Entities)
XML文件中的每个外部已析实体都可以对其字符采用一种不同的编码方案。所有XML处理器
必须能读编码为UTF-8或UTF-16的实体。

以UTF-16编码的实体必须以ISO/IEC 10646增补E和Unicode附录B(零宽度不间断空格字符
，#xFEFF)中所描述的字节次序标记(Byte Order Mark)开头。这是一个编码签名，即不是
XML文件中标记的一部分，也不是XML文件字符数据的一部分。XML处理器必须能用此字符
区分UTF-8编码和UTF-16编码的文件。

虽然XML处理器只被要求能读取UTF-8和UTF-16编码的实体，已有共识认为世界上还有其他
的编码方案。有时可能想让XML处理器读取以那些编码方案编码的实体。以不同与UTF-8和
UTF-16的编码方案存储的实体必须以包含编码声明的文本声明开头：

编码声明
[80] EncodingDecl ::= S 'encoding' Eq ('"' EncName '"' | "'" EncName "'" )

[81] EncName ::= [A-Za-z] ([A-Za-z0-9._] | '-')* /* 编码方案的名字只包含拉
丁字母 */

在文件实体中，编码声明是XML声明的一部分。EncName是所用编码方案的名字。

在一个编码声明中，值"UTF-8"，"UTF-16"，"ISO-10646-UCS-2"和"ISO-10646-UCS-4"应
该用于表示Unicode或ISO/IEC 10646中的各种不同编码和变换方案，值"ISO-8859-1"，
"ISO-8859-2"，... "ISO-8859-9"应该用于表示ISO 8859的各个部分，而值
"ISO-2022-JP"，"Shift_JIS"和"EUC-JP"应该用于表示JIS X-0208-1997的各种编码。
XML处理器可以识别其他编码方案;建议对于在Internet Assigned Numbers Authority
[IANA]注册的字符编码方案(以字符集(charset)的方式)，除了以上所列的之外，引用时
应使用其注册名。注意这些注册名定义为大小写敏感，因此欲与之匹配的处理器要以大小
写敏感的方式进行匹配。

在缺少外部传输协议(如HTTP或MIME)所提供的信息时，以下情况均是错误：XML处理器接
收到的实体的编码方案与实体所含编码声明中指出的编码方案不同，编码声明不在外部实
体的开头，既不以字节次序标记开头也不以编码声明开头的实体使用了不同于UTF-8的编
码。注意因为ASCII是UTF-8的一个子集，严格说来普通ASCII字符不需要编码声明。

当XML处理遇到的实体使用了它不能处理的编码时，是一个严重错误。

编码声明的例子：

<?xml encoding='UTF-8'?>
<?xml encoding='EUC-JP'?>

4.4 XML处理器对实体和引用的处理
下表汇总了字符引用，实体引用，和对未析实体的调用可以出现的上下文，以及每种情况
下XML处理器的动作。最左边一列的标签指明了识别时的上下文：

内容中的引用
可以在元素的起始标签之后，结束标签之前的任何地方以引用形式出现，对应于非终结符
content。
属性值中的引用
可以在起始标签内的属性值中，或属性声明内的缺省值中以引用形式出现;对应于非终结
符AttValue。
作为属性值
可以以Name而不是以引用的形式出现，作为声明为ENTITY类型的属性的值，或可以作为声
明为ENTITIES类型的属性值中的以空白分隔的记号之一。
实体值中的引用
可以在参数中或内部实体的实体声明内的常量实体值中以引用形式出现;对应于非终结符
EntityValue。
DTD中的引用
可以在DTD的内部或外部子集中以引用形式出现，但须在EntityValue和AttValue之外。

   实体类型 字符
参数 内部普通 外部已析普通 未析
内容中的引用 不被识别 被包含 进行验证时被包含 被禁止 被包含
属性值中的引用 不被识别 作为常量被包含 被禁止 被禁止 被包含
作为属性值 不被识别 被禁止 被禁止 通知 不被识别
实体值中的引用 作为常量被包含 不处理 不处理 被禁止 被包含
DTD中的引用 作为PE被包含 被禁止 被禁止 被禁止 被禁止

4.4.1 不被识别(Not Recognized)
在DTD之外，百分号字符%没有特殊含义;因此在DTD中的参数实体引用在content中不被当
成标记识别。类似地，除非未析实体的名字出现在已适当声明的属性的值中，否则它们不
被识别。

4.4.2 被包含(Included)
当一个实体的置换文本被当成出现在引用所在位置的文件的一部分一样被存取和处理时，
称此实体被包含。其置换文本可以包含字符数据和标记(不包括参数实体)，其中标记必须
以通常的方式识别，但用于转义标记分隔符(实体amp，lt，gt，apos和quot)的实体的置
换文本总是被当成数据。(字符串"AT&amp;T;"展开为"AT&T;"尚存的"and"号&不被识别为
实体引用的分隔符。)当被表示的字符被当成出现在引用所在位置一样被处理时，称此字
符引用被包含。

4.4.3 进行验证时被包含(Included If Validating)
当XML处理器识别出一个对已析实体的引用，为了验证该文件，处理器必须包含此实体的
置换文本。如果实体是外部的，而处理器不试图验证该XML文件，那么处理器可以，但不
是必须，包含此实体的置换文本。如果一个不验证的语法分析器不包含此置换文本，它必
须通知应用它识别出但没有读取此实体。

这条规范基于这样一个共识：由SGML和XML的实体机制提供的起初设计用于支持模块化创
作的自动包含不一定适合于其他应用，尤其是文件浏览。例如，当浏览器遇到一个外部已
析实体引用时，可能选择用可视方式表示其存在但只在被请求时才读取它进行显示。

4.4.4 被禁止(Forbidden)
以下情况被禁止，并构成一个严重错误：

出现对未析实体的引用。
在DTD中出现任何字符或普通实体引用，除非它们出现在EntityValue或AttValue中。
属性值中出现对外部实体的引用。
4.4.5 被包含在常量中(Included in Literal)
当实体引用出现在属性值中或参数实体引用出现在常量实体值中时，它们的置换文本被当
成出现在引用所在位置的文件的一部分一样被存取和处理，置换文本中的单双引号总是被
当成正常的数据字符而不会结束此常量。例如，下面的例子是规范的：

<!ENTITY % YN '"Yes"' >
<!ENTITY WhatHeSaid "He said &YN;" >

而这个例子不是：

<!ENTITY EndAttr "27'" >
<element attribute='a-&EndAttr;>

4.4.6 通知(Notify)
当未析实体名字作为记号在声明为ENTITY或ENTITIES类型的属性的值中出现时，进行验证
的处理器必须将此实体和它的相关记法的系统和公共(如果有的话)标识符通知给应用。

4.4.7 不处理(Bypassed)
当实体声明内一个普通实体引用出现在EntityValue中时，它不被处理，保持不变。

4.4.8 作为PE被包含(Included as PE)
和外部已析实体一样，参数实体只需在进行验证时被包含。当参数实体引用在DTD中被识
别并被包含时，它的置换文本被前后各加上一个空格字符;其目的在于强制参数实体的置
换文本包含整数个DTD中的语法记号。

4.5 内部实体置换文本的构建(Construction of Internal Entity)
在讨论内部实体的处理时，区分两种形式的实体值是有帮助的。常量实体值(literal
entity value)是实际出现在实体声明中用引号扩起的字符串。对应于非终结符
EntityValue。置换文本(replacement text)是置换了字符引用和参数实体引用后的实体
内容。

在内部实体声明(EntityValue)中给出的常量实体值可以包括字符引用，参数实体引用和
普通实体引用。这些引用必须被整个包含于常量实体值中。如前述方式被包含的实际置换
文本必须包含所有被引用的参数实体的置换文本，同时必须所有被引用的字符必须在常量
实体值中字符引用所在位置被包含。但普通实体的引用必须保持不变，不被展开。例如，
如果有以下的声明：

<!ENTITY % pub "&#xc9;ditions Gallimard" >
<!ENTITY rights "All rights reserved" >
<!ENTITY book "La Peste: Albert Camus,
&#xA9; 1947 %pub;. &rights;" >

那么实体"book"的置换文本为：

La Peste: Albert Camus,
?nbsp;1947 蒬itions Gallimard. &rights;

一旦引用"&book;"出现在文件的内容或属性值中时，普通实体引用"&rights;"应该被展开
。

这些简单的规则将可能会有复杂的相互作用;参见"D. 实体和字符引用的展开"中对一个难
的例子的详细讨论。

4.6 预定义实体(Predefined Entities)
实体和字符引用都可以用于转义左尖括号，"and"号(&)和其他分隔符。普通实体集合
(amp，lt，gt，apos，quot)专门用于此目的。也可以使用数值字符引用; 一旦被识别，
它们立即被展开，同时它们必须被当成字符数据，因此数值字符引用"&#60;"和"&#38;"可
以用于转义出现在字符数据中的<和&。

不管这些实体是否被声明，所有的XML处理器必须能识别它们。出于互操作性考虑，有效
的XML文件应该如其他实体一样，在使用这些实体前先声明它们。如果声明的话，这些实
体必须被声明为内部实体，其置换文本是被转义的单个字符或指向这个字符的字符引用。
如下所示。

<!ENTITY lt "&#38;#60;">
<!ENTITY gt "&#62;">
<!ENTITY amp "&#38;#38;">
<!ENTITY apos "&#39;">
<!ENTITY quot "&#34;">

注意在"lt"和"amp"的声明中，<和&被两次转义，这是为了满足实体置换的规范性要求。

4.7 记法声明(Notation Declarations)
记法用名字标识了未析实体的格式，具有记法属性的元素的格式以及处理指令所针对的应
用的格式。

记法声明赋予记法一个名字用于实体中，属性表声明中和属性说明中，同时也给出了一个
记法的外部标识符使得XML处理器或它的客户应用可以定位能以给定记法处理数据的助理
应用。

记法声明
[82] NotationDecl ::= '<!NOTATION' S Name S (ExternalID | PublicID) S?
'>'
[83] PublicID ::= 'PUBLIC' S PubidLiteral

XML处理器必须向应用提供任何在属性值中，属性定义中或实体声明中定义或引用的记法
的名字和外部标识符。它们还可以将外部标识符解析成系统标识符，文件名，或是应用调
用相应处理器处理给定记法格式的数据的所需的其他信息。(但如果XML处理器或应用所运
行的系统中没有处理XML文件声明和引用的记法的相应应用的情况，不是一个错误。)

4.8 文件实体(Document Entity)
文件实体(document entity)是实体树的根和XML处理器的处理起点。本规范没有规定XML
如何定位文件实体;与其他实体不同，文件实体没有名字，而且可以完全不带任何标识地
出现在处理器的输入流中。

5. 一致性(Conformance)
5.1 进行验证和不进行验证的处理器(Validating and Non-Validating Processors)
合乎规范的XML处理器可以分为两类：进行验证的和不进行验证的。

进行验证和不进行验证的处理器都必须报告在文件实体的内容中和任何其他它们读到的已
析实体中对规范性约束的违反。

进行验证的处理器必须报告违反DTD声明中所述约束的情况以及不满足本规范中给出的有
效性约束的情况。要完成这一点，进行验证的XML处理器必须读取和处理整个DTD和所有在
文件中引用的外部已析实体。

不进行验证的处理器只被要求检查文件实体和整个内部DTD子集的规范性。虽然它们不被
要求检查文件的有效性，但它们必须处理它们读取的所有内部DTD子集中的声明和所有参
数实体，直到遇到第一个对它们没有读取的参数实体的引用;也就是说，它们必须根据这
些声明中的信息规范化属性值，包含内部实体的置换文本，并提供缺省属性值。它们在遇
到第一个对它们没有读取的参数实体的引用后，不应处理其后的实体声明或属性表声明，
因为此实体中包含的声明可能覆盖前面的声明。

5.2 使用XML处理器
进行验证的处理器的行为是高度可预测的;它必须读取文件的所有部分，报告所有对规范
性和有效性的违反。对一个不进行验证的处理器的要求要低一点;它不需要读取文件实体
以外的任何文件部分。这对XML的处理器的用户而言可能会有两个重要的影响：

某些规范性错误，尤其是那些要求读取外部实体的，可能不会被不进行验证的处理器检测
到。例子有称为声明实体，已析实体和无递归的约束，以及"4.4 XML处理器对实体和引用
的处理"中描述为被禁止的一些情况。
取决于处理器是否读取参数和外部实体，从处理器传给应用的信息可能会有所不同。例如
，不进行验证的处理器可能不规范化属性值，不包含内部实体的置换文本，或不提供缺省
属性值，这些动作要求先读取外部或参数实体中的声明。
为了使不同XML处理器间的互操作有最大的可靠性，使用不进行验证的处理器的应用不应
依赖于不要求这些处理器具备的动作。那些要求使用如缺省值或在外部实体中声明内部实
体等功能的应用应该使用进行验证的XML处理器。

6. 记法(Notation)
本规范中XML的形式化文法用一种简单的扩展巴科斯范式(Extended Backus-Naur Form，
EBNF)给出。文法中的每一条规则定义了一个符号，形式如下：

symbol ::= expression

如果符号用正则表达式定义，则它以大写字母开头，否则以小写字母开头。字符串常量
(literal strings)用引号括起。

在规则右边的表达式中，以下表达式用于匹配一个或多个字符的字符串：

#xN
N是一个十六进制的整数，当ISO/IEC 10646中某个字符的规范(UCS-4)代码值作为无符号
二进制数与N相等时，此表达式匹配这个字符。#xN中的前导0没有意义，在相应的代码值
中的前导0的个数则由所用字符编码方案决定，对XML没有意义。
[a-zA-Z]， [#xN-#xN]

与其值在指定范围内的任何字符相匹配(含界，inclusive)。
[^a-z]， [^#xN-#xN]
与其值在指定范围之外的任何字符相匹配。
[^abc]， [^#xN#xN#xN]
与任何不在给定字符集内的字符相匹配。
"string"
与匹配双引号中所给字符串的常量字符串相匹配。
'string'
与匹配单引号中所给字符串的常量字符串相匹配。
这些符号可以按下列方式组合，以匹配更复杂的模式，其中A和B表示简单表达式：

(expression)
expression被当成一个单元，可以向本表描述的那样进行组合。
A?
与零个或一个A相匹配，即A可选。
A B
与A后跟B的模式相匹配。
A | B
与AB之一相匹配，但不同时匹配。
A - B
与任何匹配A但不匹配B的字符串相匹配。
A+
与一个或多个A相匹配。
A*
与零个或多个A相匹配。
其他在产生式中使用的记法有：

/* ... */
注释
[ wfc: ... ]
规范性约束;用名字标识一个对与某个产生式相关联的规范文件的约束。
[ vc: ... ]
有效性约束;用名字标识一个对与某个产生式相关联的有效文件的约束。

------------------------------------------------------------------------------
--

附录
A. 参考文献
A.1 正式的参考文献
IANA
(Internet Assigned Numbers Authority) Official Names for Character Sets， ed.
Keld Simonsen et al. See ftp://ftp.isi.
edu/in-notes/iana/assignments/character-sets.
IETF RFC 1766
IETF (Internet Engineering Task Force). RFC 1766: Tags for the
Identification of Languages， ed. H. Alvestrand. 1995.
ISO 639
(International Organization for Standardization). ISO 639:1988 (E). Code for
the representation of names of languages. [Geneva]: International Organization
for Standardization， 1988.
ISO 3166
(International Organization for Standardization). ISO 3166-1:1997 (E). Codes
for the representation of names of countries and their subdivisions -- Part 1:
Country codes [Geneva]: International Organization for Standardization，
1997.
ISO/IEC 10646
ISO (International Organization for Standardization). ISO/IEC 10646-1993 (E).
Information technology -- Universal Multiple-Octet Coded Character Set
(UCS) -- Part 1: Architecture and Basic Multilingual Plane. [Geneva]:
International Organization for Standardization， 1993 (plus amendments AM 1
through AM 7).
Unicode
The Unicode Consortium. The Unicode Standard， Version 2.0. Reading， Mass.:
Addison-Wesley Developers Press， 1996.
A.2 其他参考文献
Aho/Ullman
Aho， Alfred V., Ravi Sethi， and Jeffrey D. Ullman. Compilers: Principles,
Techniques, and Tools. Reading: Addison-Wesley, 1986, rpt. corr. 1988.
Berners-Lee et al.
Berners-Lee, T., R. Fielding, and L. Masinter. Uniform Resource Identifiers
(URI): Generic Syntax and Semantics. 1997. (Work in progress; see updates to
RFC1738.)
Br黦gemann-Klein
Br黦gemann-Klein, Anne. Regular Expressions into Finite Automata. Extended
abstract in I. Simon, Hrsg., LATIN 1992, S. 97-98. Springer-Verlag, Berlin
1992. Full Version in Theoretical Computer Science 120: 197-213, 1993.
Br黦gemann-Klein and Wood
Br黦gemann-Klein, Anne, and Derick Wood. Deterministic Regular Languages.
Universit鋞 Freiburg, Institut f黵 Informatik, Bericht 38, Oktober 1991.
Clark
James Clark. Comparison of SGML and XML. See http://www.w3.
org/TR/NOTE-sgml-xml-971215.
IETF RFC1738
IETF (Internet Engineering Task Force). RFC 1738: Uniform Resource Locators
(URL), ed. T. Berners-Lee, L. Masinter, M. McCahill. 1994.
IETF RFC1808
IETF (Internet Engineering Task Force). RFC 1808: Relative Uniform Resource
Locators, ed. R. Fielding. 1995.
IETF RFC2141
IETF (Internet Engineering Task Force). RFC 2141: URN Syntax, ed. R. Moats.
1997.
ISO 8879
ISO (International Organization for Standardization). ISO 8879:1986(E).
Information processing -- Text and Office Systems -- Standard Generalized
Markup Language (SGML). First edition -- 1986-10-15. [Geneva]: International
Organization for Standardization, 1986.
ISO/IEC 10744
ISO (International Organization for Standardization). ISO/IEC 10744-1992 (E).
Information technology -- Hypermedia/Time-based Structuring Language
(HyTime). [Geneva]: International Organization for Standardization, 1992.
Extended Facilities Annexe. [Geneva]: International Organization for
Standardization, 1996.
B. 字符的分类(Character Classes)
根据Unicode标准中定义的特征，字符被分为基字符(其中包括没有变音符的拉丁字母)，
表意字符和组合字符(其中包括大多数的变音符);这些类合起来组成了字母类。数字和扩
展符(extender)也各自被分成类。

字符
[84] Letter ::= BaseChar | Ideographic
[85] BaseChar ::= [#x0041-#x005A] | [#x0061-#x007A] | [#x00C0-#x00D6] |
[#x00D8-#x00F6] | [#x00F8-#x00FF] | [#x0100-#x0131] | [#x0134-#x013E] |
[#x0141-#x0148] | [#x014A-#x017E] | [#x0180-#x01C3] | [#x01CD-#x01F0] |
[#x01F4-#x01F5] | [#x01FA-#x0217] | [#x0250-#x02A8] | [#x02BB-#x02C1] | #x0386
| [#x0388-#x038A] | #x038C | [#x038E-#x03A1] | [#x03A3-#x03CE] |
[#x03D0-#x03D6] | #x03DA | #x03DC | #x03DE | #x03E0 | [#x03E2-#x03F3] |
[#x0401-#x040C] | [#x040E-#x044F] | [#x0451-#x045C] | [#x045E-#x0481] |
[#x0490-#x04C4] | [#x04C7-#x04C8] | [#x04CB-#x04CC] | [#x04D0-#x04EB] |
[#x04EE-#x04F5] | [#x04F8-#x04F9] | [#x0531-#x0556] | #x0559 | [#x0561-#x0586]
| [#x05D0-#x05EA] | [#x05F0-#x05F2] | [#x0621-#x063A] | [#x0641-#x064A] |
[#x0671-#x06B7] | [#x06BA-#x06BE] | [#x06C0-#x06CE] | [#x06D0-#x06D3] | #x06D5
| [#x06E5-#x06E6] | [#x0905-#x0939] | #x093D | [#x0958-#x0961] |
[#x0985-#x098C] | [#x098F-#x0990] | [#x0993-#x09A8] | [#x09AA-#x09B0] | #x09B2
| [#x09B6-#x09B9] | [#x09DC-#x09DD] | [#x09DF-#x09E1] | [#x09F0-#x09F1] |
[#x0A05-#x0A0A] | [#x0A0F-#x0A10] | [#x0A13-#x0A28] | [#x0A2A-#x0A30] |
[#x0A32-#x0A33] | [#x0A35-#x0A36] | [#x0A38-#x0A39] | [#x0A59-#x0A5C] | #x0A5E
| [#x0A72-#x0A74] | [#x0A85-#x0A8B] | #x0A8D | [#x0A8F-#x0A91] |
[#x0A93-#x0AA8] | [#x0AAA-#x0AB0] | [#x0AB2-#x0AB3] | [#x0AB5-#x0AB9] | #x0ABD
| #x0AE0 | [#x0B05-#x0B0C] | [#x0B0F-#x0B10] | [#x0B13-#x0B28] |
[#x0B2A-#x0B30] | [#x0B32-#x0B33] | [#x0B36-#x0B39] | #x0B3D | [#x0B5C-#x0B5D]
| [#x0B5F-#x0B61] | [#x0B85-#x0B8A] | [#x0B8E-#x0B90] | [#x0B92-#x0B95] |
[#x0B99-#x0B9A] | #x0B9C | [#x0B9E-#x0B9F] | [#x0BA3-#x0BA4] | [#x0BA8-#x0BAA]
| [#x0BAE-#x0BB5] | [#x0BB7-#x0BB9] | [#x0C05-#x0C0C] | [#x0C0E-#x0C10] |
[#x0C12-#x0C28] | [#x0C2A-#x0C33] | [#x0C35-#x0C39] | [#x0C60-#x0C61] |
[#x0C85-#x0C8C] | [#x0C8E-#x0C90] | [#x0C92-#x0CA8] | [#x0CAA-#x0CB3] |
[#x0CB5-#x0CB9] | #x0CDE | [#x0CE0-#x0CE1] | [#x0D05-#x0D0C] | [#x0D0E-#x0D10]
| [#x0D12-#x0D28] | [#x0D2A-#x0D39] | [#x0D60-#x0D61] | [#x0E01-#x0E2E] |
#x0E30 | [#x0E32-#x0E33] | [#x0E40-#x0E45] | [#x0E81-#x0E82] | #x0E84 |
[#x0E87-#x0E88] | #x0E8A | #x0E8D | [#x0E94-#x0E97] | [#x0E99-#x0E9F] |
[#x0EA1-#x0EA3] | #x0EA5 | #x0EA7 | [#x0EAA-#x0EAB] | [#x0EAD-#x0EAE] | #x0EB0
| [#x0EB2-#x0EB3] | #x0EBD | [#x0EC0-#x0EC4] | [#x0F40-#x0F47] |
[#x0F49-#x0F69] | [#x10A0-#x10C5] | [#x10D0-#x10F6] | #x1100 | [#x1102-#x1103]
| [#x1105-#x1107] | #x1109 | [#x110B-#x110C] | [#x110E-#x1112] | #x113C |
#x113E | #x1140 | #x114C | #x114E | #x1150 | [#x1154-#x1155] | #x1159 |
[#x115F-#x1161] | #x1163 | #x1165 | #x1167 | #x1169 | [#x116D-#x116E] |
[#x1172-#x1173] | #x1175 | #x119E | #x11A8 | #x11AB | [#x11AE-#x11AF] |
[#x11B7-#x11B8] | #x11BA | [#x11BC-#x11C2] | #x11EB | #x11F0 | #x11F9 |
[#x1E00-#x1E9B] | [#x1EA0-#x1EF9] | [#x1F00-#x1F15] | [#x1F18-#x1F1D] |
[#x1F20-#x1F45] | [#x1F48-#x1F4D] | [#x1F50-#x1F57] | #x1F59 | #x1F5B | #x1F5D
| [#x1F5F-#x1F7D] | [#x1F80-#x1FB4] | [#x1FB6-#x1FBC] | #x1FBE |
[#x1FC2-#x1FC4] | [#x1FC6-#x1FCC] | [#x1FD0-#x1FD3] | [#x1FD6-#x1FDB] |
[#x1FE0-#x1FEC] | [#x1FF2-#x1FF4] | [#x1FF6-#x1FFC] | #x2126 | [#x212A-#x212B]
| #x212E | [#x2180-#x2182] | [#x3041-#x3094] | [#x30A1-#x30FA] |
[#x3105-#x312C] | [#xAC00-#xD7A3]
[86] Ideographic ::= [#x4E00-#x9FA5] | #x3007 | [#x3021-#x3029]
[87] CombiningChar ::= [#x0300-#x0345] | [#x0360-#x0361] | [#x0483-#x0486] |
[#x0591-#x05A1] | [#x05A3-#x05B9] | [#x05BB-#x05BD] | #x05BF |
[#x05C1-#x05C2] | #x05C4 | [#x064B-#x0652] | #x0670 | [#x06D6-#x06DC] |
[#x06DD-#x06DF] | [#x06E0-#x06E4] | [#x06E7-#x06E8] | [#x06EA-#x06ED] |
[#x0901-#x0903] | #x093C | [#x093E-#x094C] | #x094D | [#x0951-#x0954] |
[#x0962-#x0963] | [#x0981-#x0983] | #x09BC | #x09BE | #x09BF | [#x09C0-#x09C4]
| [#x09C7-#x09C8] | [#x09CB-#x09CD] | #x09D7 | [#x09E2-#x09E3] | #x0A02 |
#x0A3C | #x0A3E | #x0A3F | [#x0A40-#x0A42] | [#x0A47-#x0A48] | [#x0A4B-#x0A4D]
| [#x0A70-#x0A71] | [#x0A81-#x0A83] | #x0ABC | [#x0ABE-#x0AC5] |
[#x0AC7-#x0AC9] | [#x0ACB-#x0ACD] | [#x0B01-#x0B03] | #x0B3C | [#x0B3E-#x0B43]
| [#x0B47-#x0B48] | [#x0B4B-#x0B4D] | [#x0B56-#x0B57] | [#x0B82-#x0B83] |
[#x0BBE-#x0BC2] | [#x0BC6-#x0BC8] | [#x0BCA-#x0BCD] | #x0BD7 | [#x0C01-#x0C03]
| [#x0C3E-#x0C44] | [#x0C46-#x0C48] | [#x0C4A-#x0C4D] | [#x0C55-#x0C56] |
[#x0C82-#x0C83] | [#x0CBE-#x0CC4] | [#x0CC6-#x0CC8] | [#x0CCA-#x0CCD] |
[#x0CD5-#x0CD6] | [#x0D02-#x0D03] | [#x0D3E-#x0D43] | [#x0D46-#x0D48] |
[#x0D4A-#x0D4D] | #x0D57 | #x0E31 | [#x0E34-#x0E3A] | [#x0E47-#x0E4E] | #x0EB1
| [#x0EB4-#x0EB9] | [#x0EBB-#x0EBC] | [#x0EC8-#x0ECD] | [#x0F18-#x0F19] |
#x0F35 | #x0F37 | #x0F39 | #x0F3E | #x0F3F | [#x0F71-#x0F84] | [#x0F86-#x0F8B]
| [#x0F90-#x0F95] | #x0F97 | [#x0F99-#x0FAD] | [#x0FB1-#x0FB7] | #x0FB9 |
[#x20D0-#x20DC] | #x20E1 | [#x302A-#x302F] | #x3099 | #x309A
[88] Digit ::= [#x0030-#x0039] | [#x0660-#x0669] | [#x06F0-#x06F9] |
[#x0966-#x096F] | [#x09E6-#x09EF] | [#x0A66-#x0A6F] | [#x0AE6-#x0AEF] |
[#x0B66-#x0B6F] | [#x0BE7-#x0BEF] | [#x0C66-#x0C6F] | [#x0CE6-#x0CEF] |
[#x0D66-#x0D6F] | [#x0E50-#x0E59] | [#x0ED0-#x0ED9] | [#x0F20-#x0F29]
[89] Extender ::= #x00B7 | #x02D0 | #x02D1 | #x0387 | #x0640 | #x0E46 |
#x0EC6 | #x3005 | [#x3031-#x3035] | [#x309D-#x309E] | [#x30FC-#x30FE]

在此定义的字符类可以从Unicode字符库中如下导出：

名字的起始字符必须属于Ll，Lu，Lo，Lt，Nl中的一类。
除了起始字符之外的命名字符必须属于Mc，Me，Mn，Lm或Nd中的一类。
兼容区(即代码大于#xF900，小于#xFFFE的字符)中的字符不允许在XML名字中出现。
不允许出现具有字集或兼容分解(即，库中第5区有"compatibility formatting tag"的字
符 -- "<"标志着5区的开始)的字符。
下列字符被当成名字起始字符，因为特性文件中将它们归于字母类： [#x02BB-#x02C1]，
#x0559，#x06E5，#x06E6。
不允许出现字符#x20DD-#x20E0(与Unicode的5.14节保持一致)。
字符#x00B7被分为扩展符，因为特性文件中对它是这么标识的。
字符#x0387被当成一个命名字符，因为#x00B7是它的等价规范形式。
字符':'和'_'可以作为名字起始字符。
字符'-'和'.'可以作为命名字符。
C. XML和SGML(非正式)
XML被设计为SGML的一个子集，表现在每一个有效的XML文件应该也是一个合乎规范的
SGML文件。对XML在SGML之外对文件所加的限制的详细讨论参见[Clark]。

D. 实体和字符引用的展开(非正式)
本附录中举例说明了在 "4.4 XML处理器对实体和引用的处理"一节中规定的实体和字符引
用的识别和展开的次序。

如果声明包含在DTD中

<!ENTITY example "<p>An ampersand (&#38;#38;) may be escaped
numerically (&#38;#38;#38;) or with a general entity
(&amp;amp;).</p>" >

那么XML处理器将在对实体声明进行语法分析时识别出字符引用，并在将下面的字符串存
为实体"example"的值前解析这些字符引用:

<p>An ampersand (&#38;) may be escaped
numerically (&#38;#38;) or with a general entity
(&amp;amp;).</p>

文件中对"&example;"的引用会导致对文本的重新分析，此时元素"p"的起始和结束标签被
识别，三个引用被识别和展开，其结果是一个包含下面内容(所有数据，无分隔符或标记
)"p"元素：

An ampersand (&) may be escaped
numerically (&#38;) or with a general entity
(&amp;).

一个更复杂的例子可以完整地说明这些规则和它们的作用。在下面的例子中，行号仅仅是
为了方便说明。

1 <?xml version='1.0'?>
2 <!DOCTYPE test [
3 <!ELEMENT test (#PCDATA) >
4 <!ENTITY % xx '&#37;zz;'>
5 <!ENTITY % zz '&#60;!ENTITY tricky "error-prone" >' >
6 %xx;
7 ]>
8 <test>This sample shows a &tricky; method.</test>

这个例子会导致下列动作：

在第4行，对字符37的引用会被立即展开，参数实体"xx"以值"%zz;"存于符号表中。因为
置换文本不被再次扫描，对参数实体"zz"的引用不会被识别。(而且如果它被识别的话则
是一个错误，因为"zz"还没有被声明。)
在第5行，字符引用"&#60;"被立即展开，而参数实体"zz"以置换文本"<!ENTITY tricky
"error-prone" >"被存储，此置换文本是一个规范的实体声明。
在第6行，对"xx"的引用被识别，"xx"的置换文本(即"%zz;")被分析。对"zz"的引用随后
被识别，它的置换文本("<!ENTITY tricky "error-prone" >")被分析。此时普通实体
"tricky"被声明，它的置换文本是"error-prone"。
在第8行，对普通实体"tricky"的引用被识别，并被展开，因此"test"元素的全部内容为
一个自说明的(也不合语法)字符串This sample shows a error-prone method.。
E. 确定型内容模型(非正式)
出于兼容性考虑，要求元素类型声明中的内容模型是确定型的。

SGML要求内容模型是确定型的(它称为"无歧义的"); 用SGML系统生成的XML处理器可能会
把非确定型内容模型标为错误。

例如，内容模型((b, c) | (b, d))是非确定型的，因为给定一个初始b，分析器没有在向
前看以知道b后是什么元素之前，无法知道匹配模型中的哪个b。在这种情况下，两个对b
的引用可以简化成单个的引用，使得模型成为(b,(c | d))。此时初始的b只和内容模型中
的一个名字明确匹配。分析器不需要向前看其后的内容。c或d都能被接受。

更形式化的说法：使用Aho，Sethi和Ullman所著[Aho/Ullman]3.9节中的标准算法3.5，可
以从内容模型构造出一个有限状态自动机。在很多这样的算法中，对应正则表达式中的每
一个位置(即正则表达式的语法树中的每个叶子节点)，都构造一个随集(follow set)；如
果任一位置的随集中不止一个后继位置被标为同一元素类型时，那么此内容模型出错，并
且可以被报为错误。

存在将许多但不是所有非确定型内容模型自动规约为等价的确定型模型的算法；参见Br黦
gemann-Klein 1991 [Br黦gemann-Klein].

F.

[
36m※ 修改:·sylvan 於 Apr 6 17:39:52 修改本文·[FROM: 166.111.163.236]
※ 修改:·sylvan 於 Apr 6 17:40:29 修改本文·[FROM: 166.111.163.236]
※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.163.236]
返回上一页 回到目录 回到页首 下一篇


[范文][XML]W3C建议XML 1.0中文版说明（一） (转载)

 发信人: DDG (导弹驱逐舰~雾的季节), 信区: XML
标 题: [范文][XML]W3C建议XML 1.0中文版说明（一） (转载)
发信站: BBS 水木清华站 (Thu Apr 6 13:28:56 2000)

【 以下文字转载自 New_board 讨论区 】
【 原文由 starw 所发表 】
可扩展标记语言(XML) 1.0
W3C建议 1998年2月10日

本版本:
http://www.w3.org/TR/1998/REC-xml-19980210
http://www.w3.org/TR/1998/REC-xml-19980210.xml
http://www.w3.org/TR/1998/REC-xml-19980210.html
http://www.w3.org/TR/1998/REC-xml-19980210.pdf
http://www.w3.org/TR/1998/REC-xml-19980210.ps

最新版本:
http://www.w3.org/TR/REC-xml

上一版本:
http://www.w3.org/TR/PR-xml-971208

编者:
Tim Bray (Textuality and Netscape) <tbray@textuality.com>
Jean Paoli (Microsoft) <jeanpa@microsoft.com>
C. M. Sperberg-McQueen (University of Illinois at Chicago) <cmsmcq@uic.e
du>

摘要

本文档完整地描述了可扩展标记语言(Extensible Markup Language，XML)，它是标
准通用标记语言(Standard Generic Markup Language，SGML)的一个子集。其目的
在于使得在Web上能以现有超文本标记语言(Hypertext Markup Language，HTML)的
使用方式提供，接收和处理通用的SGML成为可能。XML的设计既考虑了实现的方便性，
同时也顾及了与SGML和HTML的互操作性。

本文档的状态
本文档已由W3C组织成员和其他相关各方审阅，并已被组织理事批准为W3C建议。这
是一个稳定的文档，可以用作参考材料，也可以作为其他文档的正式参考文献。W3
C在建议制定过程中的作用是吸引对本规范的注意并促进它的广泛使用。这能增强W
eb的功能和互操作性。

本文档规定了一种用于World Wide Web的语法，此语法是通过取一个业已存在并已
广泛使用的文本处理国际标准(标准通用标记语言，经增补和更正的ISO 8879:1986
(E))的子集而创建的。它是W3C XML行动组(XML Activity)的工作成果，关于XML行
动组的详细信息可以在http://www.w3.org/XML找到。在http://www.w3.org/TR可以
找到现有W3C建议和其他技术文档的一个列表。

本规范中使用了[Berners-Lee等人]定义的一个术语URI，他们正在从事的的工作将
更新[IETF RFC1738]和[IETF RFC1808]。

本规范的已知错误列表可以在http://www.w3.org/XML/xml-19980210-errata找到。

请将本文档中的错误报告给xml-editor@w3.org。

可扩展标记语言(XML) 1.0
目录
1. 绪论
1.1 开发者和开发目标
1.2 术语
2. 文档
2.1 格式良好的XML文档
2.2 字符
2.3 通用句法成分
2.4 字符数据和标记
2.5 注释
2.6 处理指令
2.7 CDATA段
2.8 序言和文档类型声明
2.9 独立文档声明
2.10 空白域处理
2.11 行尾处理
2.12 语言标识
3. 逻辑结构
3.1 起始标记，结束标记和空元素标记
3.2 元素类型声明
3.2.1 元素内容
3.2.2 混合型内容
3.3 属性表声明
3.3.1 属性类型
3.3.2 属性缺省值
3.3.3 属性-值对的规范化
3.4 条件段
4. 物理结构
4.1 字符和实体引用
4.2 实体声明
4.2.1 内部实体
4.2.2 外部实体
4.3 已析实体
4.3.1 文本声明
4.3.2 格式良好的已析实体
4.3.3 实体中的字符编码
4.4 XML处理器对实体和引用的处理
4.4.1 不被识别
4.4.2 被包含
4.4.3 进行验证时被包含
4.4.4 被禁止
4.4.5 被包含在常量中
4.4.6 通知
4.4.7 不处理
4.4.8 作为PE被包含
4.5 内部实体置换文本的构建
4.6 预定义实体
4.7 符号声明
4.8 文档实体
5. 一致性
5.1 进行验证和不进行验证的处理器
5.2 使用XML处理器
6. 符号
附录
A. 参考文献
A.1 标准参考文献
A.2 其他参考文献
B. 字符的分类
C. XML和SGML(非标准)
D. 实体和字符引用的展开(非标准)
E. 确定型内容模型(非标准)
F. 字符编码的自动检测(非标准)
G. W3C XML工作组(非正式)

--
山居且喜远纷华，俯仰乾坤野性赊。
千载勋名身外影，百岁荣辱镜中花。

金樽潦倒秋将暮，蕙径萧瑟日且斜。
闻道五湖烟境好，何缘蓑笠钓汀沙。

※ 来源:·BBS 水木清华站 smth.org·[FROM: ftp.xjtu.edu.cn]


[范文][XML]W3C建议XML 1.0中文版说明（二） (转载)

 发信人: DDG (导弹驱逐舰~雾的季节), 信区: XML
标 题: [范文][XML]W3C建议XML 1.0中文版说明（二） (转载)
发信站: BBS 水木清华站 (Thu Apr 6 13:29:12 2000)

【 以下文字转载自 New_board 讨论区 】
【 原文由 starw 所发表 】
1. 绪论
可扩展标记语言，缩写为XML，描述了一类称为XML文档的数据对象，同时也部分地
描述了处理这些数据对象的计算机程序的行为。XML是SGML(标准通用标记语言[ISO
8879])针对应用的一个子集，或者说是SGML的一种受限形式。根据定义，XML文档
是合乎规范的SGML文档。

XML文档由称为实体的存储单元组成，实体包含解析数据或未解析数据。解析数据由
字符组成，其中一些字符组成字符数据，另一些字符组成标记。标记中包含了对文
档存储格式(storage layout)和逻辑结构的描述。XML提供了一种机制用于约束存储
格式和逻辑结构。

称为XML处理器的软件模块用于读取XML文档，存取其中的内容和结构。XML处理器被
设想为是为另一个称为应用的模块作处理。本规范从XML处理器应如何读取XML数据
以及应向应用提供哪些信息的这两个方面，描述了要求XML处理器作出的动作。

1.1 开发者和开发目标
XML由XML工作组(原先的SGML编辑审查委员会)开发，此工作组由World Wide Web C
onsortium(W3C)在1996年主持成立。工作组由Sun Microsystems的Jon Bosak负责，
同样由W3C组织的XML SIG(Special Interest Group)(原先的SGML工作组)积极参与
了XML工作组的工作。XML工作组的成员在附录中给出。工作组与W3C的联系人是Dan
Connolly。

XML的设计目标如下：

XML应该可以直接在因特网(Internet)中使用。
XML应该支持大量不同的应用。
XML应该与SGML兼容。
处理XML文档的程序应该容易编写。
XML中的可选项应尽可能少，理想状况下应为零。
XML文档应该清晰明了，可读性强。
XML应易于设计。
XML的设计应该正式而且简洁。
XML文档应易于创建。
XML标记的简洁性较为次要。

本规范与其他相关的标准一起(Unicode和ISO/IEC 10646定义了字符集，Internet
RFC1766定义了语言识别码，ISO 639定义了语言名称代码，ISO 3166定义了国家名
称代码)，提供了理解XML版本1.0和创建相应计算机处理程序所需的所有信息。

在完整保留所有文本和法律注意事项的前提下，本版本的XML规范可以自由分发。
1.2 术语
用于描述 XML 文档的术语在此规范的正文中定义。在这些定义中以及描述一个XML
处理器的动作时，使用了下表中的术语：

可以(may)
允许合乎规范的文档和XML处理器按所描述的方式工作，但不要求必须如此。

必须(must)
要求合乎规范的文档和XML处理器按所描述的方式工作; 否则出现错误。

错误(error)
对本规范中的规则的违反; 其结果不确定。合乎规范的软件可以检测和报告错误，
并可以从中恢复。

严重错误(fatal error)
合乎规范的XML处理器必须检测到，并向应用报告的一类错误。在遇到严重错误之后，
处理器可以继续处理数据以发现更多的错误并可以向应用报告这些错误。为了支持
错误的更正，处理器可以向应用提供文档中未经处理的数据(字符数据和标记的混合
体)。但是，一旦检测到一个严重错误，处理器必须停止正常的处理(也就是说，它
必须停止以正常的方式向应用提供与文档逻辑结构有关的数据和信息)。

由用户选择(at user option)
合乎规范的软件可以或者必须(取决于句子中的情态动词)按所描述的方式工作; 如
果它满足这个条件，它必须同时提供用户一种手段，使得用户能够启用和禁用所描
述的工作方式。

有效性约束(validity constraint)
适用于所有有效的XML文档的一种规则。违反有效性约束属于错误; 由用户选择，进
行验证的XML处理器必须报告这些错误。

格式约束(well-formedness constraint)
适用于所有有效的XML文档的一种规则。违反格式约束属于严重错误。

匹配(match)
(对于字符串和名字：)被比较的两个字符串或名字必须完全相同。在ISO/IEC 1064
6中有多种可能表示方式的字符(例如，既有预定义(precomposed)形式和基字符(ba
se)+变音符形式的字符)只在两个字符串中的表示方式相同时才匹配。由用户选择，
处理器可以将这些字符规范成某种规范形式。不进行字符的大小写转换。(对于句法
中的字符串和规则：)如果一个字符串属于一个句法产生式产生的语言，则它匹配这
个产生式。(对于内容和内容模型：)当一个元素符合"元素有效性"约束中的描述时，
它匹配其声明.

兼容性考虑(for compatibility)
仅用于保证与SGML兼容的XML特性。

互操作性考虑(for interoperability)
是一个不具约束性的建议，目的是增加XML文档能被在ISO 8879的WebSGML改编附件
之前已有的SGML处理器处理的可能性。

--
山居且喜远纷华，俯仰乾坤野性赊。
千载勋名身外影，百岁荣辱镜中花。

金樽潦倒秋将暮，蕙径萧瑟日且斜。
闻道五湖烟境好，何缘蓑笠钓汀沙。

※ 来源:·BBS 水木清华站 smth.org·[FROM: ftp.xjtu.edu.cn]


[范文][XML]W3C建议XML 1.0中文版说明（三） (转载)

 发信人: DDG (导弹驱逐舰~雾的季节), 信区: XML
标 题: [范文][XML]W3C建议XML 1.0中文版说明（三） (转载)
发信站: BBS 水木清华站 (Thu Apr 6 13:29:17 2000)

【 以下文字转载自 New_board 讨论区 】
【 原文由 starw 所发表 】
2. 文档
如果一个数据对象满足本规范中格式良好的要求时，它是一个XML文档。一个规范的
XML文档如果满足某些进一步的约束，它将更为有效。

每一个XML文档都有逻辑和物理结构。物理上而言，文档由称为实体的单元组成。一
个实体可以引用(refer)其他实体，将它们包含在文档中。文档开始于"根(root)"或
文档实体中。逻辑上而言，文档由声明、元素、注释、字符引用和处理指令组成，
所有这些都在文档中用显式标记指明。逻辑和物理结构必须如"4.3.2 格式良好的解
析实体"中所描述那样严格地嵌套。

2.1 格式良好的(Well-Formed)XML文档
一个文本对象如果满足以下条件，它将是一个格式良好的XML文档：

1.作为一个整体，它匹配文档(document)产生式。
2.它满足本规范中定义的所有格式约束。
3.此文档中直接或间接引用的每一个解析实体都是格式良好的。

文档
[1] document ::= prolog element Misc*

匹配document产生式意味着：

1.它包含一个或多个元素.
2.有且仅有一个称为根(root)或文档元素的元素，它不出现在其他任何元素的内容
(content)中。对于其他所有元素，如果起始标签在另一个元素的内容中，则其结束
标签也在同一元素的内容中。换一个更简单的说法，以起始标签和结束标签为界的
各个元素，必须严格地嵌套。

这样做的结果是，对于每一个非根的元素C，文档中另有一个元素P，C在P的内容中，
而不在其他任何被P所包含的元素的内容中。P被称为C的父元素(parent)，而C被称
为P的子元素(child)。

2.2 字符
一个解析实体包含文本(text)，文本是一个字符(character)序列，可以表示标记或
字符数据。一个字符是ISO/IEC 10646[ISO/IEC 10646]中定义的文本最小单元。合
法的字符包括制表符，回车，换行以及Unicode和ISO/IEC 10646中定义的合法的图
形字符。不提倡使用[Unicode]6.8节中定义的"兼容字符(compatibility characte
rs)"。

字符范围
[2] Char ::= #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x100
00-#x10FFFF]
/* 除了替代块(surrogate block)，FFFE和FFFF以外的任意Unicode字符。*
/

将字符代码编码成位模型的机制各个实体间可能会有所不同。所有的XML处理器必须
接受10646中的UTF-8和UTF-16编码；用于指出所用编码或指定使用其他编码的机制
在后
面的"4.3.3 实体中的字符编码"中讨论。

2.3 通用句法成分
本节中定义了一些在句法中广泛使用的符号。

S(空白域)包括一个或多个空格字符(#x20)，回车，换行或制表符。

空白
[3] S ::= (#x20 | #x9 | #xD | #xA)+

为方便起见，字符被分为字母，数字和其他字符三类。字母可以是字母表中的字母，
或是一个音节基字符(syllabic base character)后跟一个或多个组合字符，也可以
是一个表意字符。在"B. 字符的分类"中给出了每一类字符的特定定义。

名字(name)是以一个字母或某一标点符号开头的记号，后跟字母，数字，连字符，
下划线，冒号或句号，这些符号统称为命名字符(name character)。以"xml"或其他
任何以 (('X'|'x') ('M'|'m') ('L'|'l')) 的字符串开头的名字，被保留用于本规
范的此版本或后续版本的标准化。

注意：XML名字中的冒号被保留用于名域(name space)实验。它的含义有待于日后标
准化，那时那些将冒号用于实验目的的文档有可能需要更新。(不保证XML采用的任
何名字空间机制实际会采用冒号作为定界符。)实际上，这意味着除非用于名字空间
实验，XML文档编者不应该在XML名字中使用冒号，但XML处理器应该接受冒号作为一
个命名字符。

Nmtoken(名字记号，name token)是任何命名字符的混合体。

名字和记号
[4] NameChar ::= Letter | Digit | '.' | '-' | '_' | ':' | CombiningCha
r | Extender
[5] Name ::= (Letter | '_' | ':') (NameChar)*
[6] Names ::= Name (S Name)*
[7] Nmtoken ::= (NameChar)+
[8] Nmtokens ::= Nmtoken (S Nmtoken)*

字面数据是任何用引号括起的字符串，不包括用作定界符的引号。字面数据用于指
明内部实体的内容(EntityValue)，属性值(AttValue)，以及外部标识符(SystemLi
teral)。注意，对SystemLiteral的解析可以不扫描标记。

字面数据
[9] EntityValue ::= '"' ([^%&"] | PEReference | Reference)* '"'
         | "'" ([^%&'] | PEReference | Reference)* "'"
[10] AttValue ::= '"' ([^<&"] | Reference)* '"'
         | "'" ([^<&'] | Reference)* "'"
[11] SystemLiteral ::= ('"' [^"]* '"') | "'" [^']* "'")
[12] PubidLiteral ::= '"' PubidChar* '"' | "'" (PubidChar - "'")* "'"
[13] PubidChar ::= #x20 | #xD | #xA | [a-zA-Z0-9] | [-'()+,./:=?;!*#@$
_%]

2.4 字符数据和标记
文本由字符数据和标记混合构成。标记包括起始标记、结束标记、空元素标记、实
体引用、 字符引用、注释、CDATA段定界符、文档类型声明和处理指令。

其他所有非标记的文本组成文档的字符数据。

"and"号(&)和左尖括号(<)只有作为标记定界符，或在注释，处理指令，或CDATA段
中时才能以字面形式出现。它们在一个内部实体声明的字面实体数值中也是合法的，
参见"4.3.2 格式良好的解析实体"。如果在其他地方需要用到这两个字符，它们必
须用数值式字符引用来转义或分别用字符串"&amp;"和"&lt;"表示。右尖括号(>)可
以用"&gt;"表示，而当它在内容中的字符串"]]>"中出现，但此字符串不表示一个C
DATA段的结束时，出于兼容性考虑，必须用"&gt;"或一个字符引用转义得到。

在一个元素的内容中，字符数据可以是不包括任何标记的起始定界符的任意字符串。
在一个CDATA段中，字符数据可以是不包括CDATA段结束定界符"]]>"的任意字符串。

为了允许在属性值中包含单引号和双引号，省略符或称单引号(')可以被表示为"&a
pos;"，而双引号(")可以被表示为"&quot;"。

字符数据
[14] CharData ::= [^<&]* - ([^<&]* ']]>' [^<&]*)

2.5 注释
注释可以在其他标记之外的文档中的任何位置出现。另外，它们可以在文档类型声
明中语法允许的地方出现。它们不是文档字符数据的一部分，XML处理器可以，但不
必须，允许一个应用检索注释文本。出于兼容性考虑，字符串"--"(双连字符)不能
在注释中出现。

注释
[15] Comment ::= '<!--' ((Char - '-') | ('-' (Char - '-')))* '-->'

注释的一个例子：

<!-- declarations for <head> & <body> -->

2.6 处理指令
处理指令(PI)允许文档中包含由应用来处理的指令。

处理指令
[16] PI ::= '<?' PITarget (S (Char* - (Char* '?>' Char*)))? '?>'
[17] PITarget ::= Name - (('X' | 'x') ('M' | 'm') ('L' | 'l'))

PI不是文档字符数据的一部分，但必须传递给应用。PI以用于指示传递给哪个应用
的目标(PITarget)开头，目标名字"XML"，"xml"，等等，保留用于本规范的此版本
或后续版本的标准化。XML符号机制可以用于PI目标的形式化声明。

--
山居且喜远纷华，俯仰乾坤野性赊。
千载勋名身外影，百岁荣辱镜中花。

金樽潦倒秋将暮，蕙径萧瑟日且斜。
闻道五湖烟境好，何缘蓑笠钓汀沙。

※ 来源:·BBS 水木清华站 smth.org·[FROM: ftp.xjtu.edu.cn]


[范文][XML]W3C建议XML 1.0中文版说明（四） (转载)

 发信人: DDG (导弹驱逐舰~雾的季节), 信区: XML
标 题: [范文][XML]W3C建议XML 1.0中文版说明（四） (转载)
发信站: BBS 水木清华站 (Thu Apr 6 13:29:26 2000)

【 以下文字转载自 New_board 讨论区 】
【 原文由 starw 所发表 】
2.7 CDATA段
CDATA段可以出现在字符数据可以出现的任何地方，它们用于转义包含会被识别为标
记的字符串的文本块。CDATA段以字符串"<![CDATA["开始，以字符串"]]>"结束：

CDATA段
[18] CDSect ::= CDStart CData CDEnd
[19] CDStart ::= '<![CDATA['
[20] CData ::= (Char* - (Char* ']]>' Char*))
[21] CDEnd ::= ']]>'

在一个CDATA段内，只有CDEnd字符串被识别为标记，因此左尖括号和"&"可以以它们
的字面形式出现，不需要(也不能)被换码为"&lt;"和"&amp;"。CDATA段不能嵌套。

一个CDATA段的例子，其中"<greeting>"和"</greeting>"被识别为字符数据，而不
是标记：

<![CDATA[<greeting>Hello, world!</greeting>]]>

2.8 序言(prolog)和文档类型声明
XML文档可以，也应该以一个XML声明开始，其中指明了所用XML的版本。 例如，以
下是一个完整的XML文档，它是格式良好的，但不是有效的：

<?xml version="1.0"?>
<greeting>Hello, world!</greeting>

下面这个也同样：

<greeting>Hello, world!</greeting>

版本号"1.0"应该用于表明对与本规范的此版本相一致，如果使用了值"1.0"但又与
本规范的此版本不一致，那么这是文档的一个错误。XML工作组打算赋予本规范的后
续版本不同于"1.0"的数值，但这并不代表开发后续版本的承诺，也不代表如果有后
续版本，会使用任何特殊的命名方案的承诺。因为不排除有后续版本的可能性，提
供了本构造(construct)作为一旦需要时进行自动版本识别的手段。当处理器收到的
文档标有它们不支持的版本时，可以给出一个错误。

XML文档中标记的功能是描述文档的存储格式和逻辑结构，并将属性-值对和逻辑结
构关联起来。XML提供一种称为文档类型声明的机制，用于定义对逻辑结构的约束，
支持预定义存储单元的使用。如果一个XML文档有相应的文档类型声明并且它遵循其
中的约束，则称它是有效的(valid)。

文档类型声明必须位于文档第一个元素之前。

序言
[22] prolog ::= XMLDecl? Misc* (doctypedecl Misc*)?
[23] XMLDecl ::= '<?xml' VersionInfo EncodingDecl? SDDecl? S? '?>'
[24] VersionInfo ::= S 'version' Eq (' VersionNum ' | " VersionNum ")
[25] Eq ::= S? '=' S?
[26] VersionNum ::= ([a-zA-Z0-9_.:] | '-')+
[27] Misc ::= Comment | PI | S

XML文档类型声明包含或指向标记声明，标记声明提供某一类文档的语法。这种语法
被称为文档类型定义(document type difinition，DTD)。文档类型定义可以指向一
个外部子集(一种特殊类型的外部实体)，或者可以在一个内部子集中直接包含标记
声明，或者两者兼用。一个文档的文档类型定义由这两个子集合在一起组成。

标记声明可以是元素类型声明，属性表声明，实体声明，或是符号声明。这些声明
可以如下面规范性和有效性约束中所述，全部或部分地包含在参数实体中，完整的
信息参见"4. 物理结构"。

文档类型定义
[28] doctypedecl ::= '<!DOCTYPE' S Name (S ExternalID)? S? ('[' (marku
pdecl | PEReference | S)* ']' S?)? '>' [ VC: 根元素类型 ]
[29] markupdecl ::= elementdecl | AttlistDecl | EntityDecl | NotationD
ecl | PI | Comment [ VC: 严格的声明/PE嵌套 ] [ WFC: 内部子集中的PE ]

标记声明可以全部或部分地由参数实体的置换文本组成。本规范后面的各个非终结
符(elementdecl，AttlistDecl，等等)产生式描述的是在所有的参数实体被包含(i
nclude)之后的声明。

有效性约束: 根元素类型(Root Element Type)
文档类型声明中的Name必须匹配根元素的类型。

有效性约束: 严格的声明/PE嵌套
参数实体的置换文本必须用标记声明严格嵌套。即，如果一个标记声明(上面的mar
kupdecl)的第一个或最后一个字符被包含于一个参数实体引用的置换文本中，两者
必须都在此置换文本中。

格式约束: 内部子集中的PE
在内部DTD子集中，参数实体引用只能出现在标记声明出现的地方，而不能在标记声
明内部出现。(这个约束不适用于出现在外部参数实体内的引用，也不适用于外部子
集。)

同内部子集一样，外部子集和任何DTD中引用的外部参数实体，必须由一系列被非终
结符markupdecl所允许的完整的标记声明组成，其中可以夹杂空白字符或参数实体
引用。但是，外部子集和外部参数实体的部分内容可以通过使用条件段(condition
al section)被有条件地忽略，在内部子集中则不允许这么做。

外部子集
[30] extSubset ::= TextDecl? extSubsetDecl
[31] extSubsetDecl ::= ( markupdecl | conditionalSect | PEReference |
S )*

外部子集和外部参数实体与内部实体不同之处还在于：在外部子集和外部参数实体
内，参数实体引用不仅可以出现在标记声明间，还可以出现在标记声明内。

有文档类型声明的XML文档的例子：

<?xml version="1.0"?>
<!DOCTYPE greeting SYSTEM "hello.dtd">
<greeting>Hello, world!</greeting>

系统标识符"hello.dtd"给出了文档DTD的URI。

声明也可以如同下面这个例子一样直接(locally)给出：

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE greeting [
<!ELEMENT greeting (#PCDATA)>
]>
<greeting>Hello, world!</greeting>

如果同时使用外部和内部子集，内部子集被看成出现在外部子集之前，这意味着内
部子集中的实体和属性表声明的优先级要比在外部子集中的高。

2.9 独立文档声明
当文档从XML处理器递给应用时，标记声明可以影响它的内容，属性缺省值和实体声
明是其中的例子。可以作为XML声明成分的独立文档声明，指明了对于文档实体而言，
是否存在外部的声明。

独立文档声明
[32] SDDecl ::= S 'standalone' Eq (("'" ('yes' | 'no') "'") | ('"' ('y
es' | 'no') '"')) [ VC: 独立文档声明 ]

在一个独立文档声明中，值"yes"表示对于文档实体没有外部标记声明(不论是在DT
D外部子集中，还是在由内部实体引用的外部参数实体中)会影响从XML处理器传递给
应用的信息。值"no"表示有或可能有这样的外部标记声明。注意独立文档声明只是
表示外部声明的存在，如果文档中存在对外部实体的引用，而这些实体已在内部声
明时，不影响它的独立状态。

如果不存在外部标记声明，独立文档声明没有意义。如果存在外部标记声明，但没
有独立文档声明，就假定取值"no"。

某些网络传输应用也许需要独立的文档，任何满足standalone="no"的XML文档可以
通过一定的算法转换为独立文档。

有效性约束: 独立文档声明
独立文档声明必须取值为"no"，如果任何外部标记声明中包含：

n 有缺省值的属性声明，如果适用这些属性的元素出现在文档中而又没有给这些属
性赋值的话。
n (除了amp，lt，gt，apos，quot的)实体声明，而对这些实体的引用出现在文档中
的话。
n 需要规范化的属性声明，这些出现在文档中的属性的值会因规范化而改变。
n 具有元素内容的元素类型声明，如果在这些类型的任一实例中直接出现空白域的
话。

具有独立文档声明的XML声明的例子：

<?xml version="1.0" standalone='yes'?>

2.10 空白域处理
在编辑XML文档时，使用"空白域"(空格，制表符，空行，在本规范中用非终结符S表
示)来分开标记以获得更好的可读性是很方便的。通常在文档的交付版本中不想包含
这些空白域。另一方面，必须保留在交付版本中的有意义的空白域是很常见的，如
在诗歌和源码中的空白域。

XML处理器必须始终把不是标记的所有字符传递给应用。一个进行验证的XML处理器
必须同时通知应用这些字符中的那一些组成了出现在元素内容中的空白域。

可以在元素中附加一个名为xml:space的特殊属性，以通知应用应该保留此元素中的
空白域。在有效的文档中，此属性和其他属性一样，使用时必须声明。它必须被声
明为枚举类型，只有"default"和"preserve"两个可能的值。例如：

<!ATTLIST poem xml:space (default|preserve) 'preserve'>

"default"表示可以对此元素使用应用的缺省空白域处理模式，"preserve"表示应用
应该保留所有的空白域。这适用于其所处元素的内容中的所有元素，除非被另一个
xml:space属性的实例所覆盖。

任何文档的根元素被认为对应用的空白域处理方式不作要求，除非它给此属性赋了
值或将此属性声明为带缺省值。

2.11 行尾处理
为编辑的方便起见，存储XML已析实体的计算机文档经常用行来组织。通常这些行用
回车符(#xD)和换行符(#xA)的一些组合来分隔。

为了使应用的工作简单化，对于一个外部已析实体或内部已析实体的字面实体值中
包含的任何双字符序列"#xD#xA"或单独的#xD，XML处理器都应换成#xA传递给应用。
(这可以通过在进行解析前将所有行定界符规范成#xA而方便地实现。)

2.12 语言标识
在进行文档处理时，标识出其内容所使用的自然或形式化语言经常是很有用的。可
以在文档中插入一个名为xml:lang的特殊属性用于指出XML文档中任何元素的内容和
属性所使用的语言。在有效的文档中，此属性和其他属性一样，使用时必须声明。
此属性的值是[IETF RFC 1766]，"语言标识码"中定义的语言标识符：

语言标识
[33] LanguageID ::= Langcode ('-' Subcode)*
[34] Langcode ::= ISO639Code | IanaCode | UserCode
[35] ISO639Code ::= ([a-z] | [A-Z]) ([a-z] | [A-Z])
[36] IanaCode ::= ('i' | 'I') '-' ([a-z] | [A-Z])+
[37] UserCode ::= ('x' | 'X') '-' ([a-z] | [A-Z])+
[38] Subcode ::= ([a-z] | [A-Z])+

Langcode可以是下列值：

n [ISO 639]，"语言名称的表示码"中定义的双字母语言码。
n 在Internet Assigned Numbers Authority [IANA]注册的语言标识码，以前缀"i
-"(或"I-")开头。
n 用户指定或经各方同意的专用语言标识符，必须以前缀"x-"或"X-"开头，以保证
它们不会和以后经IANA标准化或在IANA注册的名字相冲突。

可以有任意多个子代码段（subcode），如果第一个子代码段存在，并且子代码由两
个字母组成，那么此子代码必须是[ISO 3166]，"国家名称表示码"中定义的国家代
码。如果第一个子代码多于两个字母，那么它必须是在IANA注册的语言代码所表示
的语言的子代码，除非它Langcode以前缀"x-"或"X-"开头。

习惯上用小写字母给出语言代码，用大写字母给出国家代码(如果有的话)。注意这
些值与XML文档中的其他名字不同，是大小写无关的。

举例如下：

<p xml:lang="en">The quick brown fox jumps over the lazy dog.</p>
<p xml:lang="en-GB">What colour is it?</p>
<p xml:lang="en-US">What color is it?</p>
<sp who="Faust" desc='leise' xml:lang="de">
<l>Habe nun, ach! Philosophie,</l>
<l>Juristerei, und Medizin</l>
<l>und leider auch Theologie</l>
<l>durchaus studiert mit hei遝m Bem黨'n.</l>
</sp>

xml:lang所表示的语言选择适用于它所处元素的所有属性和内容，除非被此内容中
的元素内的另一个xml:lang的实例所覆盖。

xml:lang的一个简单声明可以采用如下形式：

xml:lang NMTOKEN #IMPLIED

但是如果合适的话，也可以给出特定的缺省值。在一本供英国学生使用的法文诗歌
集中，评注和注解使用英语，xml:lang属性可以这样声明：

<!ATTLIST poem xml:lang NMTOKEN 'fr'>
<!ATTLIST gloss xml:lang NMTOKEN 'en'>
<!ATTLIST note xml:lang NMTOKEN 'en'>

--
山居且喜远纷华，俯仰乾坤野性赊。
千载勋名身外影，百岁荣辱镜中花。

金樽潦倒秋将暮，蕙径萧瑟日且斜。
闻道五湖烟境好，何缘蓑笠钓汀沙。

※ 来源:·BBS 水木清华站 smth.org·[FROM: ftp.xjtu.edu.cn]


[范文][XML]W3C建议XML 1.0中文版说明（五） (转载)

 发信人: DDG (导弹驱逐舰~雾的季节), 信区: XML
标 题: [范文][XML]W3C建议XML 1.0中文版说明（五） (转载)
发信站: BBS 水木清华站 (Thu Apr 6 13:29:31 2000)

【 以下文字转载自 New_board 讨论区 】
【 原文由 starw 所发表 】
3. 逻辑结构
每个XML文档包含一个或多个元素，它们的边界用起始标记和结束标记定界，或者，
对于空元素，用一个空元素标记分隔。每一个元素有一个用名字标识的类型，有时
称之为它的"通用标识符(generic identifier)"(GI)，同时它可以有一个属性说明
(attribute specification)集。每个属性说明有一个名字和一个值。

元素
[39] element ::= EmptyElemTag | STag content ETag
[ WFC: 元素类型匹配 ] [ VC: 元素有效 ]

除了那些开头匹配(('X'|'x')('M'|'m')('L'|'l'))的名字保留用于本规范的此版本
和后继版本的标准化外，本规范不对元素类型和属性的语义，用法和名字(语法之外)
作出限制。

格式约束: 元素类型匹配
元素结束标记中的Name必须和起始标记中的元素类型相匹配。

有效性约束: 元素有效
如果有一个与elementdecl相匹配的声明的Name与元素类型相匹配，且下述之一成立
时，称此元素是有效的：

1． 此声明与EMPTY相匹配，同时此元素没有内容。
2．此声明与children相匹配，同时子元素的序列属于内容模型中的正则表达式所产
生的语言，在每对子元素间允许有空白域(匹配非终结符S的字符)。
3．此声明与Mixed相匹配，同时内容由其类型匹配内容模型中的名字的字符数据和
子元素组成。
4．此声明与ANY相匹配，同时每个子元素的类型均已声明。
3.1 起始标记，结束标记和空元素标记
每一个非空XML元素以一个起始标记作为开始的标记。

起始标记
[40] STag ::= '<' Name (S Attribute)* S? '>' [ WFC: 唯一的属性说明 ]
[41] Attribute ::= Name Eq AttValue [ VC: 属性值类型 ]
            [ WFC: 无外部实体引用 ]
            [ WFC: 在属性值中没有< ]

起始标记和结束标记中的Name给出了元素的类型。Name-AttValue对被统称为元素的
属性说明，其中每一对中的Name被称为属性名，AttValue的内容(在定界符'或"间的
文本)被称为属性值。

格式约束: 唯一的属性说明
一个属性名只能在同一个起始标记或空元素标记中出现一次。

有效性约束: 属性值类型
属性必须被声明，其值必须是所声明的类型。(属性类型参见"3.3 属性表声明"。)

格式约束: 无外部实体引用
属性值不能包含对外部实体直接或间接的实体引用。

格式约束: 在属性值中没有<
在一个属性值中直接或间接引用的实体的置换文本(除了"&lt;")不能包含<。

起始标记的一个例子：

<termdef id="dt-dog" term="dog">

由一个起始标记开始的每一个元素必须用一个结束标记标记其结束，结束标记中的
名字必须与起始标记中给出的元素类型相同：

结束标记
[42] ETag ::= '</' Name S? '>'

结束标记的一个例子：

</termdef>

在起始标记和结束标记中的文本被称为元素的内容：

元素的内容
[43] content ::= (element | CharData | Reference | CDSect | PI | Comme
nt)*

如果一个元素为空，它必须表示为一个起始标记紧跟一个结束标记或空元素标记。
一个空元素标记采用一种特殊的形式：

空元素标记
[44] EmptyElemTag ::= '<' Name (S Attribute)* S? '/>' [ WFC: 唯一的属
性说明 ]

不论元素是否用关键字EMPTY声明，空元素标记都可以用于任何没有内容的元素。出
于互操作性考虑，空元素必须用于，且只能用于声明为EMPTY的元素。

空元素的例子：

<IMG align="left"
src="http://www.w3.org/Icons/WWW/w3c_home" />
<br></br>
<br/>

3.2 元素类型声明
出于验证的目的，可以用元素类型和属性表声明限制XML文档中元素的结构。元素类
型声明限制了元素的内容。

元素类型声明通常限制了子元素的类型。由用户选择，当声明提到的元素类型没有
相应的声明时，XML处理器可以给出警告，但这不是一个错误。

元素类型声明形式如下：

元素类型声明
[45] elementdecl ::= '<!ELEMENT' S Name S contentspec S? '>' [ VC: 唯
一的元素类型声明 ]
[46] contentspec ::= 'EMPTY' | 'ANY' | Mixed | children

其中Name给出了所声明的元素类型。

有效性约束: 唯一的元素类型声明
元素类型只能声明一次。

元素类型声明的例子：

<!ELEMENT br EMPTY>
<!ELEMENT p (#PCDATA|emph)* >
<!ELEMENT %name.para; %content.para; >
<!ELEMENT container ANY>

3.2.1 元素内容
当某一类型的元素只能包含用可选空白域(匹配非终结符S)分隔的子元素(无字符数
据)时，此元素类型具有元素内容。在这种情况下，有内容模型作为类型限制之一，
内容模型是决定子元素类型和子元素出现顺序的一种简单语法。此语法用内容粒子
(cp)构建，内容粒子由名字，内容粒子的选择表(choice list)或内容粒子的序列表
(sequence list)组成：

元素内容的模型
[47] children ::= (choice | seq) ('?' | '*' | '+')?
[48] cp ::= (Name | choice | seq) ('?' | '*' | '+')?
[49] choice ::= '(' S? cp ( S? '|' S? cp )* S? ')' [ VC: 严格的组/PE嵌
套 ]
[50] seq ::= '(' S? cp ( S? ',' S? cp )* S? ')' [ VC: 严格的组/PE嵌套
]

其中每一个Name是可以作为子元素的元素的类型。选择表中出现的任意内容粒子在
元素内容中允许出现的位置对应于选择表在语法中的位置。序列表中出现的所有内
容粒子必须以相同的顺序出现在元素内容中。在名字或表之后的可选字符(optiona
l character)决定了表中元素或内容粒子可以出现一次或多次(+)，还是零次或多次
(*)，或是零次或一次(?)。没有这样一个操作符意味着元素或内容粒子必须恰好出
现一次。这种句法和意义和本规范中的产生式中所使用的相同。

当且仅当一个元素的内容可以通过满足内容模型中的选择，序列和重复操作符得到，
并且内容中的每一个元素与内容模型中的一种元素类型相匹配时，称此元素的内容
与一个内容模型相匹配。出于兼容性考虑， 如果文档的某个元素可以和内容模型中
的一种元素类型多次匹配，这是一个错误。 更详细的信息参见"E. 确定型内容模型
".

有效性约束: 严格的组/PE嵌套
参数实体的置换文本用括号括起的组严格嵌套。即，如果choice，seq或Mixed成分
的开始或结束括号出现在某个参数实体的置换文本中，两者必须同在此置换文本中。
出于互操作性考虑，如果一个参数实体引用出现在choice，seq或Mixed成分中时，
它的置换文本不应为空，同时其置换文本的第一个和最后一个非空字符不应为一个
连接符(|或,)。

元素内容模型的例子：

<!ELEMENT spec (front, body, back?)>
<!ELEMENT div1 (head, (p | list | note)*, div2*)>
<!ELEMENT dictionary-body (%div.mix; | %dict.mix;)*>
3.2.2 混合型内容(Mixed Content)
当某元素类型可以包含字符数据，其间可以随意穿插子元素时，称此元素类型具有
混合型内容。在这种情况下，对子元素的类型可能有所限制，但对它们的次序和出
现次数没有限制：

混合型内容声明
[51] Mixed ::= '(' S? '#PCDATA' (S? '|' S? Name)* S? ')*' | '(' S? '#
PCDATA' S? ')'
[ VC: 严格的组/PE嵌套 ] [ VC: 无重复类型 ]

其中Name给出了子元素的元素类型。

有效性约束: 无重复类型
同一名字在单个混合型内容声明中只能出现一次。

混合内容声明的例子：

<!ELEMENT p (#PCDATA|a|ul|b|i|em)*>
<!ELEMENT p (#PCDATA | %font; | %phrase; | %special; | %form;)* >
<!ELEMENT b (#PCDATA)>

--
山居且喜远纷华，俯仰乾坤野性赊。
千载勋名身外影，百岁荣辱镜中花。

金樽潦倒秋将暮，蕙径萧瑟日且斜。
闻道五湖烟境好，何缘蓑笠钓汀沙。

※ 来源:·BBS 水木清华站 smth.org·[FROM: ftp.xjtu.edu.cn]


[范文][XML]W3C建议XML 1.0中文版说明（六） (转载)

 发信人: DDG (导弹驱逐舰~雾的季节), 信区: XML
标 题: [范文][XML]W3C建议XML 1.0中文版说明（六） (转载)
发信站: BBS 水木清华站 (Thu Apr 6 13:29:36 2000)

【 以下文字转载自 New_board 讨论区 】
【 原文由 starw 所发表 】
3.3 属性表声明
属性用于联系名字-值对和元素。属性说明只能在起始标记和空元素标记中出现; 因
此，用于识别它们的产生式可参看"3.1 起始标记，结束标记和空元素标记"中。属
性表声明可以用于：

n 定义与一给定元素类型有关的属性集。
n 确定这些属性的类型限制。
n 提供属性的缺省值。

属性表声明详细说明了与给定元素类型相关联的每一个属性的名字，数据类型和缺
省值(如果有的话)：

属性表声明
[52] AttlistDecl ::= '<!ATTLIST' S Name AttDef* S? '>'
[53] AttDef ::= S Name S AttType S DefaultDecl

AttlistDecl规则中Name是元素的类型。由用户选择，当元素类型中的属性没有被声
明时，XML处理器可以给出一个警告，但这不是一个错误。AttDef规则中的Name是属
性的名字。

当与某个给定元素类型相关的AttlistDecl超过一个时，这些声明中的内容被合并在
一起。当给定元素类型的某个属性的定义超过一个时，绑定第一个定义，其余定义
被忽略。出于互操作性考虑，DTD的作者可以选择一个给定的元素类型至多有一个属
性表声明，一个给定的属性名至多有一个属性定义，以及每个属性表声明至少有一
个属性定义。出于互操作性考虑，当一个给定元素有超过一个的属性表声明或一个
给定属性有超过一个的属性定义时，由用户选择，XML处理器可以给出警告，但这不
是一个错误。
3.3.1 属性类型
XML属性有三种类型：字符串类型，一组记号化类型和枚举类型。字符串类型可以以
任意字面字符串为值; 各个记号化类型有不同的词法和语义约束，如下：

属性类型
[54] AttType ::= StringType | TokenizedType | EnumeratedType
[55] StringType ::= 'CDATA'
[56] TokenizedType ::= 'ID' [ VC: ID ] [ VC: 每种元素类型一个ID ] [VC:
ID属性的缺省值 ]
         | 'IDREF' [ VC: IDREF ]
         | 'IDREFS' [ VC: IDREF ]
         | 'ENTITY' [ VC: 实体名 ]
         | 'ENTITIES' [ VC: 实体名 ]
         | 'NMTOKEN' [ VC: 名字记号 ]
         | 'NMTOKENS' [ VC: 名字记号 ]

有效性约束: ID
ID类型的值必须匹配Name产生式。作为此类型值的名字只能在XML文档中出现一次;
即，ID类型的值必须能唯一标识元素。

有效性约束: 每种属性类型一个ID
每种属性类型只能有一个ID属性。

有效性约束: ID属性的缺省值
ID属性必须有一个声明为#IMPLIED或#REQUIRED的缺省值。

有效性约束: IDREF
IDREF类型的值必须匹配Name产生式，IDREFS类型的值必须匹配Names产生式；每一
个Name必须匹配XML文档中某些元素ID属性的值；也就是说，IDREF类型的值必须匹
配某些ID属性的值。

有效性约束: 实体名
ENTITY类型的值必须匹配Name产生式，ENTITIES类型的值必须匹配Names产生式；每
一个Name必须匹配DTD中声明的未析实体的名字。

有效性约束: 名字记号
NMTOKEN类型的值必须匹配Nmtoken产生式;NMTOKENS类型的值必须匹配Nmtokens产生
式。

枚举类型的属性可以在声明中提供的取值表中取值。有两种枚举类型：

枚举属性类型
[57] EnumeratedType ::= NotationType | Enumeration
[58] NotationType ::= 'NOTATION' S '(' S? Name (S? '|' S? Name)* S? ')'

[ VC: 符号属性 ]
[59] Enumeration ::= '(' S? Nmtoken (S? '|' S? Nmtoken)* S? ')' [ VC:
枚举 ]

一个NOTATION类型的属性标识了一种用于解释与此属性相关的元素的符号，此符号
用相关系统或公共标识符在DTD中声明。

有效性约束: 符号属性
此类型的值必须与声明中所包含的符号名之一相匹配;声明中的所有符号名都必须声
明。

有效性约束: 枚举
此类型的值必须与声明中所包含的Nmtoken记号之一相匹配。

出于互操作性考虑，同一Nmtoken只能在单个元素类型的枚举属性类型中出现一次。

3.3.2 属性缺省值
属性声明提供的信息指明了某属性是否必须出现，同时指明了在被声明的属性不是
必须出现而文档中没有出现此属性的情况下，XML处理器应如何处理。

属性缺省值
[59] DefaultDecl ::= '#REQUIRED' | #IMPLIED' | (('#FIXED' S)? AttValue)

[ VC: 必须的属性 ] [ VC: 合法的属性缺省值 ]
   [ WFC: 在属性值中无< ] [ VC: 固定的属性缺省值 ]

在一个属性声明中，#REQUIRED表示必须总是提供此属性，#IMPLIED表示不提供缺省
值。如果声明既不是#REQUIRED，也不是#IMPLIED，那么AttValue值包含了所声明的
缺省值;关键字#FIXED规定此属性必须总是有缺省值。如果声明了一个缺省值，当X
ML处理器遇到一个被省略的属性时，它将当成此属性以缺省值出现

有效性约束: 必须的属性
如果缺省值声明是关键字#REQUIRED，那么在所有此类型元素的属性表声明中必须有
此属性。

有效性约束: 合法的属性缺省值
被声明的属性缺省值必须满足被声明的属性类型的词法约束。

有效性约束: 固定的属性缺省值
如果某属性的缺省值用关键字#FIXED声明，此属性的所有实例必须匹配该缺省值。

属性表声明的例子：

<!ATTLIST termdef
id ID #REQUIRED
name CDATA #IMPLIED>
<!ATTLIST list
type (bullets|ordered|glossary) "ordered">
<!ATTLIST form
method CDATA #FIXED "POST">

3.3.3 属性-值对的规范化(Attribute-Value Normalization)
在将属性的值传给应用或检验有效性之前，XML处理器必须将其规范化：

n 对字符引用的处理是将被引用的字符附加在属性值之后
n 对实体引用的处理是递归地处理实体的置换文本
n 对空白字符(#x20，#xD，#xA，#x9)的处理是将#x20附加在规范化的值之后，例外
是对作为外部已析实体或内部已析实体字面实体值一部分的"#xD#xA"序列只附加一
个#x20。
n 对于其他字符的处理是将它们附加与规范化的值之后

如果被声明的值不是CDATA，那么XML处理器必须继续处理规范化后的值，去掉其前
导和尾随空格(#x20)字符，并将空格(#x20)字符序列替换成单个空格(#x20)字符。

不进行验证的语法分析器应该将所有尚未读到声明部分的属性当成被声明为CDATA。

3.4 条件段(Conditional Sections)
条件段是文档类型声明外部子集的一部分，取决于相应的关键字，它们或被包含在
DTD逻辑结构之内，或被排除在DTD逻辑结构之外。

条件段
[61] conditionalSect ::= includeSect | ignoreSect
[62] includeSect ::= '<![' S? 'INCLUDE' S? '[' extSubsetDecl ']]>'
[63] ignoreSect ::= '<![' S? 'IGNORE' S? '[' ignoreSectContents* ']]>'

[64] ignoreSectContents ::= Ignore ('<![' ignoreSectContents ']]>' Ign
ore)*
[65] Ignore ::= Char* - (Char* ('<![' | ']]>') Char*)

同内部或外部DTD子集一样，条件段可以包含一个或多个完整的声明，注释，处理指
令，或嵌套的条件段，其间可以夹杂空白域。

如果条件段的关键字是INCLUDE，那么条件段的内容是DTD的一部分，如果条件段的
关键字是IGNORE，那么条件段的内容逻辑上不是DTD的一部分。注意对于可靠的解析
过程，即使被忽略的条件段的内容也必须被读取以检测嵌套的条件段，保证最外层
(被忽略)的条件段的结尾被恰当地检测到。如果一个关键字为INCLUDE的条件段出现
在更大的关键字为IGNORE的条件段中，内外两个条件段都被忽略。

如果条件段的关键字是一个参数实体引用，处理器在决定是否包含或忽略此条件段
前，必须先将该参数实体置换成其内容。

一个例子：

<!ENTITY % draft 'INCLUDE' >
<!ENTITY % final 'IGNORE' >

<![%draft;[
<!ELEMENT book (comments*, title, body, supplements?)>
]]>
<![%final;[
<!ELEMENT book (title, body, supplements?)>
]]>

--
山居且喜远纷华，俯仰乾坤野性赊。
千载勋名身外影，百岁荣辱镜中花。

金樽潦倒秋将暮，蕙径萧瑟日且斜。
闻道五湖烟境好，何缘蓑笠钓汀沙。

※ 来源:·BBS 水木清华站 smth.org·[FROM: ftp.xjtu.edu.cn]


[范文][XML]W3C建议XML 1.0中文版说明（七） (转载)

 发信人: DDG (导弹驱逐舰~雾的季节), 信区: XML
标 题: [范文][XML]W3C建议XML 1.0中文版说明（七） (转载)
发信站: BBS 水木清华站 (Thu Apr 6 13:29:42 2000)

【 以下文字转载自 New_board 讨论区 】
【 原文由 starw 所发表 】
4. 物理结构
一个XML文档可能包含一个或多个存储单元。它们被称为实体(entity);它们都具有
内容并且都用名字(name)进行标识(除了下面要提到的文档实体，和外部DTD子集之
外)。每一个XML文档有一个称为文档实体的实体，它作为XML处理器处理的起点并可
能包含了整个文档。

实体可以是已析的或未析的。已析实体(parsed entity)的内容被称为它的置换文本;
此文本被看成是文档整体的一部分。

未析实体(unparsed entity)是一种资源，其内容可以是也可以不是文本，并且如果
是文本的话，可以不是XML。每一个未析实体有一个相关联的用名字标识的符号。除
了要求XML处理器能向应用提供实体和符号的标识符之外，XML对未析实体的内容不
作任何限制。

已析实体以实体引用的方式使用名字来调用;未析实体用ENTITY或ENTITIES属性中给
出的名字调用。

通用实体(general entity)是那些在文档内容中使用的实体。在本规范中，在不致
引起混淆的情况下,普通实体有时用未修饰的术语entity来表示。参数实体是用于D
TD内的已析实体。这两类实体用不同形式的引用，在不同的上下文中识别。另外，
它们使用不同的名域;具有相同名字的参数实体和通用实体是两个截然不同的两个实
体。

4.1 字符和实体引用(Character and Entity References)
一个字符引用引用ISO/IEC 10646字符集中的一个特定字符。例如一个不能用输入设
备直接输入的字符。

字符引用
[66] CharRef ::= '&#' [0-9]+ ';'
         | '&#x' [0-9a-fA-F]+ ';' [ WFC: 合法字符 ]

格式约束: 合法字符
用字符引用引用的字符必须匹配Char产生式。

如果字符引用以"&#x"开头的数字和字母(直到终结)提供了某字符在ISO/IEC 10646
中代码的一个十六进制表示。如果它仅以"&#"开头的数字(直到终结)提供了某字符
的代码的十进值表示。

实体引用(entity reference)引用一个命名实体的内容。对已析普通实体的引用使
用"and"号(&)和分号(;)作为定界符。参数实体引用则使用百分号(%)和分号(;)作为
定界符。

实体引用
[67] Reference ::= EntityRef | CharRef
[68] EntityRef ::= '&' Name ';' [ WFC: 声明实体 ]
            [ VC: 声明实体 ]
            [ WFC: 已析实体 ]
            [ WFC: 无递归 ]
[69] PEReference ::= '%' Name ';' [ VC: 声明实体 ]
            [ WFC: 无递归 ]
            [ WFC: 在DTD内 ]

格式约束: 声明实体
在一个没有任何DTD的文档，或一个只有不包含参数实体引用的内部DTD子集的文档，
或一个"standalone='yes'"的文档内，在实体引用中给出的Name必须与实体声明中
所给出的相匹配，但格式良好的文档不需要声明以下的这些实体：amp，lt，gt，a
pos和quot。参数实体的声明必须先于任何对它的引用。类似地，通用实体的声明必
须先于任何在属性表声明中的缺省值中出现的对它的引用。注意对于在外部子集或
外部参数实体中声明的实体，不进行验证的处理器不必要读取和处理它们的声明;对
这些文档，仅当standalone='yes'时，实体必须被声明的规则才是一个格式约束。

有效性约束: 声明实体
在一个有外部子集或外部参数实体且"standalone='no'"的实体中，实体引用中给出
的Name必须与实体声明中所给出的相匹配。出于互操作性考虑，有效的文档应该以
"4.6 预定义实体"中的简化形式声明实体amp，lt，gt，apos和quot。参数实体的声
明必须先于任何对它的引用。类似地，通用实体的声明必须先于任何在属性表声明
中的缺省值中出现的对它的引用。

格式约束: 已析实体
实体引用不能包含一个未析实体的名字。未析实体只能在声明为ENTITY或ENTITIES
的属性值中引用。

格式约束: 无递归
已析实体不能直接或间接地包含对自身的递归引用。

格式约束: 在DTD内
参数实体引用只能在DTD中出现。

字符引用和实体引用的例子：

Type <key>less-than</key> (&#x3C;) to save options.
This document was prepared on &docdate; and
is classified &security-level;.

参数实体引用的例子：

<!-- declare the parameter entity "ISOLat2"... -->
<!ENTITY % ISOLat2 SYSTEM "http://www.xml.com/iso/isolat2-xml.entities"
>
<!-- ... now reference it. -->
%ISOLat2;

4.2 实体声明(Entity Declaration)
实体以如下方式声明：

实体声明
[70] EntityDecl ::= GEDecl | PEDecl
[71] GEDecl ::= '<!ENTITY' S Name S EntityDef S? '>'
[72] PEDecl ::= '<!ENTITY' S '%' S Name S PEDef S? '>'
[73] EntityDef ::= EntityValue | (ExternalID NDataDecl?)
[74] PEDef ::= EntityValue | ExternalID

实体引用中的Name标识了该实体;对于未析实体，ENTITY或ENTITIES属性的值标识了
该实体。如果同一实体被声明了不止一次，绑定第一个声明。由用户选择，如果实
体被多次声明，XML处理器可以给出警告。

4.2.1 内部实体(Internal Entities)
如果实体定义是一个EntityValue，被定义的实体被称为内部实体。内部实体没有单
独的物理存储对象，实体的内容在声明中给出。注意字面实体值中一些实体和字符
引用的处理可能要求产生正确的置换文本：参见"4.5 内部置换文本的构造"。

内部实体是已析实体。

内部实体声明的例子：

<!ENTITY Pub-Status "This is a pre-release of the
specification.">

4.2.2 外部实体(External Entities)
如果实体不是内部的，那么它是一个外部实体，声明如下：

外部实体声明
[75] ExternalID ::= 'SYSTEM' S SystemLiteral
         | 'PUBLIC' S PubidLiteral S SystemLiteral
[76] NDataDecl ::= S 'NDATA' S Name [ VC: 声明符号 ]

如果有NDataDecl，那么这是一个通用未析实体;否则它是一个已析实体。

有效性约束: 声明符号
Name必须与符号的名字相匹配。

SystemLiteral被称为该实体的系统标识符。这是一个URI，可以用于查找此实体。
注意井号(#)和URI中常用的片断标识符形式上而言不是URI的一部分；如果一个片断
标识符作为系统标识符的部分给出，XML处理器可以给出一个错误。除非在本规范范
围之外另外给出(如，一个特殊DTD定义的专用XML元素类型，或一个特殊应用规范中
定义的处理指令)，相对URI指相对于实体声明所在资源的位置。因此，一个URI可能
是相对于文档实体，或相对于包含外部DTD子集的实体，或相对于其他一些外部参数
实体。

XML处理器处理URI中的非ASCII字符时，将UTF-8中的字符用一个或多个字节表示，
然后将这些字符用URI转义机制转义(即，将每个字节转换成%HH，其中HH是字节值的
十六进制符号)。

除了系统标识符之外，外部标识符还可以包含公共标识符。试图查找实体内容的XM
L处理器可以用公共标识符试着产生一个可选URI。如果处理器无法做到这一点，它
必须使用系统常量中定义的URI。在试着匹配之前，公共标识符中所有空白字符串必
须被规范为单个空格字符(#x20)，同时必须去掉前导和尾随空白。

外部实体声明的例子：

<!ENTITY open-hatch
SYSTEM "">http://www.textuality.com/boilerplate/OpenHatch.xml">
<!ENTITY open-hatch
PUBLIC "-//Textuality//TEXT Standard open-hatch boilerplate//EN
"
"">http://www.textuality.com/boilerplate/OpenHatch.xml">
<!ENTITY hatch-pic
SYSTEM "../grafix/OpenHatch.gif"
NDATA gif >

4.3 已析实体(Parsed Entities)
4.3.1 文本声明(Text Declaration)
每个外部已析实体可以以文本声明作为开始。

文本声明
[77] TextDecl ::= '<?xml' VersionInfo? EncodingDecl S? '?>'

文本声明必须以字面形式给出，而不能使用已析实体的引用。文本声明只能在外部
已析实体的开头出现，不允许在其他任何地方出现。

4.3.2 格式良好的已析实体(Well-Formed Parsed Entities)
如果文档实体匹配document产生式，那么它是格式良好的。如果外部通用已析实体
匹配extParsedEnt产生式，那么它是格式良好的。如果外部参数实体匹配extPE产生
式，那么它是格式良好的。

格式良好的外部已析实体
[78] extParsedEnt ::= TextDecl? content
[79] extPE ::= TextDecl? extSubsetDecl

如果内部普通已析实体的置换文本匹配content产生式，那么它是格式良好的。根据
定义，所有内部的参数实体都是格式良好的。

实体符合格式要求的一个结果是XML文档的逻辑和物理结构是严格嵌套的;起始标记，
结束标记，空元素标记，元素，注释，处理指令，字符引用，或实体引用都不能在
一个实体中开始而在另一个实体中结束。

4.3.3 实体中的字符编码(Character Encoding in Entities)
XML文档中的每个外部已析实体都可以对其字符采用一种不同的编码方案。所有XML
处理器必须能读编码为UTF-8或UTF-16的实体。

以UTF-16编码的实体必须以ISO/IEC 10646增补E和Unicode附录B(零宽度不间断空格
字符，#xFEFF)中所描述的字节次序标记(Byte Order Mark)开头。这是一个编码签
名，即不是XML文档中标记的一部分，也不是XML文档字符数据的一部分。XML处理器
必须能用此字符区分UTF-8编码和UTF-16编码的文档。

虽然XML处理器只被要求能读取UTF-8和UTF-16编码的实体，普遍认为国际上还有其
他编码方案。有时可能想让XML处理器读取以那些编码方案编码的实体。以不同与U
TF-8和UTF-16的编码方案存储的实体必须以包含编码声明的文本声明开头：

编码声明
[80] EncodingDecl ::= S 'encoding' Eq ('"' EncName '"' | "'" EncName
"'" )
[81] EncName ::= [A-Za-z] ([A-Za-z0-9._] | '-')* /* 编码方案的名字只包
含拉丁字母 */

在文档实体中，编码声明是XML声明的一部分。EncName是所用编码方案的名字。

在一个编码声明中，值"UTF-8"，"UTF-16"，"ISO-10646-UCS-2"和"ISO-10646-UCS
-4"应该用于表示Unicode或ISO/IEC 10646中的各种不同编码和变换方案，值"ISO-
8859-1"，"ISO-8859-2"，... "ISO-8859-9"应该用于表示ISO 8859的各个部分，而
值"ISO-2022-JP"，"Shift_JIS"和"EUC-JP"应该用于表示JIS X-0208-1997的各种编
码。XML处理器可以识别其他编码方案;建议对于在Internet Assigned Numbers Au
thority [IANA]注册的字符编码方案(以字符集(charset)的方式)，除了以上所列的
之外，引用时应使用其注册名。注意这些注册名定义为大小写敏感，因此欲与之匹
配的处理器要以大小写敏感的方式进行匹配。

在缺少外部传输协议(如HTTP或MIME)所提供的信息时，以下情况均是错误：XML处理
器接收到的实体的编码方案与实体所含编码声明中指出的编码方案不同，编码声明
不在外部实体的开头，既不以字节次序标记开头也不以编码声明开头的实体使用了
不同于UTF-8的编码。注意因为ASCII是UTF-8的一个子集，以普通ASCII编码的实体
不严格需要编码声明。

当XML处理遇到的实体使用了它不能处理的编码时，是一个严重错误。

编码声明的例子：

<?xml encoding='UTF-8'?>
<?xml encoding='EUC-JP'?>

--
山居且喜远纷华，俯仰乾坤野性赊。
千载勋名身外影，百岁荣辱镜中花。

金樽潦倒秋将暮，蕙径萧瑟日且斜。
闻道五湖烟境好，何缘蓑笠钓汀沙。

※ 来源:·BBS 水木清华站 smth.org·[FROM: ftp.xjtu.edu.cn]


[范文][XML]W3C建议XML 1.0中文版说明（八） (转载)

 发信人: DDG (导弹驱逐舰~雾的季节), 信区: XML
标 题: [范文][XML]W3C建议XML 1.0中文版说明（八） (转载)
发信站: BBS 水木清华站 (Thu Apr 6 13:29:48 2000)

【 以下文字转载自 New_board 讨论区 】
【 原文由 starw 所发表 】
4.4 XML处理器对实体和引用的处理
下表汇总了字符引用，实体引用，和对未析实体的调用可以出现的上下文，以及每
种情况下XML处理器要求的动作。最左边一列的标签记指明了识别时的上下文：

内容中的引用
可以在元素的起始标记之后，结束标记之前的任何地方以引用形式出现，对应于非
终结符content。
属性值中的引用
可以在起始标记内的属性值中，或属性声明内的缺省值中以引用形式出现;对应于非
终结符AttValue。
作为属性值
可以以Name而不是以引用的形式出现，作为声明为ENTITY类型的属性的值，或可以
作为声明为ENTITIES类型的属性值中的以空白分隔的记号之一。
实体值中的引用
可以在参数中或内部实体的实体声明内的字面实体值中以引用形式出现;对应于非终
结符EntityValue。
DTD中的引用
可以在DTD的内部或外部子集中以引用形式出现，但须在EntityValue和AttValue之
外。

实体类型 字符
参数 内部通用 外部已析通用 未析
内容中的引用 不被识别 被包含 进行验证时被包含 被禁止 被包含
属性值中的引用 不被识别 作为常量被包含 被禁止 被禁止 被包含
作为属性值 不被识别 被禁止 被禁止 通知 不被识别
实体值中的引用 作为常量被包含 不处理 不处理 被禁止 被包含
DTD中的引用 作为PE被包含 被禁止 被禁止 被禁止 被禁止

4.4.1 不被识别(Not Recognized)
在DTD之外，百分号字符%没有特殊含义;因此在DTD中的参数实体引用在content中不
被当成标记识别。类似地，除非未析实体的名字出现在已适当声明的属性的值中，
否则它们不被识别。

4.4.2 被包含(Included)
当一个实体的置换文本代替引用,被当成引用文档的一部分一样被查找和处理时，称
此实体被包含。其置换文本可以包含字符数据和标记(不包括参数实体)，其中标记
必须以通常的方式识别，但用于转义标记定界符(实体amp，lt，gt，apos和quot)的
实体的置换文本总是被当成数据。(字符串"AT&amp;T;"展开为"AT&T;"尚存的"and"
号&不被识别为实体引用的定界符。)当被表示的字符代替引用被处理时，称此字符
引用被包含。

4.4.3 进行验证时被包含(Included If Validating)
当XML处理器识别出一个对已析实体的引用，为了验证该文档，处理器必须包含此实
体的置换文本。如果实体是外部的，而处理器不试图验证该XML文档，那么处理器可
以，但不是必须，包含此实体的置换文本。如果一个不验证的解析器不包含此置换
文本，它必须通知应用它识别出但没有读取此实体。

这条规范基于这样一个共识：由SGML和XML的实体机制提供的起初设计用于支持模块
化创作的自动包含不一定适合于其他应用，尤其是文档浏览。例如，当浏览器遇到
一个外部已析实体引用时，可能选择用可视方式表示其存在但只在被请求时才查找
它进行显示。

4.4.4 被禁止(Forbidden)
以下情况被禁止，并构成一个严重错误：

n 出现对未析实体的引用。
n 在DTD中出现任何字符或通用实体引用，除非它们出现在EntityValue或AttValue
中。
n 属性值中出现对外部实体的引用。
4.4.5 被包含在常量中(Included in Literal)
当实体引用出现在属性值中或参数实体引用出现在字面实体值中时，它们的置换文
本代替引用被当成引用文档的一部分一样被查找和处理，但是置换文本中的单双引
号总是被当成正常的数据字符而不会结束此常量。例如，下面的例子是格式良好的：

<!ENTITY % YN '"Yes"' >
<!ENTITY WhatHeSaid "He said &YN;" >

而这个例子不是：

<!ENTITY EndAttr "27'" >
<element attribute='a-&EndAttr;>
4.4.6 通知(Notify)
当未析实体名字作为记号在声明为ENTITY或ENTITIES类型的属性的值中出现时，进
行验证的处理器必须将此实体和它的相关符号的系统和公共(如果有的话)标识符通
知给应用。
4.4.7 不处理(Bypassed)
当实体声明内一个通用兵实体引用出现在EntityValue中时，它不被处理，保持不变。
4.4.8 作为PE被包含(Included as PE)
和外部已析实体一样，参数实体只需在进行验证时被包含。当参数实体引用在DTD中
被识别并被包含时，它的置换文本被前后各加上一个空格字符;其目的在于强制参数
实体的置换文本在DTD中包含完整的的语法记号。

4.5 内部实体置换文本的构建(Construction of Internal Entity)
在讨论内部实体的处理时，区分两种形式的实体值是有帮助的。字面实体值(liter
al entity value)是实际出现在实体声明中用引号括起的字符串。对应于非终结符
EntityValue。置换文本(replacement text)是置换了字符引用和参数实体引用后的
实体内容。

在内部实体声明(EntityValue)中给出的字面实体值可以包括字符引用，参数实体引
用和通用实体引用。这些引用必须被整个包含于字面实体值中。如前述方式被包含
的实际置换文本必须包含所有被引用的参数实体的置换文本，同时在字面实体值中
必须包含所有代替字符引用的字符。但通用实体的引用必须保持不变，不被展开。
例如，如果有以下的声明：

<!ENTITY % pub "&#xc9;ditions Gallimard" >
<!ENTITY rights "All rights reserved" >
<!ENTITY book "La Peste: Albert Camus, &#xA9; 1947 %pub;. &rights;" >

那么实体"book"的置换文本为：

La Peste: Albert Camus, ?nbsp;1947 ditions Gallimard. &rights;

一旦引用"&book;"出现在文档的内容或属性值中时，通用实体引用"&rights;"应该
被展开。

这些简单的规则将可能会有复杂的相互作用;参见"D. 实体和字符引用的展开"中对
一个难的例子的详细讨论。

4.6 预定义实体(Predefined Entities)
实体和字符引用都可以用于转义左尖括号，"and"号(&)和其他定界符。通用实体集
合(amp，lt，gt，apos，quot)专门用于此目的。也可以使用数值字符引用; 一旦被
识别，它们立即被展开，同时它们必须被当成字符数据，因此数值字符引用"&#60;
"和"&#38;"可以用于转义出现在字符数据中的<和&。

不管这些实体是否被声明，所有的XML处理器必须能识别它们。出于互操作性考虑，
如其他实体一样，有效的XML文档应该在使用这些实体前先声明它们。如果声明的话，
这些实体必须被声明为内部实体，其置换文本是被转义的单个字符或指向这个字符
的字符引用。如下所示。

<!ENTITY lt "&#38;#60;">
<!ENTITY gt "&#62;">
<!ENTITY amp "&#38;#38;">
<!ENTITY apos "&#39;">
<!ENTITY quot "&#34;">

注意在"lt"和"amp"的声明中，<和&被两次转义，这是为了满足实体置换的格式要求。

4.7 符号声明(Notation Declarations)
符号用名字标识了未析实体的格式，具有符号属性的元素的格式以及处理指令所针
对的应用的格式。

符号声明赋予符号一个名字用于实体,属性表声明和属性说明中，同时也给出了一个
符号的外部标识符使得XML处理器或它的客户应用可以定位能以给定符号处理数据的
助理应用。

符号声明
[82] NotationDecl ::= '<!NOTATION' S Name S (ExternalID | PublicID) S?
'>'
[83] PublicID ::= 'PUBLIC' S PubidLiteral

XML处理器必须向应用提供任何在属性值中，属性定义中或实体声明中定义或引用的
符号的名字和外部标识符。它们还可以将外部标识符解析成系统标识符，文档名，
或是应用调用相应处理器处理给定符号格式的数据的所需的其他信息。(但如果XML
处理器或应用所运行的系统中没有处理XML文档声明和引用的符号的相应应用的情况，
不是一个错误。)

4.8 文档实体(Document Entity)
文档实体(document entity)是实体树的根和XML处理器的处理起点。本规范没有规
定XML如何定位文档实体;与其他实体不同，文档实体没有名字，而且可以完全不带
任何标识地出现在处理器的输入流中。

--
山居且喜远纷华，俯仰乾坤野性赊。
千载勋名身外影，百岁荣辱镜中花。

金樽潦倒秋将暮，蕙径萧瑟日且斜。
闻道五湖烟境好，何缘蓑笠钓汀沙。

※ 来源:·BBS 水木清华站 smth.org·[FROM: ftp.xjtu.edu.cn]


[范文][XML]W3C建议XML 1.0中文版说明（九） (转载)

 发信人: DDG (导弹驱逐舰~雾的季节), 信区: XML
标 题: [范文][XML]W3C建议XML 1.0中文版说明（九） (转载)
发信站: BBS 水木清华站 (Thu Apr 6 13:29:53 2000)

【 以下文字转载自 New_board 讨论区 】
【 原文由 starw 所发表 】
5. 一致性(Conformance)
5.1 进行验证和不进行验证的处理器(Validating and Non-Validating Processor
s)
合乎规范的XML处理器可以分为两类：进行验证的和不进行验证的。

进行验证和不进行验证的处理器都必须报告在文档实体的内容中和任何其他它们读
到的已析实体中对格式约束的违反。

进行验证的处理器必须报告违反DTD声明中所述约束的情况以及不满足本规范中给出
的有效性约束的情况。要完成这一点，进行验证的XML处理器必须读取和处理整个D
TD和所有在文档中引用的外部已析实体。

不进行验证的处理器只被要求检查文档实体和整个内部DTD子集的格式。虽然它们不
被要求检查文档的有效性，但它们必须处理它们读取的所有内部DTD子集和参数实体
中的声明，直到遇到第一个没有读取的参数实体的引用;也就是说，它们必须根据这
些声明中的信息规范化属性值，包含内部实体的置换文本，并提供缺省属性值。它
们在遇到第一个没有读取的参数实体的引用后，不应处理其后的实体声明或属性表
声明，因为此实体中包含的声明可能覆盖前面的声明。

5.2 使用XML处理器
进行验证的处理器的行为是高度可预测的;它必须读取文档的所有部分，报告所有对
格式和有效性的违反。对一个不进行验证的处理器的要求要低一点;它不需要读取文
档实体以外的任何文档部分。这对XML的处理器的用户而言可能会有两个重要的影响：

n 某些格式错误，尤其是那些要求读取外部实体的，可能不会被不进行验证的处理
器检测到。例如称为声明实体，已析实体和无递归的约束，以及"4.4 XML处理器对
实体和引用的处理"中描述为被禁止的一些情况。
n 取决于处理器是否读取参数和外部实体，从处理器传给应用的信息可能会有所不
同。例如，不进行验证的处理器可能不规范化属性值，不包含内部实体的置换文本，
或不提供缺省属性值，这些动作要求先读取外部或参数实体中的声明。

为了使不同XML处理器间的互操作有最大的可靠性，使用不进行验证的处理器的应用
不应依赖于不要求这些处理器具备的动作。那些要求使用如缺省值或在外部实体中
声明内部实体等功能的应用应该使用进行验证的XML处理器。

6. 符号(Notation)
本规范中XML的正式句法用一种简单的扩展巴科斯范式(Extended Backus-Naur For
m，EBNF)给出。句法中的每一条规则定义了一个记号，形式如下：

symbol ::= expression

如果记号用正则表达式定义，则它以大写字母开头，否则以小写字母开头。字符串
(literal strings)用引号括起。

在规则右边的表达式中，以下表达式用于匹配一个或多个字符的字符串：

#xN
N是一个十六进制的整数，当ISO/IEC 10646中某个字符的规范(UCS-4)代码值作为无
符号二进制数与N相等时，此表达式匹配这个字符。#xN中的前导0没有意义，在相应
的代码值中的前导0的个数则由所用字符编码方案决定，对XML没有意义。
[a-zA-Z]， [#xN-#xN]
与其值在指定范围内的任何字符相匹配(含界，inclusive)。
[^a-z]， [^#xN-#xN]
与其值在指定范围之外的任何字符相匹配。
[^abc]， [^#xN#xN#xN]
与任何不在给定字符集内的字符相匹配。
"string"
与双引号中字符串相匹配。
'string'
与单引号中字符串相匹配。
这些符号可以按下列方式组合，以匹配更复杂的模式，其中A和B表示简单表达式：

(expression)
expression被当成一个单元，可以如本表描述进行组合。
A?
与零个或一个A相匹配，即A可选。
A B
与A后跟B的模式相匹配。
A | B
与AB之一相匹配，但不同时匹配。
A - B
与任何匹配A但不匹配B的字符串相匹配。
A+
与一个或多个A相匹配。
A*
与零个或多个A相匹配。
其他在产生式中使用的符号有：

/* ... */
注释
[ wfc: ... ]
格式约束;用名字标识一个对与某个产生式相关联的格式良好的文档的约束。
[ vc: ... ]
有效性约束;用名字标识一个对与某个产生式相关联的有效文档的约束。

--
山居且喜远纷华，俯仰乾坤野性赊。
千载勋名身外影，百岁荣辱镜中花。

金樽潦倒秋将暮，蕙径萧瑟日且斜。
闻道五湖烟境好，何缘蓑笠钓汀沙。

※ 来源:·BBS 水木清华站 smth.org·[FROM: ftp.xjtu.edu.cn]


[范文][XML]W3C建议XML 1.0中文版说明（十） (转载)

 发信人: DDG (导弹驱逐舰~雾的季节), 信区: XML
标 题: [范文][XML]W3C建议XML 1.0中文版说明（十） (转载)
发信站: BBS 水木清华站 (Thu Apr 6 13:29:58 2000)

【 以下文字转载自 New_board 讨论区 】
【 原文由 starw 所发表 】
附录
A. 参考文献
A.1 标准参考文献
IANA
(Internet Assigned Numbers Authority) Official Names for Character Sets，
ed. Keld Simonsen et al. See ftp://ftp.isi.edu/in-notes/iana/assignment
s/character-sets.

IETF RFC 1766
IETF (Internet Engineering Task Force). RFC 1766: Tags for the Identific
ation of Languages， ed. H. Alvestrand. 1995.

ISO 639
(International Organization for Standardization). ISO 639:1988 (E). Code
for the representation of names of languages. [Geneva]: International O
rganization for Standardization， 1988.

ISO 3166
(International Organization for Standardization). ISO 3166-1:1997 (E). C
odes for the representation of names of countries and their subdivisions
-- Part 1: Country codes [Geneva]: International Organization for Stand
ardization， 1997.

ISO/IEC 10646
ISO (International Organization for Standardization). ISO/IEC 10646-1993
(E). Information technology -- Universal Multiple-Octet Coded Character
Set (UCS) -- Part 1: Architecture and Basic Multilingual Plane. [Geneva]:
International Organization for Standardization， 1993 (plus amendments
AM 1 through AM 7).

Unicode
The Unicode Consortium. The Unicode Standard， Version 2.0. Reading， Ma
ss.: Addison-Wesley Developers Press， 1996.
A.2 其他参考文献
Aho/Ullman
Aho， Alfred V., Ravi Sethi， and Jeffrey D. Ullman. Compilers: Principl
es, Techniques, and Tools. Reading: Addison-Wesley, 1986, rpt. corr. 198
8.

Berners-Lee et al.
Berners-Lee, T., R. Fielding, and L. Masinter. Uniform Resource Identifi
ers (URI): Generic Syntax and Semantics. 1997. (Work in progress; see up
dates to RFC1738.)

Br黦gemann-Klein
Br黦gemann-Klein, Anne. Regular Expressions into Finite Automata. Extend
ed abstract in I. Simon, Hrsg., LATIN 1992, S. 97-98. Springer-Verlag, B
erlin 1992. Full Version in Theoretical Computer Science 120: 197-213, 1
993.

Br黦gemann-Klein and Wood
Br黦gemann-Klein, Anne, and Derick Wood. Deterministic Regular Languages.
Universit鋞 Freiburg, Institut f黵 Informatik, Bericht 38, Oktober 1991.

Clark
James Clark. Comparison of SGML and XML. See http://www.w3.org/TR/NOTE-s
gml-xml-971215.

IETF RFC1738
IETF (Internet Engineering Task Force). RFC 1738: Uniform Resource Locat
ors (URL), ed. T. Berners-Lee, L. Masinter, M. McCahill. 1994.

IETF RFC1808
IETF (Internet Engineering Task Force). RFC 1808: Relative Uniform Resou
rce Locators, ed. R. Fielding. 1995.

IETF RFC2141
IETF (Internet Engineering Task Force). RFC 2141: URN Syntax, ed. R. Moa
ts. 1997.

ISO 8879
ISO (International Organization for Standardization). ISO 8879:1986(E).
Information processing -- Text and Office Systems -- Standard Generalize
d Markup Language (SGML). First edition -- 1986-10-15. [Geneva]: Interna
tional Organization for Standardization, 1986.

ISO/IEC 10744
ISO (International Organization for Standardization). ISO/IEC 10744-1992
(E). Information technology -- Hypermedia/Time-based Structuring Langua
ge (HyTime). [Geneva]: International Organization for Standardization, 1
992. Extended Facilities Annexe. [Geneva]: International Organization fo
r Standardization, 1996.
B. 字符的分类(Character Classes)
根据Unicode标准中定义的特征，字符被分为基类字符(其中包括没有变音符的拉丁
字母)，表意字符和组合字符(其中包括大多数的变音符);这些类合起来组成了字母
类。数字和扩展符(extender)也各自被分成类。

字符
[84] Letter ::= BaseChar | Ideographic
[85] BaseChar ::= [#x0041-#x005A] | [#x0061-#x007A] | [#x00C0-#x00D6]
| [#x00D8-#x00F6] | [#x00F8-#x00FF] | [#x0100-#x0131] | [#x0134-#x013E]
| [#x0141-#x0148] | [#x014A-#x017E] | [#x0180-#x01C3] | [#x01CD-#x01F0]
| [#x01F4-#x01F5] | [#x01FA-#x0217] | [#x0250-#x02A8] | [#x02BB-#x02C1]
| #x0386 | [#x0388-#x038A] | #x038C | [#x038E-#x03A1] | [#x03A3-#x03CE]
| [#x03D0-#x03D6] | #x03DA | #x03DC | #x03DE | #x03E0 | [#x03E2-#x03F3]
| [#x0401-#x040C] | [#x040E-#x044F] | [#x0451-#x045C] | [#x045E-#x0481]
| [#x0490-#x04C4] | [#x04C7-#x04C8] | [#x04CB-#x04CC] | [#x04D0-#x04EB]
| [#x04EE-#x04F5] | [#x04F8-#x04F9] | [#x0531-#x0556] | #x0559 | [#x0561
-#x0586] | [#x05D0-#x05EA] | [#x05F0-#x05F2] | [#x0621-#x063A] | [#x0641
-#x064A] | [#x0671-#x06B7] | [#x06BA-#x06BE] | [#x06C0-#x06CE] | [#x06D0
-#x06D3] | #x06D5 | [#x06E5-#x06E6] | [#x0905-#x0939] | #x093D | [#x0958
-#x0961] | [#x0985-#x098C] | [#x098F-#x0990] | [#x0993-#x09A8] | [#x09AA
-#x09B0] | #x09B2 | [#x09B6-#x09B9] | [#x09DC-#x09DD] | [#x09DF-#x09E1]
| [#x09F0-#x09F1] | [#x0A05-#x0A0A] | [#x0A0F-#x0A10] | [#x0A13-#x0A28]
| [#x0A2A-#x0A30] | [#x0A32-#x0A33] | [#x0A35-#x0A36] | [#x0A38-#x0A39]
| [#x0A59-#x0A5C] | #x0A5E | [#x0A72-#x0A74] | [#x0A85-#x0A8B] | #x0A8D
| [#x0A8F-#x0A91] | [#x0A93-#x0AA8] | [#x0AAA-#x0AB0] | [#x0AB2-#x0AB3]
| [#x0AB5-#x0AB9] | #x0ABD | #x0AE0 | [#x0B05-#x0B0C] | [#x0B0F-#x0B10]
| [#x0B13-#x0B28] | [#x0B2A-#x0B30] | [#x0B32-#x0B33] | [#x0B36-#x0B39]
| #x0B3D | [#x0B5C-#x0B5D] | [#x0B5F-#x0B61] | [#x0B85-#x0B8A] | [#x0B8E
-#x0B90] | [#x0B92-#x0B95] | [#x0B99-#x0B9A] | #x0B9C | [#x0B9E-#x0B9F]
| [#x0BA3-#x0BA4] | [#x0BA8-#x0BAA] | [#x0BAE-#x0BB5] | [#x0BB7-#x0BB9]
| [#x0C05-#x0C0C] | [#x0C0E-#x0C10] | [#x0C12-#x0C28] | [#x0C2A-#x0C33]
| [#x0C35-#x0C39] | [#x0C60-#x0C61] | [#x0C85-#x0C8C] | [#x0C8E-#x0C90]
| [#x0C92-#x0CA8] | [#x0CAA-#x0CB3] | [#x0CB5-#x0CB9] | #x0CDE | [#x0CE0
-#x0CE1] | [#x0D05-#x0D0C] | [#x0D0E-#x0D10] | [#x0D12-#x0D28] | [#x0D2A
-#x0D39] | [#x0D60-#x0D61] | [#x0E01-#x0E2E] | #x0E30 | [#x0E32-#x0E33]
| [#x0E40-#x0E45] | [#x0E81-#x0E82] | #x0E84 | [#x0E87-#x0E88] | #x0E8A
| #x0E8D | [#x0E94-#x0E97] | [#x0E99-#x0E9F] | [#x0EA1-#x0EA3] | #x0EA5
| #x0EA7 | [#x0EAA-#x0EAB] | [#x0EAD-#x0EAE] | #x0EB0 | [#x0EB2-#x0EB3]
| #x0EBD | [#x0EC0-#x0EC4] | [#x0F40-#x0F47] | [#x0F49-#x0F69] | [#x10A0
-#x10C5] | [#x10D0-#x10F6] | #x1100 | [#x1102-#x1103] | [#x1105-#x1107]
| #x1109 | [#x110B-#x110C] | [#x110E-#x1112] | #x113C | #x113E | #x1140
| #x114C | #x114E | #x1150 | [#x1154-#x1155] | #x1159 | [#x115F-#x1161]
| #x1163 | #x1165 | #x1167 | #x1169 | [#x116D-#x116E] | [#x1172-#x1173]
| #x1175 | #x119E | #x11A8 | #x11AB | [#x11AE-#x11AF] | [#x11B7-#x11B8]
| #x11BA | [#x11BC-#x11C2] | #x11EB | #x11F0 | #x11F9 | [#x1E00-#x1E9B]
| [#x1EA0-#x1EF9] | [#x1F00-#x1F15] | [#x1F18-#x1F1D] | [#x1F20-#x1F45]
| [#x1F48-#x1F4D] | [#x1F50-#x1F57] | #x1F59 | #x1F5B | #x1F5D | [#x1F5F
-#x1F7D] | [#x1F80-#x1FB4] | [#x1FB6-#x1FBC] | #x1FBE | [#x1FC2-#x1FC4]
| [#x1FC6-#x1FCC] | [#x1FD0-#x1FD3] | [#x1FD6-#x1FDB] | [#x1FE0-#x1FEC]
| [#x1FF2-#x1FF4] | [#x1FF6-#x1FFC] | #x2126 | [#x212A-#x212B] | #x212E
| [#x2180-#x2182] | [#x3041-#x3094] | [#x30A1-#x30FA] | [#x3105-#x312C]
| [#xAC00-#xD7A3]
[86] Ideographic ::= [#x4E00-#x9FA5] | #x3007 | [#x3021-#x3029]
[87] CombiningChar ::= [#x0300-#x0345] | [#x0360-#x0361] | [#x0483-#x0
486] | [#x0591-#x05A1] | [#x05A3-#x05B9] | [#x05BB-#x05BD] | #x05BF | [#
x05C1-#x05C2] | #x05C4 | [#x064B-#x0652] | #x0670 | [#x06D6-#x06DC] | [#
x06DD-#x06DF] | [#x06E0-#x06E4] | [#x06E7-#x06E8] | [#x06EA-#x06ED] | [#
x0901-#x0903] | #x093C | [#x093E-#x094C] | #x094D | [#x0951-#x0954] | [#
x0962-#x0963] | [#x0981-#x0983] | #x09BC | #x09BE | #x09BF | [#x09C0-#x0
9C4] | [#x09C7-#x09C8] | [#x09CB-#x09CD] | #x09D7 | [#x09E2-#x09E3] | #x
0A02 | #x0A3C | #x0A3E | #x0A3F | [#x0A40-#x0A42] | [#x0A47-#x0A48] | [#
x0A4B-#x0A4D] | [#x0A70-#x0A71] | [#x0A81-#x0A83] | #x0ABC | [#x0ABE-#x0
AC5] | [#x0AC7-#x0AC9] | [#x0ACB-#x0ACD] | [#x0B01-#x0B03] | #x0B3C | [#
x0B3E-#x0B43] | [#x0B47-#x0B48] | [#x0B4B-#x0B4D] | [#x0B56-#x0B57] | [#
x0B82-#x0B83] | [#x0BBE-#x0BC2] | [#x0BC6-#x0BC8] | [#x0BCA-#x0BCD] | #x
0BD7 | [#x0C01-#x0C03] | [#x0C3E-#x0C44] | [#x0C46-#x0C48] | [#x0C4A-#x0
C4D] | [#x0C55-#x0C56] | [#x0C82-#x0C83] | [#x0CBE-#x0CC4] | [#x0CC6-#x0
CC8] | [#x0CCA-#x0CCD] | [#x0CD5-#x0CD6] | [#x0D02-#x0D03] | [#x0D3E-#x0
D43] | [#x0D46-#x0D48] | [#x0D4A-#x0D4D] | #x0D57 | #x0E31 | [#x0E34-#x0
E3A] | [#x0E47-#x0E4E] | #x0EB1 | [#x0EB4-#x0EB9] | [#x0EBB-#x0EBC] | [#
x0EC8-#x0ECD] | [#x0F18-#x0F19] | #x0F35 | #x0F37 | #x0F39 | #x0F3E | #x
0F3F | [#x0F71-#x0F84] | [#x0F86-#x0F8B] | [#x0F90-#x0F95] | #x0F97 | [#
x0F99-#x0FAD] | [#x0FB1-#x0FB7] | #x0FB9 | [#x20D0-#x20DC] | #x20E1 | [#
x302A-#x302F] | #x3099 | #x309A
[88] Digit ::= [#x0030-#x0039] | [#x0660-#x0669] | [#x06F0-#x06F9] |
[#x0966-#x096F] | [#x09E6-#x09EF] | [#x0A66-#x0A6F] | [#x0AE6-#x0AEF] |
[#x0B66-#x0B6F] | [#x0BE7-#x0BEF] | [#x0C66-#x0C6F] | [#x0CE6-#x0CEF] |
[#x0D66-#x0D6F] | [#x0E50-#x0E59] | [#x0ED0-#x0ED9] | [#x0F20-#x0F29]
[89] Extender ::= #x00B7 | #x02D0 | #x02D1 | #x0387 | #x0640 | #x0E46
| #x0EC6 | #x3005 | [#x3031-#x3035] | [#x309D-#x309E] | [#x30FC-#x30FE]

在此定义的字符类可以从Unicode字符库中如下导出：

n 名字的起始字符必须属于Ll, Lu, Lo, Lt, Nl中的一类。
n 除了起始字符之外的命名字符必须属于Mc，Me，Mn，Lm或Nd中的一类。
n 兼容区(即代码大于#xF900，小于#xFFFE的字符)中的字符不允许在XML名字中出现。

n 不允许出现具有字体或兼容性分解的字符(即数据库中第5项有以"<"开始的"comp
atibility formatting tag"的字符 )。
n 下列字符被当成名字起始字符而非名字字符，因为特性文件中将它们归于字母类：
[#x02BB-#x02C1]，#x0559，#x06E5，#x06E6。
n 不允许出现字符#x20DD-#x20E0(与Unicode的5.14节保持一致)。
n 字符#x00B7被分为扩展符，因为特性文件中对它是这么标识的。
n 字符#x0387被当成一个命名字符，因为#x00B7是它的等价规范形式。
n 字符':'和'_'可以作为名字起始字符。
n 字符'-'和'.'可以作为命名字符。
C. XML和SGML(非标准)
XML被设计为SGML的一个子集，表现在每一个有效的XML文档应该也是一个合乎规范
的SGML文档。对XML在SGML之外对文档所加的限制的详细讨论参见[Clark]。
D. 实体和字符引用的展开(非标准)
本附录中举例说明了在 "4.4 XML处理器对实体和引用的处理"一节中规定的实体和
字符引用的识别和展开的次序。

如果声明包含在DTD中

<!ENTITY example "<p>An ampersand (&#38;#38;) may be escaped
numerically (&#38;#38;#38;) or with a general entity
(&amp;amp;).</p>" >

那么XML处理器将在对实体声明进行解析时识别出字符引用，并在将下面的字符串存
为实体"example"的值前解析这些字符引用:

<p>An ampersand (&#38;) may be escaped
numerically (&#38;#38;) or with a general entity
(&amp;amp;).</p>

文档中对"&example;"的引用会导致对文本的重新分析，此时元素"p"的起始和结束
标记被识别，三个引用被识别和展开，其结果是一个包含下面内容(所有数据，无定
界符或标记)的"p"元素：

An ampersand (&) may be escaped
numerically (&#38;) or with a general entity
(&amp;).

一个更复杂的例子可以完整地说明这些规则和它们的作用。在下面的例子中，行号
仅仅是为了方便说明。

1 <?xml version='1.0'?>
2 <!DOCTYPE test [
3 <!ELEMENT test (#PCDATA) >
4 <!ENTITY % xx '&#37;zz;'>
5 <!ENTITY % zz '&#60;!ENTITY tricky "error-prone" >' >
6 %xx;
7 ]>
8 <test>This sample shows a &tricky; method.</test>

这个例子会导致下列动作：

n 在第4行，对字符37的引用会被立即展开，参数实体"xx"以值"%zz;"存于记号表中。
因为置换文本不被再次扫描，对参数实体"zz"的引用不会被识别。(而且如果它被识
别的话则是一个错误，因为"zz"还没有被声明。)
n 在第5行，字符引用"&#60;"被立即展开，而参数实体"zz"以置换文本"<!ENTITY
tricky "error-prone" >"被存储，此置换文本是一个格式良好的实体声明。
n 在第6行，对"xx"的引用被识别，"xx"的置换文本(即"%zz;")被解析。对"zz"的引
用随后被识别，它的置换文本("<!ENTITY tricky "error-prone" >")被解析。此时
通用实体"tricky"被声明，它的置换文本是"error-prone"。
n 在第8行，对通用实体"tricky"的引用被识别，并被展开，因此"test"元素的全部
内容为一个自我描述的(不合语法)字符串。此例表明了一种有错误倾向的方法。
E. 确定型内容模型(非标准)
出于兼容性考虑，要求元素类型声明中的内容模型是确定型的。

SGML要求内容模型是确定型的(它称为"无歧义的"); 用SGML系统生成的XML处理器可
能会把非确定型内容模型标为错误。

例如，内容模型((b, c) | (b, d))是非确定型的，因为给定一个初始b，解析器没
有在向前看以知道b后是什么元素之前，无法知道匹配模型中的哪个b。在这种情况
下，两个对b的引用可以简化成单个的引用，使得模型成为(b,(c | d))。此时初始
的b只和内容模型中的一个名字明确匹配。解析器不需要向前看其后的内容。c或d都
能被接受。

更正式的说法：使用Aho，Sethi和Ullman所著[Aho/Ullman]3.9节中的标准算法3.5，
可以从内容模型构造出一个有限状态自动机。在很多这样的算法中，对应正则表达
式中的每一个位置(即正则表达式的语法树中的每个叶子节点)，都构造一个随集(f
ollow set)；如果任一位置的随集中不止一个后继位置被标为同一元素类型时，那
么此内容模型出错，并且可以被报为错误。

存在将许多但不是所有非确定型内容模型自动规约为等价的确定型模型的算法；参
见Br黦gemann-Klein 1991 [Br黦gemann-Klein].

F. 字符编码的自动检测(非标准)
XML编码声明在实体中以内部标签的方式工作，用于指出使用了何种字符编码。然而，
在XML处理器能读取这个内部标签前，显然它必须知道当前使用的是何种字符编码－
而这正是此内部标签要试图指出的。通常情况下，这是一种无法解决的情况。但在
XML中并非如此，因为XML在两个方面对这种情形作出了限制：假定每一种实现只支
持一个有限的字符编码集，并且，为了使得正常情况下自动检测每个实体中所用字
符编码成为可能，限制了XML编码声明的位置和内容。同时，很多情况下除了XML数
据流本身之外，另外还有可用的信息源。根据XML实体交给处理器时没有或有任何的
附带(外部)信息，可以区分出两种情况。我们先考虑第一种情况。

因为每一个非UTF-8或UTF-16格式的XML实体必须以XML编码声明开头，其开始的几个
字符必须为'<?xml'，任何合乎规范的处理器可以在两到四个八位组的输入后，检测
出适用于下列何种情况。在读这张表时，知道这些是有帮助的：在UCS-4中，'<'是
"#x0000003C"，'?'是"#x0000003F"，UTF-16数据流的字节次序标记要求为"#xFEFF
"。

n 00 00 00 3C: UCS-4，big-endian编码的计算机(1234次序)
n 3C 00 00 00: UCS-4，little-endian编码的计算机(4321次序)
n 00 00 3C 00: UCS-4，异常的八位组次序(2143)
n 00 3C 00 00: UCS-4，异常的八位组次序(3412)
n FE FF: UTF-16，big-endian
n FF FE: UTF-16，little-endian
n 00 3C 00 3F: UTF-16，big-endian，无字节次序标记(因此严格说来出错)
n 3C 00 3F 00: UTF-16，little-endian，无字节次序标记(因此严格说来出错)
n 3C 3F 78 6D: UTF-8，ISO 646，ASCII，ISO 8859的一些部分，Shift-JIS，EUC，
及其他任何7位，8位或混合宽度的能保证ASCII字符有它们正常的位置，宽度，取值
的编码;具体其中哪一个适用需读取实际的编码声明来检测确定，但因为所有这些编
码中ASCII字符的位模式相同，所以能够可靠地读取编码声明本身。
n 4C 6F A7 94: EBCDIC(在某些变种中，完整的编码声明必须能用于确定使用了哪
一代码页)
n 其他：无编码声明的UTF-8，或是数据流已损坏，不完整或被包含在某种外层数据
中。

这种层次的自动检测足以用于读取XML编码声明和解析字符编码标识符。字符编码标
识符仍然是必须的，它用于区分编码方案集中的单个成员(例如从8859中区分出UTF
-8，8859各个部分间的相互区分，以及区分所用的特定EBCDIC代码页，等等)。

因为编码声明的内容限于ASCII字符，一旦处理器检测到使用的是哪一个编码方案集，
它能够可靠地读取整个编码声明。因为在实际中，所有广泛使用的字符编码都可以
归于上述种类中，XML编码声明保证了可靠的内嵌(in-band)字符编码标注，即使是
在操作系统或传输协议级的外部信息源并不可靠的情况下。

一旦处理器检测到所用的字符编码，它就可以作出合适的动作，或是针对每种情况
调用单独的输入例程，或是对每个输入的字符调用版本合适的转换函数。

和任何自标注(self-labeling)的系统一样，一旦任何软件改变了实体的字符集或其
编码而没有相应修改编码声明的话，XML的编码声明将无法工作。字符编码方案的实
现者必须小心，以保证用于标注实体的内部和外部信息的正确性。

第二种可能的情况是XML实体有附带的信息，如在一些文档系统和网络协议中。当具
有多个信息源时，它们间的相对优先级和首选冲突处理方法必须在传输XML的高层协
议中给出。例如，内部标签和外部文档头中的MIME类型标签的相对优先级应该是定
义text/xml和application/xml MIME类型的RFC文档的一部分。然而出于互操作性考
虑，建议使用下列规则。

如果XML实体是在一个文档中，用字节次序标记和编码声明PI(如果有的话)来确定字
符编码。所有其他信息源和推断都仅仅用于错误恢复。
如果XML实体传递时标为text/xml MIME类型，那么MIME类型的charset参数决定了字
符编码方法;所有其他信息源和推断都仅仅用于错误恢复。
如果XML实体传递时标为application/xml MIME类型，那么用字节次序标记和编码声
明PI(如果有的话)来确定字符编码。所有其他信息源和推断都仅仅用于错误恢复。

这些规则只适用于缺少协议级文档时的情况；特别是，当相关RFC中定义了这些tex
t/xml和application/xml MIME类型时，RFC中的建议取代这些规则。
G. W3C XML工作组(非正式)
本规范由W3C XML工作组(WG)完成并批准发表。工作组批准了本规范并不一定表示工
作组的所有成员一致同意本规范。现有和以前的XML工作组成员包括：

Jon Bosak, Sun (Chair); James Clark (Technical Lead); Tim Bray, Textuali
ty and Netscape (XML Co-editor); Jean Paoli, Microsoft (XML Co-editor);
C. M. Sperberg-McQueen, U. of Ill. (XML Co-editor); Dan Connolly, W3C (W
3C Liaison); Paula Angerstein, Texcel; Steve DeRose, INSO; Dave Hollande
r, HP; Eliot Kimber, ISOGEN; Eve Maler, ArborText; Tom Magliery, NCSA; M
urray Maloney, Muzmo and Grif; Makoto Murata, Fuji Xerox Information Sys
tems; Joel Nava, Adobe; Conleth O'Connell, Vignette; Peter Sharpe, SoftQ
uad; John Tigue, DataChannel

--
山居且喜远纷华，俯仰乾坤野性赊。
千载勋名身外影，百岁荣辱镜中花。

金樽潦倒秋将暮，蕙径萧瑟日且斜。
闻道五湖烟境好，何缘蓑笠钓汀沙。

※ 来源:·BBS 水木清华站 smth.org·[FROM: ftp.xjtu.edu.cn]


[范文][XML]XML专业技术词汇表(草案) (转载)

 发信人: DDG (导弹驱逐舰~雾的季节), 信区: XML
标 题: [范文][XML]XML专业技术词汇表(草案) (转载)
发信站: BBS 水木清华站 (Thu Apr 6 13:28:44 2000)

【 以下文字转载自 New_board 讨论区 】
【 原文由 starw 所发表 】
XML专业技术词汇表(草案)

XML Professional Tech-Glossary(Draft)

本词汇表专门提供给XML专业技术人员。由于时间仓促，水平有限，此表还有待完善。
敬请大家补充指正。
以下仅供参考：
最迟修改时间：1999/10/8.

A

application （应用）

attribute （属性）

API（Application Programming Interface 应用编程接口）

ADO( ActiveX Data Objects ActiveX数据对象)

ANSI (American National Standards Institute 美国国家标准研讨会)

ASP (Active Server Pages 活动服务器页面)

B

C

character （字段）

class （类）

combination （组合）

CAD (Computer Aided Design 计算机辅助设计)

CAM (Computer Aided Manufacturing 计算机辅助制造)

CGI(Common Gateway Interface 公共网关接口)

CDF(Channel Definition Format 频道定义格式)

COM (Component Object Model 结构对象模式)

CORBA(Common Object Request Broker Architecture 共同对象要求处理结构)

CSS（Cascading Style Sheets 层叠样式表）

CML (Chemical Markup Language 化学标识语言)

D

definition （定义）

declaration （声明）

delimiter （定界符）

DTD(Document Type Definition文件类型定义)

DSSSL(Document Style Semantics and Specification Language 文档样式语义和规范语言)

DOM（Document Object Model 文档对象模式）

DDML (Document Definition Markup Language 文件定义标识语言)

DSO (Data Source Object 数据源对象)

E

encoding (编码）

entity （实体）

EDI (Electronic Data Interchange 电子数据交换)

ECMA（European Computer Manufacturers Association 欧洲计算机协会）

EEMA(European Electronic Messaging Associations 欧洲电子信息协会)

F

G

GCA(Graphic Communications Association of America美国图形通信协会)

H

HTML(HyperText Markup Language 超文本标识语言)

HGML(Hyper Graphics Markup Language 超图像标识语言)

HTTP(HyperText Transfer Protocol 超文本传输协议)

HyTime(Hypermedia/Time-based Structuring Language - ISO/IEC 10744超媒体/基于时间的结构语言)

I

identifier （标识符）

implicit （隐含）

instance （实例）

IEC(国际电工委员会)

IETF（Internet Engineering Task Force 工程任务组）

ISUG（International SGML Users' Group 国际SGML用户组）

ISO(International Standards Organization 国际标准组织)

IDL (Interface Definition Language 接口定义语言)

J

JVM(Java Virtual Machine Java模拟机)

K

keyword （关键字）

L

M

map （参照）

model （模式）

MathML(Mathematical Markup Language数学标识语言)

MCF(Meta Content Framework元內容格式)

MTS(Microsoft Transaction Server 微软交易服务器)

N

Namespace(名域)

O

ODBC(Open Database Connectivity 开放数据库连接)

OSD(Open Software Description 开放软件描叙)

OTP(Open Trading Protocol 开放网络贸易协议)

OFX（Open Financial Exchange 开放式金融交易）

OPS (Open Profiling Standard 开放轮廓标准)

OQL(Object-orientated Query Language 面向对象查询语言)

OFE (Open Financial Exchange 开放金融交换)

OFX (Open Financial Exchange 开放金融交换)

P

parameter （参数）

P3P(Platform for Privacy Preferences 私有参数平台)

PDF(Portable Document Format 便携文件形式)

PNG(Portable Network Graphics 小型网络图形)

PGML(Precision Graphics Markup Language 精密图像标识语言)

Parser(解析器)

Q

quantity （量）

R

record （纪录）

RDF (Resource Description Framework 资源描叙框架)

RFC(Request For Comments 注释要求)

RMD (Required Markup Declaration 必需的标识语言)

RTF(Rich Text Format 丰富文本形式)

S

set （集合）

sequence （序列）

separator （分隔符）

space （空格）

subelement （字元素）

syntax （语法）

SGML (Standard Generalised Markup Language 通用标识语言标准）

SAX（Simple API for XML XML的简单应用编程接口）

SP（SGML Parser SGML解析器）

SQL(Structured Query Language 结构查询语言)

SMIL (Synchronized Multimedia Integration Language 同步多媒体综合语言)

STEP(Standard for the Exchange of Product Model Data 产品类型数据交换标准)

SVG (Scalable Vector Graphics 可升级矢量图形)

SDML (Signed Document Markup Language 有符号文件标识语言)

Schema(大纲)

Stylesheet(样式表)

T

Tag(标签)

text （文本）

token （助记符）

U

upper-case （大写）

UCS(Universal Character Set 通用字符集）

URL(Uniform Resource Locator 通用信息定位器）

URI (Universal Resource Identifier 通用源识别器)

V

virtual （虚拟）

VML (Vector Markup Language 矢量标识语言)

VRML (Virtual Reality Modeling Language虚拟现实造型语言)

Valid(合法)

W

W3C(World Wide Web Consortium 万维网络联盟)

WFC (Windows Foundation Classes 窗口基础类)

WIDL (Web Interface Definition Language 网络接口定义语言)

WSP(Web Standards Project 网络标准项目)

WWW(World Wide Web 万维网络)

Well_formed(结构完整)

X

XML(The Extensible Markup Language可扩展标识语言)

XLL(XML Linking Language 可扩展链接语言)

XSL(XML Style Language 可扩展类型语言)

XHTML (Extensible HyperText Markup Language 可扩展超文本标识语言)

XPath(XML Path Language XML路径语言)

XPointer (XML Pointer Language XML 指针语言)

XFDL (Extensible Forms Description Language 可扩展创体描叙语言)

Y

Z

--
山居且喜远纷华，俯仰乾坤野性赊。
千载勋名身外影，百岁荣辱镜中花。

金樽潦倒秋将暮，蕙径萧瑟日且斜。
闻道五湖烟境好，何缘蓑笠钓汀沙。

※ 来源:·BBS 水木清华站 smth.org·[FROM: ftp.xjtu.edu.cn]
上一篇 返回上一页 回到目录 回到页首


XML 中常用的缩写词

 发信人: reedlotus (晨曦中的剪影), 信区: XML
标 题: XML 中常用的缩写词
发信站: BBS 水木清华站 (Sat Apr 15 02:44:08 2000)

XML 中常用的缩写词

HTML Hyper Text Markup Language 超文本标记语言
XML eXtensible ML 可扩展标记语言
XSL eXtensible Stylesheet Language 可扩展样式单语言
DTD Document Type Definition 文档类型定义
SGML Standard General Markup Language 标准通用标记语言
DDML Data Defintion Markup Language 数据定义标记语言
DCD Document Content Defintion 文档内容定义
SOX Schema for Object-Oriented XML 面向对象的 XML 纲要
DT Data-Typing 数据类型
NS NameSpaces 命名空间
DOM Document Object Model 文档对象模型

摘自member.netease.com/~element

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.114.1.206]
返回上一页 回到目录 回到页首 下一篇


XML结构

 发信人: kyoshiro (千面狂死郎), 信区: XML
标 题: XML结构
发信站: BBS 水木清华站 (Thu Apr 6 15:07:35 2000)

转自<<中国XML联盟>>

XML语言，XML名域和DOM是W3C建议的，这是W3C发展过程中决定性的一步。由于它们已经成为正式的规范，开发人员能够用XML的格式标记和交换数据。XML在三层架构上为数据处理提供了很好的方法。

    使用可升级的三层模型，XML可以从存在的数据中产生出来。使用XML结构化的数据可以从商业规范和表现形式中分离出来。数据的集成、发送、处理和显示是下面过程中的每一个步骤.我们看下图的总结:

数据结构，名域

    XML名域允许开发人员在可识别的情况下定义元素的名称，以避免同名元素间产生冲突。在一个文档中使用的元素，比如购买单，可以在不同的schemas中被定义。名域保证元素名称不会产生冲突，并且阐明了各个元素的来源，但是不能决定如何处理元素。解析器必须知道每个元素的意
义和如何处理它们。

    来源于不同名域中的标记可以混合在一起，这是从不同来源过来的数据所必须具备的。有了名域，元素既可以存在于相同的以XML为基础的文档中，也可以存在于不同的schemas中，说明唯一的语义。例如，在书店的购买单上，一个”title”元素可以包含一个书名，另一个”title”元
素可以包含作者名。

    W3C已经发布了XML的名域，允许元素服务于URI。即使不同的作者选择同样的元素名称，也不会辨识不清。随着任何人都能发布自己的主页或者浏览他人的主页，名域的功能允许使用者定义个人的术语字典或者使用公布的公用名域。

<orders xmlns:person="http://www.schemas.org/people"
xmlns:dsig="">http://dsig.org">
<order>
<sold-to>
<person:name>
<person:last-name>Layman</person:last-name>
<person:first-name>Andrew</person:first-name>
</person:name>
</sold-to>
<sold-on>1997-03-17</sold-on>
<dsig:digital-signature>1234567890</dsig:digital-signature>
</order>
</orders>
    这段编码告诉读者如果一个元素是以"dsig"打头,它的意义是由http://www.dsig.org/的名域所定义的。同样，以”person”打头的元素的意义是由http://www.schemas.org/people的名域所定义的。

    名域保证元素名称不会冲突，也阐明了元素是由谁定义的。它并不给出如何处理元素的指令。读者仍然需要知道元素的意义，并且决定如何处理它们。名域只是针对元素名称。处理人员能够定义元素的数据类型和内容的格式。可以使用数据类型名域的dt属性来达到这一目的。

<sold-on dt:dt="date"
xmlns:dt="urn:schemas-microsoft-com:datatypes">
1997-03-17
</sold-on>
    在这里，"data"说明"sold-on"元素的内容是按照标准格式的，这种格式是由数据类型名域说明的。有了元素名称，处理人员终于可以设计他们自己的数据类型，也能使用共享的类型。微软正同W3C一起定义一套标准类型，并且已经在IE5中提供部分支持XML
Schema的第一份数据类型清单。

数据发送，处理

    由于XML是开放的、基于文本的格式，它可以通过HTTP像HTML一样传送.桌面上的数据可以用DOM处理.代理商将支持XML更新功能,使得中间层或数据服务器上数据的变化可以传递给客户,反之亦然.因此,代理商能够从客户端得到更新的数据,并把数据传送到储存服务器上.

解析XML

    IE5中的XML解析器能够读入一串XML数据，经过处理，产生一棵结构树，并且使用DOM把所有数据元素作为对象。解析器用CSS或XSL样式表显示数据，或者用脚本把数据进行进一步的处理，或者把数据移交给另外的应用软件或对象进行进一步的处理。DOM用扩展方式支持名域、数据类型
、查询和XSL转化。

使用文档对象模式（DOM）处理和编辑数据

    DOM实际上是一个应用编程接口（API），用来定义一种标准方法。通过这种方法，开发人员能够处理XML结构树的元素。对象模式控制着使用者如何同结构树交流，并且把所有树的元素作为对象暴露出来。

用HTML显示XML数据

    XML文档自身不能决定如何显示信息。XML数据只包含事实。HTML是一个理想的显示语言。举个例子来说，网上书店的店员可以访问主页寻找订单。在后端，个人数据记录是用XML表示的。但是，在前端，它们是用HTML表示的。为了构造这个主页，Web服务器和Web浏览器都需要把XML数据
记录转变为用HTML来表示。

数据捆绑和样式表可以用来把XML数据组织成形象化的表达形式，并加上交互功能。数据捆绑是动态HTML（DHTML）的一个方面，它把单独的数据从信息源（例如XML文档）移动到HTML显示上来，允许把HTML作为显示XML数据的模块。微软把XML数据源对象（XML DSO）作为IE5的一部分。XML
DSO能够在XML数据岛基础上被调用。

    XSL（可扩展类型语言）能够进一步加强这一过程。一个XSL样式表包括如何从XML文档中拿出信息以及如何把它转变为另一种格式的指令。XML转变为另一种格式，比如HTML，采用的是一种公布了的方法，这比采用脚本编写简单而且容易理解。另外，XSL把XML作为它的语法，使XML的编
写者不用去掌握另外的标识语言。

    CSS仍然被应用于结构简单的XML数据，并且也很有用。但是，CSS不提供与数据源结构不同的数据显示结构。使用XSL，可以产生与原来的XML数据结构完全不同的表达结构。如下所示。

    XSL提供内容和表现形式的语义和结构独立性。

增加HTML

    给HTML页增加语义信息并不容易。很多程序曾经试图用一些非标准的方法来解决这一问题，比如在HTML注释中隐藏数据。但是，这样的注释是很难使用的，对象模式并不能理解它们。

    为了解决这一问题，W3C定义了一个格式，用来把基于XML的数据放到HTML页中。通过使用数据岛（data islands），扩展HTML允许很大范围的应用软件使用HTML作为主要文档和显示格式，并且使用这些文档中内含的XML保存数据。

    一个HTML页包含有关这一页主题的特殊数据。例如，如果这一页显示一位作者最近一部小说的广告，这一页也包括有关这本书的XML数据，比如ISBN序号、出版者或者是价格。这些信息显不显示并不重要，重要的是这些信息作为数据可被获得和理解。

转换和查询XML

    随着XML作为在Web上交换数据的一种标准方式的出现，不可避免地种种需要就会产生，比如查询XML、制作压缩数据、对数据分类和过滤以及转换XML语法。XSL和XSL模式语言提供了满足这些需要的一种方法。

    XSL模式是简明的语法用来识别XML文档的节点，建立在节点类型、名称、内容和与树中其他节点相关的前后联系的基础上。

    XSL提供了一种语法，使XSL模式查询的结果与模板有关，使XML源文档中的数据具体化。XML语法可以输出，以供分类和过滤，或者把一个schema中的数据转化到另一个schema中去。

    W3C正考虑开发出更强大的查询语言，但开发小组还没有建立。

设置字符和编码

    XML中的信息都是用统一的字符编码标准编写的。包括元素的内容和名称。因此XML支持所有的国际字符的表现形式。

    统一的字符编码标准可以直接转换为16位字符，但更通常的是把它转换为方便使用的或者是简化的某种语言的编码。XML支持广泛的编码，只要一个文档中使用同一种编码。

空格符

    不同于HTML在多数情况下忽略空格符，XML是针对数据的，因此通过xml:space属性可以保留空格。例如，下面两种情况是不同的：

<title xml:space="preserve"><composer>Tchaikovsky</composer>'s
First Piano Concerto</title>

<title xml:space="preserve">
<composer>Tchaikovsky</composer>'s
First
Piano Concerto
</title>
    在IE5中xml:space="default"这一取值在标记间加入了一些装饰用的空格符。

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: wlzhxnt.bjfu.ed]


Schema 与 DTDs

 发信人: perish (luck), 信区: XML
标 题: Schema 与 DTDs
发信站: BBS 水木清华站 (Tue Apr 18 10:06:33 2000)

在Schema之前，另有一种定义XML结构的方式，即DTDs，两者的区别在于：

1 XML Schemas是XML文档，而DTDs有自己的特殊语法，这样，你只需懂得XML的语法规则
即可编写Schema，无需学习其他语法规则；xml文件与xml schema文件可以用相同的语
法
分析器来解析，而无须写两套分析器；xml schema有强大、易用的扩展功能。

2 XML Schema利用名域将文档中特殊的节点与schema说明相联系，一个xml文件可以有多
个对应的schema,而用DTDs的话，一个xml文件只能由一个相对应的DTDs。

3 XML schemas内容模型是开放的，可以随意扩充，而DTDs将无法解析扩充的内容。

4 DTDs只能把内容类型定义为一个字符串。而XML schemas允许你把内容类型定义为整型
、浮点型、数据型、布尔型或者许多其他的简单数据类型，而无须重定义。

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.144.93]


Apache XML project (BM: inannan)

编号 | 类别 | 标题 | 编辑日期
1 | 文件 | Apache XML project inannan | 2001.05.25
2 | 文件 | Re: Apache XML project inannan | 2001.05.25
3 | 文件 | Re: Apache XML project inannan | 2001.05.25
4 | 文件 | Re: Apache XML project inannan | 2001.05.25
返回上一页 回到上一级目录


Apache XML project

 发信人: qlw (钱五哥), 信区: XML
标 题: Apache XML project
发信站: BBS 水木清华站 (Thu Apr 20 11:37:30 2000)

The goals of the Apache XML Project project are:
to provide commercial-quality standards-based XML
solutions that are developed in an open and cooperative
fashion,
to provide feedback to standards bodies (such as IETF
e projects
The Apache XML Project project currently consists of
five sub- projects, each focused on a different aspect
of XML:
Xerces - XML parsers in Java, C++ (with Perl and COM
bindings)
Xalan - XSLT stylesheet processors, in Java and C++
Cocoon - XML-based web publishing, in Java
FOP - XSL formatting objects, in Java
Xang - Rapid development of dynamic server pages,
in Java (coming soon!)
Xerces: XML parsers in Java and C++ (plus Perl and COM)
Xerces (named after the Xerces Blue butterfly)
provides world-class XML parsing and generation.
Fully-validating parsers are available for both
Java and C++, implementing the W3C XML and DOM
(Level 1 and 2) standards, as well as the defacto SAX
(version 2) standard. The parsers are highly modular
and configurable. Initial support for XML Schema
(draft W3C standard) is also provided.
A Perl wrapper is provided for the C++ version
of Xerces, which allows access to a fully
validating DOM XML parser from Perl. It also
provides for full access to Unicode strings,
since Unicode is a key part of the XML standard.
A COM wrapper (also for Xerces-C) provides
compatibility with the Microsoft MSXML parser.
NEW: Source code for Crimson (from Sun)
is available to look at from under the xml-contrib
module. We're in the process of merging the best
parts of Crimson into the Xerces-J code base.
Please join us!
Xalan: XSL stylesheet processors in Java & C++
Xalan (named after a rare musical instrument) provides high-performance XS
LT stylesheet processing. Xalan fully implements the W3C XSLT and XPath reco
mmendations. The stylesheet processor is feature-rich and robust. The XPath
Processor is useable as a stand-alone unit. Xalan uses the Bean Scripting Fr
amework (BSF) to implement Java or script extensions, features multiple docu
ment output extensions, and we are working on data-binding extensions for SQ
L/JDBC and other data providers.
Xalan is currently available in Java, and available in Alpha form for C++.
Cocoon: XML-based web publishing
Cocoon is a powerful framework for XML web publishing which brings a whole
new world of abstraction and ease to consolidated web site creation and man
agement based on the XML paradigm and related technologies.
FOP: XSL Formatting Object processor in Java
FOP is the world's first print formatter driven by XSL formatting objects.
It is a Java 1.1 application that reads a formatting object tree and then t
urns it into a PDF document. The formatting object tree, can be in the form
of an XML document (output by an XSLT engine like Xalan) or can be passed in
memory as a DOM Document or (in the case of Xalan) SAX events.
Anyone Can Participate
The xml.apache.org Project is composed of developers from all around the w
orld, both individuals and engineers from major corporations. All interested
developers are welcome to join and participate. Learn more about how to get
involved.

--

钱五哥的主页: http://166.111.68.199/qlw/(朝九暮九)
清华社服镜像: http://166.111.14.195/qlw/(24H)

论理本当如此,然而也未必

※ 来源:·BBS 水木清华站 smth.org·[FROM: ibm-nt-server.c]
返回上一页 回到目录 回到页首 下一篇


Re: Apache XML project

 发信人: JoyKiller (都市里的黑衣人), 信区: XML
标 题: Re: Apache XML project
发信站: BBS 水木清华站 (Thu Apr 20 11:42:32 2000)

大家可以去APACHE的XML站点看看，很有收获的。
http://xml.apache.org
我就是用的XERCES和XALAN的。
比IBM，SUN的好多了。

【 在 qlw (钱五哥) 的大作中提到: 】
∶ The goals of the Apache XML Project project are:
∶ to provide commercial-quality standards-based XML
∶ solutions that are developed in an open and cooperative
∶ fashion,
∶ to provide feedback to standards bodies (such as IETF
∶ e projects
∶ The Apache XML Project project currently consists of
∶ five sub- projects, each focused on a different aspect
∶ of XML:
∶ Xerces - XML parsers in Java, C++ (with Perl and COM
∶ bindings)
∶ Xalan - XSLT stylesheet processors, in Java and C++
∶ Cocoon - XML-based web publishing, in Java
∶ FOP - XSL formatting objects, in Java
∶ Xang - Rapid development of dynamic server pages,
∶ in Java (coming soon!)
∶ Xerces: XML parsers in Java and C++ (plus Perl and COM)
∶ Xerces (named after the Xerces Blue butterfly)
∶ provides world-class XML parsing and generation.
∶ Fully-validating parsers are available for both
∶ Java and C++, implementing the W3C XML and DOM
∶ (Level 1 and 2) standards, as well as the defacto SAX
∶ (version 2) standard. The parsers are highly modular
∶ and configurable. Initial support for XML Schema
∶ (draft W3C standard) is also provided.
∶ A Perl wrapper is provided for the C++ version
∶ of Xerces, which allows access to a fully
∶ validating DOM XML parser from Perl. It also
∶ provides for full access to Unicode strings,
∶ since Unicode is a key part of the XML standard.
∶ A COM wrapper (also for Xerces-C) provides
∶ compatibility with the Microsoft MSXML parser.
∶ NEW: Source code for Crimson (from Sun)
∶ is available to look at from under the xml-contrib
∶ module. We're in the process of merging the best
∶ parts of Crimson into the Xerces-J code base.
∶ Please join us!
∶ Xalan: XSL stylesheet processors in Java & C++
∶ Xalan (named after a rare musical instrument) provides high-performance XS
∶ LT stylesheet processing. Xalan fully implements the W3C XSLT and XPath reco
∶ mmendations. The stylesheet processor is feature-rich and robust. The XPath
∶ Processor is useable as a stand-alone unit. Xalan uses the Bean Scripting Fr
∶ amework (BSF) to implement Java or script extensions, features multiple docu
∶ ment output extensions, and we are working on data-binding extensions for SQ
∶ L/JDBC and other data providers.
∶ Xalan is currently available in Java, and available in Alpha form for C++.
∶ Cocoon: XML-based web publishing
∶ Cocoon is a powerful framework for XML web publishing which brings a whole
∶ new world of abstraction and ease to consolidated web site creation and man
∶ agement based on the XML paradigm and related technologies.
∶ FOP: XSL Formatting Object processor in Java
∶ FOP is the world's first print formatter driven by XSL formatting objects.
∶ It is a Java 1.1 application that reads a formatting object tree and then t
∶ urns it into a PDF document. The formatting object tree, can be in the form
∶ of an XML document (output by an XSLT engine like Xalan) or can be passed in
∶ memory as a DOM Document or (in the case of Xalan) SAX events.
∶ Anyone Can Participate
∶ The xml.apache.org Project is composed of developers from all around the w
∶ orld, both individuals and engineers from major corporations. All interested
∶ developers are welcome to join and participate. Learn more about how to get
∶ involved.

--

宠辱不惊花开花落,
去留无意云卷云舒.

※ 来源:·BBS 水木清华站 smth.org·[FROM: 159.226.41.166]


Re: Apache XML project

 发信人: whily (云飞), 信区: XML
标 题: Re: Apache XML project
发信站: BBS 水木清华站 (Thu Apr 20 13:16:48 2000)

【 在 JoyKiller (都市里的黑衣人) 的大作中提到: 】
∶ 大家可以去APACHE的XML站点看看，很有收获的。
∶ http://xml.apache.org
∶ 我就是用的XERCES和XALAN的。
∶ 比IBM，SUN的好多了。

Xerces就是IBM的XML for Java, 而Xalan则是IBM的Lotus XSL。

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.204.5.130]


Re: Apache XML project

 发信人: shinewu (with fun), 信区: XML
标 题: Re: Apache XML project
发信站: BBS 水木清华站 (Thu Apr 20 15:42:40 2000)

【 在 JoyKiller (都市里的黑衣人) 的大作中提到: 】
∶ 大家可以去APACHE的XML站点看看，很有收获的。
∶ http://xml.apache.org
∶ 我就是用的XERCES和XALAN的。
∶ 比IBM，SUN的好多了。
ft
那两个玩艺就是IBM
拿出来的，只不过是apache.org
继续发展而已
好像一个是IBM的，一个是Lotus的

--
很久以来一直想劝自己戒网
直到有一天发现自己已经离不开网络
从那以后就告诫自己不要尝试远离网络
就好比鱼儿不要远离池塘一样

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.205.0.215]
上一篇 返回上一页 回到目录 回到页首


truebasic (追寻爱的小鸭), 信区: XML

 发信人: truebasic (追寻爱的小鸭), 信区: XML
标 题: XHTML标准发布了,和XML有什么差别的说?
发信站: BBS 水木清华站 (Wed Apr 26 19:48:07 2000)

先贴XHTML的规范,come from www.w3.org

table of contents
--------------------------------------------------------------------------------

XHTML? 1.0: The Extensible HyperText Markup Language
A Reformulation of HTML 4 in XML 1.0
W3C Recommendation 26 January 2000
This version:
http://www.w3.org/TR/2000/REC-xhtml1-20000126
(Postscript version, PDF version, ZIP archive, or Gzip'd TAR archive)
Latest version:
http://www.w3.org/TR/xhtml1
Previous version:
http://www.w3.org/TR/1999/PR-xhtml1-19991210
Authors:
See acknowledgements.
Copyright ?2000 W3C? (MIT, INRIA, Keio), All Rights Reserved. W3C liability, trademark, document use and software licensing rules apply.

--------------------------------------------------------------------------------

Abstract
This specification defines XHTML 1.0, a reformulation of HTML 4 as an XML 1.0 application, and three DTDs corresponding to the ones defined by HTML 4. The semantics of the elements and their attributes are defined in the W3C Recommendation for HTML 4.
These semantics provide the foundation for future extensibility of XHTML. Compatibility with existing HTML user agents is possible by following a small set of guidelines.

Status of this document
This section describes the status of this document at the time of its publication. Other documents may supersede this document. The latest status of this document series is maintained at the W3C.

This document has been reviewed by W3C Members and other interested parties and has been endorsed by the Director as a W3C Recommendation. It is a stable document and may be used as reference material or cited as a normative reference from another
document. W3C's role in making the Recommendation is to draw attention to the specification and to promote its widespread deployment. This enhances the functionality and interoperability of the Web.

This document has been produced as part of the W3C HTML Activity. The goals of the HTML Working Group (members only) are discussed in the HTML Working Group charter (members only).

A list of current W3C Recommendations and other technical documents can be found at http://www.w3.org/TR.

Public discussion on HTML features takes place on the mailing list www-html@w3.org (archive).

Please report errors in this document to www-html-editor@w3.org.

The list of known errors in this specification is available at http://www.w3.org/2000/01/REC-xhtml1-20000126-errata.

Contents
1. What is XHTML?
1.1 What is HTML 4?
1.2 What is XML?
1.3 Why the need for XHTML?
2. Definitions
2.1 Terminology
2.2 General Terms
3. Normative Definition of XHTML 1.0
3.1 Document Conformance
3.2 User Agent Conformance
4. Differences with HTML 4
5. Compatibility Issues
5.1 Internet Media Types
6. Future Directions
6.1 Modularizing HTML
6.2 Subsets and Extensibility
6.3 Document Profiles
Appendix A. DTDs
Appendix B. Element Prohibitions
Appendix C. HTML Compatibility Guidelines
Appendix D. Acknowledgements
Appendix E. References
1. What is XHTML?
XHTML is a family of current and future document types and modules that reproduce, subset, and extend HTML 4 [HTML]. XHTML family document types are XML based, and ultimately are designed to work in conjunction with XML-based user agents. The details
of this family and its evolution are discussed in more detail in the section on Future Directions.

XHTML 1.0 (this specification) is the first document type in the XHTML family. It is a reformulation of the three HTML 4 document types as applications of XML 1.0 [XML]. It is intended to be used as a language for content that is both XML-conforming
and, if some simple guidelines are followed, operates in HTML 4 conforming user agents. Developers who migrate their content to XHTML 1.0 will realize the following benefits:

XHTML documents are XML conforming. As such, they are readily viewed, edited, and validated with standard XML tools.
XHTML documents can be written to to operate as well or better than they did before in existing HTML 4-conforming user agents as well as in new, XHTML 1.0 conforming user agents.
XHTML documents can utilize applications (e.g. scripts and applets) that rely upon either the HTML Document Object Model or the XML Document Object Model [DOM].
As the XHTML family evolves, documents conforming to XHTML 1.0 will be more likely to interoperate within and among various XHTML environments.
The XHTML family is the next step in the evolution of the Internet. By migrating to XHTML today, content developers can enter the XML world with all of its attendant benefits, while still remaining confident in their content's backward and future
compatibility.

1.1 What is HTML 4?
HTML 4 [HTML] is an SGML (Standard Generalized Markup Language) application conforming to International Standard ISO 8879, and is widely regarded as the standard publishing language of the World Wide Web.

SGML is a language for describing markup languages, particularly those used in electronic document exchange, document management, and document publishing. HTML is an example of a language defined in SGML.

SGML has been around since the middle 1980's and has remained quite stable. Much of this stability stems from the fact that the language is both feature-rich and flexible. This flexibility, however, comes at a price, and that price is a level of
complexity that has inhibited its adoption in a diversity of environments, including the World Wide Web.

HTML, as originally conceived, was to be a language for the exchange of scientific and other technical documents, suitable for use by non-document specialists. HTML addressed the problem of SGML complexity by specifying a small set of structural and
semantic tags suitable for authoring relatively simple documents. In addition to simplifying the document structure, HTML added support for hypertext. Multimedia capabilities were added later.

In a remarkably short space of time, HTML became wildly popular and rapidly outgrew its original purpose. Since HTML's inception, there has been rapid invention of new elements for use within HTML (as a standard) and for adapting HTML to vertical,
highly specialized, markets. This plethora of new elements has led to compatibility problems for documents across different platforms.

As the heterogeneity of both software and platforms rapidly proliferate, it is clear that the suitability of 'classic' HTML 4 for use on these platforms is somewhat limited.

1.2 What is XML?
XML? is the shorthand for Extensible Markup Language, and is an acronym of Extensible Markup Language [XML].

XML was conceived as a means of regaining the power and flexibility of SGML without most of its complexity. Although a restricted form of SGML, XML nonetheless preserves most of SGML's power and richness, and yet still retains all of SGML's commonly
used features.

While retaining these beneficial features, XML removes many of the more complex features of SGML that make the authoring and design of suitable software both difficult and costly.

1.3 Why the need for XHTML?
The benefits of migrating to XHTML 1.0 are described above. Some of the benefits of migrating to XHTML in general are:

Document developers and user agent designers are constantly discovering new ways to express their ideas through new markup. In XML, it is relatively easy to introduce new elements or additional element attributes. The XHTML family is designed to
accommodate these extensions through XHTML modules and techniques for developing new XHTML-conforming modules (described in the forthcoming XHTML Modularization specification). These modules will permit the combination of existing and new feature sets
when developing content and when designing new user agents.
Alternate ways of accessing the Internet are constantly being introduced. Some estimates indicate that by the year 2002, 75% of Internet document viewing will be carried out on these alternate platforms. The XHTML family is designed with general user
agent interoperability in mind. Through a new user agent and document profiling mechanism, servers, proxies, and user agents will be able to perform best effort content transformation. Ultimately, it will be possible to develop XHTML-conforming content
that is usable by any XHTML-conforming user agent.
2. Definitions
2.1 Terminology
The following terms are used in this specification. These terms extend the definitions in [RFC2119] in ways based upon similar definitions in ISO/IEC 9945-1:1990 [POSIX.1]:

Implementation-defined
A value or behavior is implementation-defined when it is left to the implementation to define [and document] the corresponding requirements for correct document construction.
May
With respect to implementations, the word "may" is to be interpreted as an optional feature that is not required in this specification but can be provided. With respect to Document Conformance, the word "may" means that the optional feature must not be
used. The term "optional" has the same definition as "may".
Must
In this specification, the word "must" is to be interpreted as a mandatory requirement on the implementation or on Strictly Conforming XHTML Documents, depending upon the context. The term "shall" has the same definition as "must".
Reserved
A value or behavior is unspecified, but it is not allowed to be used by Conforming Documents nor to be supported by a Conforming User Agents.
Should
With respect to implementations, the word "should" is to be interpreted as an implementation recommendation, but not a requirement. With respect to documents, the word "should" is to be interpreted as recommended programming practice for documents and
a requirement for Strictly Conforming XHTML Documents.
Supported
Certain facilities in this specification are optional. If a facility is supported, it behaves as specified by this specification.
Unspecified
When a value or behavior is unspecified, the specification defines no portability requirements for a facility on an implementation even when faced with a document that uses the facility. A document that requires specific behavior in such an instance,
rather than tolerating any behavior when using that facility, is not a Strictly Conforming XHTML Document.
2.2 General Terms
Attribute
An attribute is a parameter to an element declared in the DTD. An attribute's type and value range, including a possible default value, are defined in the DTD.
DTD
A DTD, or document type definition, is a collection of XML declarations that, as a collection, defines the legal structure, elements, and attributes that are available for use in a document that complies to the DTD.
Document
A document is a stream of data that, after being combined with any other streams it references, is structured such that it holds information contained within elements that are organized as defined in the associated DTD. See Document Conformance for
more information.
Element
An element is a document structuring unit declared in the DTD. The element's content model is defined in the DTD, and additional semantics may be defined in the prose description of the element.
Facilities
Functionality includes elements, attributes, and the semantics associated with those elements and attributes. An implementation supporting that functionality is said to provide the necessary facilities.
Implementation
An implementation is a system that provides collection of facilities and services that supports this specification. See User Agent Conformance for more information.
Parsing
Parsing is the act whereby a document is scanned, and the information contained within the document is filtered into the context of the elements in which the information is structured.
Rendering
Rendering is the act whereby the information in a document is presented. This presentation is done in the form most appropriate to the environment (e.g. aurally, visually, in print).
User Agent
A user agent is an implementation that retrieves and processes XHTML documents. See User Agent Conformance for more information.
Validation
Validation is a process whereby documents are verified against the associated DTD, ensuring that the structure, use of elements, and use of attributes are consistent with the definitions in the DTD.
Well-formed
A document is well-formed when it is structured according to the rules defined in Section 2.1 of the XML 1.0 Recommendation [XML]. Basically, this definition states that elements, delimited by their start and end tags, are nested properly within one
another.
3. Normative Definition of XHTML 1.0
3.1 Document Conformance
This version of XHTML provides a definition of strictly conforming XHTML documents, which are restricted to tags and attributes from the XHTML namespace. See Section 3.1.2 for information on using XHTML with other namespaces, for instance, to include
metadata expressed in RDF within XHTML documents.

3.1.1 Strictly Conforming Documents
A Strictly Conforming XHTML Document is a document that requires only the facilities described as mandatory in this specification. Such a document must meet all of the following criteria:

It must validate against one of the three DTDs found in Appendix A.

The root element of the document must be <html>.

The root element of the document must designate the XHTML namespace using the xmlns attribute [XMLNAMES]. The namespace for XHTML is defined to be http://www.w3.org/1999/xhtml.

There must be a DOCTYPE declaration in the document prior to the root element. The public identifier included in the DOCTYPE declaration must reference one of the three DTDs found in Appendix A using the respective Formal Public Identifier. The system
identifier may be changed to reflect local system conventions.

<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"DTD/xhtml1-strict.dtd">

<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"DTD/xhtml1-transitional.dtd">

<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
"DTD/xhtml1-frameset.dtd">

Here is an example of a minimal XHTML document.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>Virtual Library</title>
</head>
<body>
<p>Moved to <a href="vlib.org.

">http://vlib.org/">vlib.org.

</body>
</html>
Note that in this example, the XML declaration is included. An XML declaration like the one above is not required in all XML documents. XHTML document authors are strongly encouraged to use XML declarations in all their documents. Such a declaration is
required when the character encoding of the document is other than the default UTF-8 or UTF-16.

3.1.2 Using XHTML with other namespaces
The XHTML namespace may be used with other XML namespaces as per [XMLNAMES], although such documents are not strictly conforming XHTML 1.0 documents as defined above. Future work by W3C will address ways to specify conformance for documents involving
multiple namespaces.

The following example shows the way in which XHTML 1.0 could be used in conjunction with the MathML Recommendation:

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>A Math Example</title>
</head>
<body>
<p>The following is MathML markup:</p>
<math xmlns="">http://www.w3.org/1998/Math/MathML">
<apply> <log/>
<logbase>
<cn> 3 </cn>
</logbase>
<ci> x </ci>
</apply>
</math>
</body>
</html>

The following example shows the way in which XHTML 1.0 markup could be incorporated into another XML namespace:

<?xml version="1.0" encoding="UTF-8"?>
<!-- initially, the default namespace is "books" -->
<book xmlns='urn:loc.gov:books'
xmlns:isbn='urn:ISBN:0-395-36341-6' xml:lang="en" lang="en">
<title>Cheaper by the Dozen</title>
<isbn:number>1568491379</isbn:number>
<notes>
<!-- make HTML the default namespace for a hypertext commentary -->
<p xmlns='http://www.w3.org/1999/xhtml'>
This is also available <a href="online.">http://www.w3.org/">online.
</p>
</notes>
</book>

3.2 User Agent Conformance
A conforming user agent must meet all of the following criteria:

In order to be consistent with the XML 1.0 Recommendation [XML], the user agent must parse and evaluate an XHTML document for well-formedness. If the user agent claims to be a validating user agent, it must also validate documents against their
referenced DTDs according to [XML].
When the user agent claims to support facilities defined within this specification or required by this specification through normative reference, it must do so in ways consistent with the facilities' definition.
When a user agent processes an XHTML document as generic XML, it shall only recognize attributes of type ID (e.g. the id attribute on most XHTML elements) as fragment identifiers.
If a user agent encounters an element it does not recognize, it must render the element's content.
If a user agent encounters an attribute it does not recognize, it must ignore the entire attribute specification (i.e., the attribute and its value).
If a user agent encounters an attribute value it doesn't recognize, it must use the default attribute value.
If it encounters an entity reference (other than one of the predefined entities) for which the User Agent has processed no declaration (which could happen if the declaration is in the external subset which the User Agent hasn't read), the entity
reference should be rendered as the characters (starting with the ampersand and ending with the semi-colon) that make up the entity reference.
When rendering content, User Agents that encounter characters or character entity references that are recognized but not renderable should display the document in such a way that it is obvious to the user that normal rendering has not taken place.
The following characters are defined in [XML] as whitespace characters:
Space (&#x0020;)
Tab (&#x0009;)
Carriage return (&#x000D;)
Line feed (&#x000A;)
The XML processor normalizes different system's line end codes into one single line-feed character, that is passed up to the application. The XHTML user agent in addition, must treat the following characters as whitespace:

Form feed (&#x000C;)
Zero-width space (&#x200B;)
In elements where the 'xml:space' attribute is set to 'preserve', the user agent must leave all whitespace characters intact (with the exception of leading and trailing whitespace characters, which should be removed). Otherwise, whitespace is handled
according to the following rules:

All whitespace surrounding block elements should be removed.
Comments are removed entirely and do not affect whitespace handling. One whitespace character on either side of a comment is treated as two white space characters.
Leading and trailing whitespace inside a block element must be removed.
Line feed characters within a block element must be converted into a space (except when the 'xml:space' attribute is set to 'preserve').
A sequence of white space characters must be reduced to a single space character (except when the 'xml:space' attribute is set to 'preserve').
With regard to rendition, the User Agent should render the content in a manner appropriate to the language in which the content is written. In languages whose primary script is Latinate, the ASCII space character is typically used to encode both
grammatical word boundaries and typographic whitespace; in languages whose script is related to Nagari (e.g., Sanskrit, Thai, etc.), grammatical boundaries may be encoded using the ZW 'space' character, but will not typically be represented by
typographic whitespace in rendered output; languages using Arabiform scripts may encode typographic whitespace using a space character, but may also use the ZW space character to delimit 'internal' grammatical boundaries (what look like words in Arabic
to an English eye frequently encode several words, e.g. 'kitAbuhum' = 'kitAbu-hum' = 'book them' == their book); and languages in the Chinese script tradition typically neither encode such delimiters nor use typographic whitespace in this way.
Whitespace in attribute values is processed according to [XML].

4. Differences with HTML 4
Due to the fact that XHTML is an XML application, certain practices that were perfectly legal in SGML-based HTML 4 [HTML] must be changed.

4.1 Documents must be well-formed
Well-formedness is a new concept introduced by [XML]. Essentially this means that all elements must either have closing tags or be written in a special form (as described below), and that all the elements must nest.

Although overlapping is illegal in SGML, it was widely tolerated in existing browsers.

CORRECT: nested elements.

<p>here is an emphasized <em>paragraph</em>.</p>

INCORRECT: overlapping elements

<p>here is an emphasized <em>paragraph.</p></em>

4.2 Element and attribute names must be in lower case
XHTML documents must use lower case for all HTML element and attribute names. This difference is necessary because XML is case-sensitive e.g. <li> and <LI> are different tags.

4.3 For non-empty elements, end tags are required
In SGML-based HTML 4 certain elements were permitted to omit the end tag; with the elements that followed implying closure. This omission is not permitted in XML-based XHTML. All elements other than those declared in the DTD as EMPTY must have an end
tag.

CORRECT: terminated elements

<p>here is a paragraph.</p><p>here is another paragraph.</p>

INCORRECT: unterminated elements

<p>here is a paragraph.<p>here is another paragraph.

4.4 Attribute values must always be quoted
All attribute values must be quoted, even those which appear to be numeric.

CORRECT: quoted attribute values

<table rows="3">

INCORRECT: unquoted attribute values

<table rows=3>

4.5 Attribute Minimization
XML does not support attribute minimization. Attribute-value pairs must be written in full. Attribute names such as compact and checked cannot occur in elements without their value being specified.

CORRECT: unminimized attributes

<dl compact="compact">

INCORRECT: minimized attributes

<dl compact>

4.6 Empty Elements
Empty elements must either have an end tag or the start tag must end with />. For instance, <br/> or <hr></hr>. See HTML Compatibility Guidelines for information on ways to ensure this is backward compatible with HTML 4 user agents.

CORRECT: terminated empty tags

<br/><hr/>

INCORRECT: unterminated empty tags

<br><hr>

4.7 Whitespace handling in attribute values
In attribute values, user agents will strip leading and trailing whitespace from attribute values and map sequences of one or more whitespace characters (including line breaks) to a single inter-word space (an ASCII space character for western
scripts). See Section 3.3.3 of [XML].

4.8 Script and Style elements
In XHTML, the script and style elements are declared as having #PCDATA content. As a result, < and & will be treated as the start of markup, and entities such as &lt; and &amp; will be recognized as entity references by the XML processor to < and &
respectively. Wrapping the content of the script or style element within a CDATA marked section avoids the expansion of these entities.

<script>
<![CDATA[
... unescaped script content ...
]]>
</script>

CDATA sections are recognized by the XML processor and appear as nodes in the Document Object Model, see Section 1.3 of the DOM Level 1 Recommendation [DOM].

An alternative is to use external script and style documents.

4.9 SGML exclusions
SGML gives the writer of a DTD the ability to exclude specific elements from being contained within an element. Such prohibitions (called "exclusions") are not possible in XML.

For example, the HTML 4 Strict DTD forbids the nesting of an 'a' element within another 'a' element to any descendant depth. It is not possible to spell out such prohibitions in XML. Even though these prohibitions cannot be defined in the DTD, certain
elements should not be nested. A summary of such elements and the elements that should not be nested in them is found in the normative Appendix B.

4.10 The elements with 'id' and 'name' attributes
HTML 4 defined the name attribute for the elements a, applet, form, frame, iframe, img, and map. HTML 4 also introduced the id attribute. Both of these attributes are designed to be used as fragment identifiers.

In XML, fragment identifiers are of type ID, and there can only be a single attribute of type ID per element. Therefore, in XHTML 1.0 the id attribute is defined to be of type ID. In order to ensure that XHTML 1.0 documents are well-structured XML
documents, XHTML 1.0 documents MUST use the id attribute when defining fragment identifiers, even on elements that historically have also had a name attribute. See the HTML Compatibility Guidelines for information on ensuring such anchors are backwards
compatible when serving XHTML documents as media type text/html.

Note that in XHTML 1.0, the name attribute of these elements is formally deprecated, and will be removed in a subsequent version of XHTML.

5. Compatibility Issues
Although there is no requirement for XHTML 1.0 documents to be compatible with existing user agents, in practice this is easy to accomplish. Guidelines for creating compatible documents can be found in Appendix C.

5.1 Internet Medition of this recommendation, the general recommended MIME labeling for XML-based applications has yet to be resolved.

However, XHTML Documents which follow the guidelines set forth in Appendix C, "HTML Compatibility Guidelines" may be labeled with the Internet Media Type "text/html", as they are compatible with most HTML browsers. This document makes no recommendation
about MIME labeling of other XHTML documents.

6. Future Directions
XHTML 1.0 provides the basis for a family of document types that will extend and subset XHTML, in order to support a wide range of new devices and applications, by defining modules and specifying a mechanism for combining these modules. This mechanism
will enable the extension and sub-setting of XHTML 1.0 in a uniform way through the definition of new modules.

6.1 Modularizing HTML
As the use of XHTML moves from the traditional desktop user agents to other platforms, it is clear that not all of the XHTML elements will be required on all platforms. For example a hand held device or a cell-phone may only support a subset of XHTML
elements.

The process of modularization breaks XHTML up into a series of smaller element sets. These elements can then be recombined to meet the needs of different communities.

These modules will be defined in a later W3C document.

6.2 Subsets and Extensibility
Modularization brings with it several advantages:

It provides a formal mechanism for sub-setting XHTML.

It provides a formal mechanision between document types.

It promotes the reuse of modules in new document types.

6.3 Document Profiles profile provides a basis for inte
A document profile specifies the syntax and semantics oroperability guarantees. The document profile specifies the facilities required to process documents of that type, e.g. which image formats can be used, levels of scripting, style sheet support,
and so on.

For product designers this enables various groups to define their own standard profile.

For authors this will obviate the need to write several different versions of documents for different clients.

For special groups such as chemists, medical doctors, or mathematicians this allows a special profile to be built using standard HTML elements plus a group of elements geared to the specialist's needs.

Appendix A. DTDs
This appendix is normative.

These DTDs and entity sets form a normative part of this specification. The complete set of DTD files together with an XML declaration and SGML Open Catalog is included in the zip file for this specification.

A.1 Document Type Definitions
These DTDs approximate the HTML 4 DTDs. It is likely that when the DTDs are modularized, a method of DTD construf
a
set
of
documents.
Conformance
to
a
documentm
for
extending
XHTML.

It simplifies the transformata
Type
As of the publica

--
--------
没有网络的人生
就象鱼儿脱离了水一样
我决定从此不戒网
把你当作我的一半，终生守候

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.195.140.29]


bizTalk XML FrameWork intro

 发信人: lanyjie (收复台湾), 信区: XML
标 题: bizTalk XML FrameWork intro
发信站: BBS 水木清华站 (Mon May 15 23:38:24 2000)

BizTalk框架概述

关键词：XML

BizTalk框架概述

Microsoft? BizTalk? 框架是用于应用集成和电子商务的XML框架. 它包括一个设
计框架
来实现XML 大纲（schema） 和一套在应用程序间传递信息之用的XML标签.
Microsoft
公司以及其它软件企业和工业标准实体将通过BizTalk 框架以统一的方式来产生
XML.
BizTalk框架本身并不是标准，XML才是标准. BizTalk框架的目标是推动XML的迅速
普及
和应用.
BizTalk框架大纲&#0;以XML形式表达的商业文档和消息 &#0;将在BizTalk.Org网站
注册
和存档. 任何个人或组织都能下载框架用以具体实现或者向网站递交XML 大纲. 只
要该
大纲通过了认证测试，它们就成为了有效的BizTalk框架大纲. BizTalk.Org网站将
提供
自动递交和认证处理.
一旦大纲为公共的使用而公布，个人或组织在其应用中都可以从BizTalk.Org 网站
免费
使用XML大纲.
商家要在贸易伙伴间进行专用，可以自由选择在BizTalk.Org 网站中的安全区域发
布其
大纲。由软件企业、终端用户和业界标准实体组成的领导委员会将指导BizTalk.
Org网站
的组织和管理.
BizTalk框架大纲将基于W3C的XML 大纲(XML Schema)标准，这些标准已正式通过.

优点

BizTalk框架具有以下优点:

XML统一实现的途径

许多企业对XML表现了浓厚的兴趣.XML是如此的灵活，人们对它有着近乎于ACSII字
符的
浓厚兴趣.XML使改进成为可能但缺乏统一的框架就难以实现. BizTalk框架实现了
一套跪
可能使大量用户可以以通用的方式使用XML. 而且,
由于各公司运用XML逐渐由数据建模转移到启动自动商务处理,
BizTalk框架消息元素定义了XML元素、属性和标签(tag)的核心集,它们允许发展和
丰富
被优化以理解BizTalk框架的消息传递技术.这之所以重要是因为XML成为了结合各
系统的
在线交易的基础，不必去寻求通用的API或实现的平台.

大纲间更便捷的映射

通过将表现商业交换的过程以一致和可扩展的方式形式化，BizTalk框架使得独立
软件供
应商(ISV)和开发商更方便地实现不同商业过程间的映射, 采用诸如XML这样开放的
标准
能使电子交换在广泛的工业界被更快地采纳.

服务于软件供应商的设计目标

以一致的形式建立大量的大纲, BizTalk框架为应用工具和基础软件供应商提供了
明确的
设计目标，帮助建立下一代电子商务和应用集成产品.

服务于标准实体的框架

BizTalk框架为从现存的业界交换标准集合转移到XML提供了平台.特别在EDI领域作
用显
著.

BizTalk 大纲标准库

BizTalk框架的网站将成为工业团体和开发商发布其大纲的交互的场所.基于该发布
组织
的规定，网站允许公共和私有的内容发表. 一旦BizTalk框架大纲被接受并发布,
标准库
将为BizTalk框架的采纳和修改提供版本化和专业化支持. 标准库将支持对大纲的
动态检
测,
处理和可视化与BizTalk框架提供的任何版本大纲的映射.

展示开发XML互换的最佳实践 比起系统编程和运用XML，许多参与商业交换标准化
的组
织更善于建立商业过程的模型.这些组织可以来BizTalk框架网站探询实现他们自己
的大
纲的最佳实践或寻找已有的适合其应用的大纲.

微软自然将支持BizTalk框架，也将会在BizTalk框架网站中发布大纲以作公用.其
它支
持BizTalk框架的软件供应商也将作同样的承诺.

BizTalk框架结构原则

BizTalk框架是为推动基于XML藉由数据交换标准的应用集成和电子商务而设计的.
应用程
序被假设为明晰的实体(entities),应用集成采用松散连接和消息传递的途径.要在
两个
应用程序间交换由BizTalk框架格式化的XML消息，不需要COM、编程语言、网络协
议、
数据库或操作系统.
两程序仅仅需要能格式化、传输、接收和使用标准化过的XML消息.

消息是BizTalk框架具备卓越贡献的基础. 两个或多个应用程序间的消息流是在商
务处
理层次通过定义松散连接和基于请求的通信处理而集成应用的一种方式.由于许多
商务
处理涉及一方应另一方的请求而提供服务,
从消息到请求的映射是自然的事.产生更紧密集成命令，如那些基于特殊编程语言
或共享?nbsp;
机“平台”的指令的途径适合单机上紧凑连接的程序间或在可控环境中，但它没有
充分支
持分布的、松散结合的、可扩展的商务处理集成.
由于允许灵活多样的实现，一具有开放、可扩展格式的基于XML消息系统抓住了商
务通信
的本质.

微软期望采用BizTalk框架实现的绝大部分互换(在商贸合作伙伴或应用间的XML文
档或消
息的交换)将使用简单的HTTP传输协议，但也可以采用其它的传输，如FTP和消息排
队技术
（包括IBM的MQSeries和Microsoft Message Queue Server）.

由于当前只有少数应用软件提供对XML的天然支持,微软希望商家和软件企业分层实
现适配
接口，能使它们现有应用参与第一代的BizTalk框架交换.对于许多的应用,这些适
配接口
对现有的函数进行调用,转译为XML的文档,然后路由至目标终点,可能是一商贸伙伴
或在
企业Intranet中的另一应?nbsp;
?

除非应用程序具有了对XML的自然支持，否则BizTalk框架交换的这些类型将需要层
次化
的软件将自然数据类型转换为XML再对XML文档进行路由.BizTalk框架也将提供对大
纲的
支持，使其能描述涉及多文档的更复杂的交换.用户终端企业已经在内部实现了这
些XML
文档类型的转换器和路由器.?nbsp;
⑷碚诳izTalk服务器(BizTalk Server),它能自动调用在BizTalk框架互换
(interchange)中必需的函数.今天，象webMethods和
DataChannel等公司已经有了潜在支持BizTalk框架互换的软件产品.重要之处在于
：
BizTalk框架互换(interchange)不需要来自任何个别的软件供应商的任何特定软件
.

由于当前只有少数应用软件提供对XML的天然支持,微软希望商家和软件企业分层实
现适配
接口，能使它们现有应用参与第一代的BizTalk框架交换.对于许多的应用,这些适
配接口
对现有的函数进行调用,转译为XML的文档,然后路由至目标终点,可能是一商贸伙伴
或在
企业Intranet中的另一应?nbsp;
?

除非应用程序具有了对XML的自然支持，否则BizTalk框架交换的这些类型将需要层
次化
的软件将自然数据类型转换为XML再对XML文档进行路由.BizTalk框架也将提供对大
纲的
支持，使其能描述涉及多文档的更复杂的交换.用户终端企业已经在内部实现了这
些XML
文档类型的转换器和路由器.?nbsp;
⑷碚诳izTalk服务器(BizTalk Server),它能自动调用在BizTalk框架互换
(interchange)中必需的函数.今天，象webMethods和
DataChannel等公司已经有了潜在支持BizTalk框架互换的软件产品.重要之处在于
：
BizTalk框架互换(interchange)不需要来自任何个别的软件供应商的任何特定软件
.

--
※ 修改:．henry 于 Jan 20 10:26:05 修改本文．[FROM: ]
※ 来源:．PKU BBS IBMS390.PKU.EDU.CN．[FROM: ]

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 162.105.40.80]


Soap规范V1

 发信人: huangcyy (受伤的心), 信区: XML
标 题: Soap规范V1
发信站: BBS 水木清华站 (Mon May 22 20:13:51 2000)

SOAP: Simple Object Access Protocol Specification
----------------------------------------------------------------------------
----
December 10, 1999
INTERNET-DRAFT
Category: Informational
D. Box (DevelopMentor), G. Kakivaya (Microsoft Corporation), A. Layman (Micr
osoft Corporation), S. Thatte (Microsoft Corporation), and D. Winer (Userlan
d Software)
Status of this Memo
This document is an Internet-Draft and is in full conformance with all provi
sions of Section 10 of RFC2026 [13].
Internet-Drafts are working documents of the Internet Engineering Task Force
(IETF), its areas, and its working groups. Note that other groups may also
distribute working documents as Internet-Drafts. Internet-Drafts are draft d
ocuments valid for a maximum of six months and may be updated, replaced, or
obsoleted by other documents at any time. It is inappropriate to use Interne
t-Drafts as reference material or to cite them other than as "work in progre
ss."
The list of current Internet-Drafts can be accessed at http://www.ietf.org/i
etf/1id-abstracts.txt.
The list of Internet-Draft Shadow Directories can be accessed at http://www.
ietf.org/shadow.html.

1. Abstract

SOAP defines an RPC mechanism using XML for client/server interaction across
a network by using the following mechanisms:
HTTP as the base transport.
XML documents for encoding of invocation requests and responses.

2. Conventions Used in this Document

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD"
, "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to
be interpreted as described in RFC-2119 [11].
The namespace prefix "SOAP" is used in this document to represent the prefix
that actually appears in the XML instance and is associated with the SOAP n
amespace URI "urn:schemas-xmlsoap-org:soap.v1". The prefix "xsd" represents
the prefix that is associated with the XML Schemas Specification URI [12].
Namespace URIs such of the general form "some-URI" represent some applicatio
n-dependent or context-dependent URI.

3. Introduction

SOAP defines an "XML-RPC" protocol for client-server interaction across a ne
twork by using the following mechanisms:
HTTP as the base transport.
XML documents for encoding of invocation requests and responses.
SOAP is both low-entry and high-function, capable of use for simple, statele
ss, remote procedure calls as well as rich object systems.
SOAP works with today's deployed World Wide Web and provides extensibility m
echanisms for future enhancements. For example, SOAP supports submitting inv
ocations using both POST and M-POST.

3.1. Goals

Provide a standard object invocation protocol built on Internet standards, u
sing HTTP as the transport and XML for data encoding.
Create an extensible protocol and payload format that can evolve.

3.2. Non-Goals

Define all aspects of a distributed object system, including the following:
Distributed garbage collection
Bi-directional HTTP communications
Boxcarring or pipelining of messages
Objects-by-reference (which requires distributed garbage collection and bi-d
irectional HTTP)
Activation (which requires objects-by-reference)

3.3. Examples of SOAP Calls

The call is to a StockQuote server, and the method is GetLastTradePrice. The
method takes one string parameter, ticker, and returns a float.
It uses the SOAP namespace to disambiguate SOAP keywords in the payload and
a method namespace to disambiguate method keywords in the payload.
The root Envelope element tag name is used to disambiguate SOAP XML encoding
s.

3.3.1. Call

Example 1
Following is an example of the SOAP encoding required to make this method ca
ll. This example uses the familiar HTTP verb POST. SOAP also supports the us
e of the HTTP verb M-POST for extensibility. See section 6.1 for more inform
ation on M-POST.
POST /StockQuote HTTP/1.1
Host: www.stockquoteserver.com
Content-Type: text/xml
Content-Length: nnnn
SOAPMethodName: Some-Namespace-URI#GetLastTradePrice
<SOAP:Envelope xmlns:SOAP="urn:schemas-xmlsoap-org:soap.v1">
<SOAP:Body>
<m:GetLastTradePrice
xmlns:m="Some-Namespace-URI">
<symbol>DIS</symbol>
</m:GetLastTradePrice>
</SOAP:Body>
</SOAP:Envelope>
3.3.2. Response
Example 2
Following is the return message containing the HTTP headers and XML body:
HTTP/1.1 200 OK
Content-Type: text/xml
Content-Length: nnnn
<SOAP:Envelope xmlns:SOAP="urn:schemas-xmlsoap-org:soap.v1">
<SOAP:Body>
<m:GetLastTradePriceResponse xmlns:m="Some-Namespace-URI">
<return>34.5</return>
</m:GetLastTradePriceResponse>
</SOAP:Body>
</SOAP:Envelope>
4. Relation to HTTP
In SOAP, the mechanism used for all communication is HTTP [1]. A central des
ign goal of SOAP is that it be usable strictly on top of today's deployed Wo
rld Wide Web infrastructure. That means SOAP has to work amid the various le
vels of HTTP implementation, the active use of firewalls and proxies, and so
on. Some aspects of SOAP, such as the permitted use of HTTP methods beyond
those of classic HTTP, are designed to anticipate, and thus make use of, som
e evolution and improvement in this base, but nothing in SOAP can require su
ch fundamental changes in order for SOAP to function.
SOAP uses the Content-Type of "text/xml" to specify the body of the HTTP req
uest containing an XML-encoded method call.
To disambiguate the headers it adds to HTTP, SOAP permits use of the HTTP Ex
tension Framework specification [2].
Unless otherwise indicated in this document, SOAP is to adhere to existing p
ractices with respect to the handling of HTTP requests and responses. Specif
ically, this includes the following:
Redirection
Caching
Connection management
Support for access authentication and security

5. Relation to XML

XML is used to encode the call and response bodies. See [3] for more informa
tion on XML.
All protocol tags SHOULD be scoped to the SOAP namespace. The sender SHOULD
include namespaces in SOAP elements and attributes. The receiver MUST correc
tly process SOAP payloads that have namespaces; the receiver MUST return an
"Invalid Request" fault for requests that have incorrect namespaces. The rec
eiver MAY also process SOAP payloads without namespaces as though they had t
he correct namespaces.
The SOAP namespace has the proposed value "urn:schemas-xmlsoap-org:soap.v1".
See [6] for more information on XML namespaces.
No XML document forming the HTTP request of a SOAP invocation may require th
e use of an XML DTD.
SOAP uses the ID attribute "id" to specify the unique identifier of an encod
ed element. SOAP uses the attribute "href" to specify a reference to that va
lue, in a manner conforming to the XML Linking Language specification workin
g draft [9].
It is worth noting that the rules governing XML payload format in SOAP are e
ntirely independent of the fact that the payload is carried over an HTTP tra
nsport.

6. Method Invocation

A method invocation is performed by creating the HTTP request header and bod
y and processing the returned response header and body. The request and resp
onse headers consist of standard and extended HTTP headers.
The following sections will cover the use of standard HTTP headers and the d
efinition of extended HTTP headers.

6.1. HTTP Verb Rules

SOAP allows two verb options within the Call HTTP header: POST or M-POST.
The verb M-POST is an extension verb based on in the HTTP Extension Framewor
k specification [2]. A SOAP invocation MUST first try the invocation by usin
g POST.
If the POST invocation fails, it SHOULD retry using the HTTP method M-POST.
The details of this mechanism are provided below. The purpose of supporting
this extended invocation mechanism in SOAP is to provide a mechanism to unam
biguously add headers to the HTTP protocol.

6.2. Using POST vs. M-POST

Since a design goal of the use of M-POST is to provide Internet firewalls an
d proxies greater administrative flexibility, careful attention must be paid
as to when a SOAP client uses the POST method vs. the M-POST method. The ru
les are as follows:
When carrying out an invocation, a SOAP client MUST first try the invocation
using the POST invocation style.
If that POST invocation fails with an HTTP status of "405 Method Not Allowed
" the client SHOULD retry the request using the M-POST invocation style. If
that M-POST invocation fails with an HTTP status of "501 Not Implemented" or
"510 Not Extended", the client SHOULD fail the request. If any other HTTP e
rror is returned, it SHOULD be processed according to the HTTP specification
.
Given this algorithm, firewalls can effectively force the use of M-POST for
SOAP invocations by prohibiting POST invocations of Content-Type "text/xml"
containing the HTTP header SOAPMethodName.

6.3. Method Invocation HTTP Headers

The payload and Content-Type of a method call are identical to a method resp
onse except in the following circumstances:
The method call SHOULD contain additional HTTP header fields in the request:

If using the M-POST verb, a mandatory extension declaration MUST be present
that refers to the namespace "urn:schemas-xmlsoap-org:soap.v1". For the purp
oses of this section, suppose that said declaration chooses to map the names
pace to the header-prefix "01". If the POST verb is used, the namespace head
er-prefix is not used. For example, the SOAPMethodName header introduced by
SOAP would have an M-POST value of "01-SOAPMethodName" and a POST value of "
SOAPMethodName".
The request SHOULD include a header "SOAPMethodName" whose value indicates t
he method to be invoked on the target. The value consists of a URI followed
by a "#", followed by a method name (which MUST not include the "#" characte
r). The URI used for the interface MUST match the implied or specified names
pace qualification of the method name element in the SOAP:Body part of the p
ayload. For example:
SOAPMethodName: http://electrocommerce.org/abc#MyMethod
The server MUST return an "Invalid Request" SOAP:Fault if the required HTTP
headers are missing or does not match the payload exactly. Match means the U
RI and method name in the HTTP header exactly match the namespace URI AND Lo
calPart of the first element in the SOAP:Body.

6.4. Method Invocation Body

A SOAP method invocation consists of a method call and optionally a method r
esponse. The method call and method response are HTTP request and response,
respectively, whose content is an XML document that consists of the root, an
optional header, and mandatory body elements. This XML document is referred
to as SOAP payload in the rest of this specification.
The SOAP payload is defined as follows:
The SOAP root element is the top element in the XML tree.
The SOAP payload headers contain additional information that must travel wit
h the call.
The method request is represented as an XML element with additional elements
for parameters. It is the first child of the SOAP:Body element.
The response is the return value or error/exception that is passed back to t
he client.
The encoding rules are as follows:
Root element
The element tag is "SOAP:Envelope".
SOAP defines a global attribute "SOAP:encodingStyle" indicating any serializ
ation rules used in lieu of those described by the SOAP specification. This
attribute MAY appear on any element, and is scoped to that element and all c
hild elements not themselves containing such an attribute. Omission of this
attribute indicates that section 8 has been followed (unless overridden by a
parent element). The URI "urn:schemas-xmlsoap-org:soap.v1" is defined and a
ll URIs beginning with this one indicate conformance with section 8 (though
with potentially tighter rules).
The root element MAY contain namespace declarations.
The root element MAY contain additional attributes, provided these are names
pace-qualified. The root element may contain additional sub elements provide
d these are namespace-qualified and follow the body.
SOAP payload headers
The element tag is "SOAP:Header". If present, this element MUST be the first
element under the root.
It contains a list of header entries. Each MUST be namespace-qualified.
Call
The element tag is "SOAP:Body".
The Body element contains a first sub element whose name is the method name.
This method request element in turn contains elements for each [in] and [in
/out] parameter. The element names are the parameter names. See section 8 fo
r details.
or
Response
The element tag is "SOAP:Body".
The Body element contains a first sub element that in turn contains child el
ements for each [in/out] and [out] parameter. The element names are the para
meter names. See section 8 for details.
or
Fault
The element tag is "SOAP:Body".
The Body element contains a first sub element that is the SOAP:Fault element
, indicating information about the fault.
The version of SOAP used is indicated by the SOAP namespace URI. A server MU
ST use the version passed in the envelope of the call for encoding the respo
nse, or it MUST fail the request. In the case where the server accepts a ver
sion or level less than its maximum, it MUST respond to the client by using
the same version and level. If a server receives a version it cannot handle,
it must return a "Version Mismatch" SOAP:fault.
Processing requests in the face of missing parameters is application defined
.
See section 7 for information on how to encode parameter values.

6.5. SOAP Payload Headers

In addition to the elements that specify direct, explicit information about
the call or response, SOAP provides a way to pass extended, implicit informa
tion with the call through the use of the "header" element. It is encoded as
a child of the SOAP:Envelope XML element. It contains a collection of disti
nctly named entries.
An example of the use of the header element is the passing of an implicit tr
ansaction ID along with a call. Since the transaction ID is not part of the
signature and is typically held in an infrastructure component rather than a
pplication code, there is no direct way to pass the necessary information wi
th the call. By adding an entry to the headers and giving it a fixed name, t
he transaction manager on the receiving side can extract the transaction ID
and use it without affecting the coding of remote procedure calls.
Each header entry is encoded as an embedded element. The encoding rules for
a header are as follows:
The element's name identifies the header. Header elements always are namespa
ce-qualified.
Unless indicated to the contrary by the value of "SOAP:encodingStyle" attrib
ute, header values are encoded according to the rules of section 8.
The element MAY contain an attribute "SOAP:mustUnderstand" specifying requir
ed understanding of the header by the destination.
An example is a header with an identifier of "TransactionID", a "mustUnderst
and" value of true, and a value of 5. This would be encoded as follows:
<SOAP:Header>
<t:Transaction
xmlns:t="some-URI" SOAP:mustUnderstand="1">
5
</t:Transaction>
</SOAP:Header>

6.5.1. SOAP:mustUnderstand Attribute

Header entries MAY have a global attribute SOAP:mustUnderstand. This may hav
e one of two values, either "1" or "0". The absence of such a SOAP:mustUnder
stand attribute is semantically equivalent to its presence with the value "0
".
If a header element is tagged with a SOAP:mustUnderstand attribute whose val
ue is "1", the party processing the Request URI MUST understand the semantic
s (as conveyed by its element tag, contextual setting, and so on) and proces
s correctly to those semantics.
If the SOAP implementation doesn't understand the element, it MUST return an
error as specified in section 7.1, "Results from a Method Call."
The SOAP:mustUnderstand attribute allows for robust semantic extensibility a
nd change. Headers tagged with SOAP:mustUnderstand="1" MUST be presumed to s
omehow modify the semantics of their parent or peer elements. Tagging the he
aders in this manner assures that this change in semantics will not be silen
tly (and, presumably, erroneously) ignored by those who may not fully unders
tand it.
If the SOAP:mustUnderstand attribute is missing or has a value of "0", that
element can safely be ignored.
For example, if the client passed along a transaction ID header with SOAP:mu
stUnderstand="1", then the server SHOULD fail if it cannot process the trans
action ID and comply with the transactional semantics.

6.6. Making a Method Call

To make a method call, the following information is needed:
The URI of the target object
A method name
An optional method signature
The parameters to the method
Optional header data
The target URI of the HTTP request indicates the resource that the invocatio
n is being made against; in this specification, that resource is called the
"server address," to distinguish it from other uses of URIs. Other than it b
e a valid URI, SOAP places no restriction on the form of an address. See [8]
for more information on URIs.
The body of a SOAP method call MUST be of Content-Type 'text/xml'.
The SOAP protocol places no absolute restriction on the syntax or case-sensi
tivity of interface names, method names, or parameter names. Of course, indi
vidual SOAP servers will respond to only the names they support; the selecti
on of these is at their own sole discretion. The one restriction is that the
server MUST preserve the case of names.

6.6.1. Representation of Method Parameters

Method parameters are encoded as child elements of the call or response, enc
oded using the following rules:
The name of the parameter in the method signature is used as the name of the
corresponding element.
Parameter values are expressed using the rules in section 8 of this document
.

6.6.2. Sample Encoding of Call Requests

Example 3
This sample is the same call as in section 3.3.1 but uses optional headers.
It uses SOAP namespace to disambiguate SOAP keywords in the payload.
<SOAP:Envelope
xmlns:SOAP="urn:schemas-xmlsoap-org:soap.v1"
SOAP:encodingStyle="urn:schemas-xmlsoap-org:soap.v1">
<SOAP:Header>
<t:Transaction
xmlns:t="some-URI"
SOAP:mustUnderstand="1">
5
</t:Transaction>
</SOAP:Header>
<SOAP:Body>
<m:GetLastTradePrice xmlns:m="Some-Namespace-URI">
<symbol>DEF</symbol>
</m:GetLastTradePrice>
</SOAP:Body>
</SOAP:Envelope>
Example 4
The following request sends a struct:
<SOAP:Envelope
xmlns:SOAP="urn:schemas-xmlsoap-org:soap.v1" >
<SOAP:Body>
<m:GetLastTradePriceDetailed
xmlns:m="Some-Namespace-URI">
<Symbol>DEF</Symbol>
<Company>DEF Corp</Company>
<Price> 34.1 </Price>
</m:GetLastTradePriceDetailed>
</SOAP:Body>
</SOAP:Envelope>

7. Results of Method Calls

At the receiving site, a call request can have one of the following four out
comes:
The HTTP infrastructure on the receiving site was able to receive and proces
s the request.
The HTTP infrastructure on the receiving site could not receive and process
the request.
The SOAP infrastructure on the receiving site was able to decode the input p
arameters, dispatch to an appropriate server indicated by the server address
, and invoke an application-level function corresponding semantically to the
method indicated in the method call.
The SOAP infrastructure on the receiving site could not decode the input par
ameters, dispatch to an appropriate server indicated by the server address,
and invoke an application-level function corresponding semantically to the i
nterface or method indicated in the method call.
In the first case, the HTTP infrastructure passes the headers and body to th
e SOAP infrastructure.
In the second case, the result is an HTTP response containing an HTTP error
in the status field and no XML body.
In the third case, the result of the method call consists of a response or f
ault.
In the fourth case, the result of the method is a fault indicating a fault t
hat prevented the dispatching infrastructure on the receiving side from succ
essful completion.
In the third and fourth cases, additional payload headers MAY for extensibil
ity again be present in the results of the call.

7.1. Results from a Method Call

The results of the call are to be provided in the form of a call response. T
he HTTP response MUST be of Content-Type "text/xml".
Because a result indicates success and a fault indicates failure, it is an e
rror for the method response to contain both a result and a fault.

7.2. SOAP:Fault and HTTP Status Codes

If the HTTP infrastructure successfully processes the method request, passes
it to the SOAP infrastructure, and an error occurs, a fault indication is r
eturned to the caller instead of a normal response. In this section, a SOAP:
Fault element is defined. This element MUST be used to return fault indicati
ons.
The standard SOAP:Fault element consists of four sub elements:
"faultcode", which MUST contain a qualified name value, as defined in Namesp
aces in XML [6], section 3 "Qname". If unqualified, the value is taken from
the space of SOAP status codes, described below. If qualified, the prefix MU
ST match a declared namespace prefix. The faultcode is intended for use by s
oftware.
"faultstring", which MUST contain a string value. The faultstring is intende
d for use by human users and must not be acted upon algorithmically by softw
are. The faultstring element is similar to the 'Reason-Phrase' that may be p
resent in HTTP responses. (See [1], section 6.1.)
"runcode", which MUST contain an enumerated value. The runcode is intended t
o indicate whether or not the request was dispatched to the application. The
re are three runcodes currently defined: "Maybe", "No", and "Yes".
"detail", which, if present, MUST contain a value per section 8 with applica
tion-specific semantics.
Other sub elements members beyond the four described above MAY be present, p
rovided they are namespace-qualified.
If the fault specifies a server fault, as opposed to an HTTP fault, the HTTP
status code MUST be "200" and the HTTP status message MUST be "OK". If it s
pecifies an HTTP fault, the HTTP status code as defined in the HTTP specific
ation [1] SHOULD be used.
If a method call fails to be processed because of a non-understood extension
header element contained therein, the method invocation MUST return a fault
. The fault MUST contain a 'faultcode' of "Must Understand".
If a method response fails to be processed for similar reasons, an appropria
te exceptional condition should be indicated to the application layer in an
implementation-defined manner.

7.3. SOAP Status Codes

SOAP defines its own space of status codes. This space is used only by the S
OAP infrastructure and is not expected to be used on HTTP failure. The reaso
n this space is defined is to aid the conversion of existing protocols onto
SOAP.
This status code space MUST be used for faultcodes contained in faults and i
n the method definitions defined in this specification that return status co
de values. Further, use of this space is recommended (but not required) in t
he specification of methods defined outside of the present specification.
The SOAP status code space is identified by the URI, "urn:schemas-xmlsoap-co
m:soap.v1/faultcode" and contains numeric values. This specification at pres
ent defines the following status codes beyond those specified in [1]:
Name Value Meaning
Version Mismatch 100 The call was using an unsupported SOAP version.
Must Understand 200 An XML element was received that contained an element
tagged with mustUnderstand="1"that was not understood by the receiver.
Invalid Request 300 The receiving application did not process the request
because it was incorrectly formed or not supported by the application.
Application Faulted 400 The receiving application faulted when processing
the request. The 'detail' element contains the application-specific fault.

7.4. Sample Encoding of Response

Example 5
The response from the example in section 3.3.2 would be:
HTTP/1.1 200 OK
Content-Type: text/xml
Content-Length: nnnn
<SOAP:Envelope
xmlns:SOAP="urn:schemas-xmlsoap-org:soap.v1" >
<SOAP:Body>
<m:GetLastTradePriceResponse
xmlns:m="Some-Namespace-URI">
<return>34.5</return>
</m:GetLastTradePriceResponse>
</SOAP:Body>
</SOAP:Envelope>
Example 6
The following response is similar to Example 5, but uses optional headers.
HTTP/1.1 200 OK
Content-Type: text/xml
Content-Length: nnnn
<SOAP:Envelope
xmlns:SOAP="urn:schemas-xmlsoap-org:soap.v1" >
<SOAP:Header>
<t:Transaction
xmlns:t="some-URI"
xsd:type="int" mustUnderstand="1">
5
</t:Transaction>
</SOAP:Header>
<SOAP:Body>
<m:GetLastTradePriceResponse
xmlns:m="Some-Namespace-URI">
<return>34.5</return>
</m:GetLastTradePriceResponse>
</SOAP:Body>
</SOAP:Envelope>
Example 7
The following response returns a struct:
HTTP/1.1 200 OK
Content-Type: text/xml
Content-Length: nnnn
<SOAP:Envelope
xmlns:SOAP="urn:schemas-xmlsoap-org:soap.v1" >
<SOAP:Body>
<m:GetLastTradePriceResponse
xmlns:m="Some-Namespace-URI">
<return>
<LastTradePrice>
34.5
</LastTradePrice>
<DayVolume>
10000
</DayVolume>
</return>
</m:GetLastTradePriceResponse>
</SOAP:Body>
</SOAP:Envelope>
Example 8
If there was an error in the HTTP infrastructure, the response could be as f
ollows:
HTTP/1.1 401 Unauthorized
Example 9
If there was an error in the SOAP infrastructure processing the request on t
he server, the response could be as follows:
HTTP/1.1 200 OK
Content-Type: text/xml
Content-Length: nnnn
<SOAP:Envelope xmlns:SOAP="urn:schemas-xmlsoap-org:soap.v1">
<SOAP:Body>
<SOAP:Fault>
<faultcode>200</faultcode>
<faultstring>
SOAP Must Understand Error
</faultstring>
<runcode>1</runcode>
</SOAP:Fault>
</SOAP:Body>
</SOAP:Envelope>
Example 10
If the application passed back its own fault element, the response would be
as follows:
HTTP/1.1 200 OK
Content-Type: text/xml
Content-Length: nnnn
<SOAP:Envelope
xmlns:SOAP="urn:schemas-xmlsoap-org:soap.v1" >
<SOAP:Body>
<SOAP:Fault>
<faultcode>400</faultcode>
<faultstring>
SOAP Must Understand Error
</faultstring>
<runcode>1</runcode>
<detail xmlns:e="Some-Namespace-URI"
xmlns:xsd="W3C-Schemas-URI"
xsd:type="e:MyFault"
<message>
My application didn't work
</message>
<errorcode>1001</errorcode>
</detail>
</SOAP:Fault>
</SOAP:Body>
</SOAP:Envelope>

8. Types

SOAP uses a simple, traditional type system. A type either is a simple (scal
ar) type or is a compound type constructed as a composite of several parts,
each with a type.
Because all types are contained or referenced within a call or response elem
ent, the encoding samples in this section assume all namespace declarations
are at a higher element level.
8.1. Rules for Encoding Types in XML
XML allows very flexible encoding of data to represent a method call. SOAP d
efines a narrower set of rules for encoding. This section defines the encodi
ng rules at a high level, and the next section describes the encoding rules
for specific types when they require more detail.
To describe encoding, the following terminology is used:
A "type" includes integer, string, point, or street address. A type in SOAP
corresponds to a scalar or structured type in a programming language or data
base. All values are of specific types.
A "compound type" is one that has distinct, named parts and whose encoding s
hould reflect those named parts. A "simple type" is one without named parts.
A structured type in a programming language is a compound type, and so is a
n array.
The name of a parameter or of a named part of a compound type is called an "
accessor."
If only one accessor can reference it, a value is considered "single-referen
ce" for a given schema. If referenced by more than one, actually or potentia
lly in a given schema, it is "multi-reference." Therefore, it is possible fo
r a certain type to be considered "single-reference" in one schema and "mult
i-reference" in another schema.
Syntactically, an element MAY be "independent" or "embedded." An independent
element is contained immediately by its scoping element. An embedded elemen
t is contained within a non-scoping element. Examples of scoping elements in
this specification are "SOAP:Header" and "SOAP:Body".
The rules are as follows:
Elements MAY be used to reflect either accessors or instances of types. Embe
dded elements always reflect accessors. Independent elements always reflect
instances of types. When reflecting an accessor, the name of the element giv
es the name of the accessor. When reflecting an instance of a type, the name
of the element typically gives the name of the type.
A call or response/fault is always encoded as an independent element.
Accessors are always encoded as embedded elements.
A value (simple or compound) is encoded as element content, either of an ele
ment reflecting an accessor to the value or of an element reflecting an inst
ance of that type.
A simple value is encoded as character data, that is, without any sub elemen
ts.
Strings and byte arrays are multi-reference simple types, but special rules
allow them to be represented efficiently for common cases. An accessor to a
string or byte-array value MAY have an attribute named "id" and of type "ID"
per the XML Specification [3]. If so, all other accessors to the same value
are encoded as empty elements having an attribute named "href" and of type
"URI" per the XML Linking Language Specifications [9], with the href contain
ing a URI fragment identifier referencing the single element containing the
value.
It is permissible to encode several references to a simple value as though t
hese were references to several single-reference values, but only when from
context it is known that the meaning of the XML instance is unaltered.
A compound value is encoded as a sequence of elements, each named according
to the accessor it reflects. (See also section 8.4.1.)
A multi-reference simple or compound value is encoded as an independent elem
ent containing an attribute named "id" and of type "ID" per the XML Specific
ation [3]. Each accessor to this value is an empty element having an attribu
te named "href" and of type "URI" per the XML Linking Language Specification
[9], with the href containing a URI fragment identifier referencing the cor
responding independent element.
Arrays are compound types. Arrays can be of one or more dimensions (rank) wh
ose elements are normally laid contiguously in memory. Arrays can be single-
reference or multi-reference values. Single-reference embedded arrays are en
coded using accessor elements. A multi-reference array is always encoded as
an independent element whose tag name is the string "ArrayOf" prepended to t
he element type of the array. The independent element or the accessor MUST c
ontain an "xsd:type" attribute that specifies the type and dimensions of the
array and is encoded as the type of the array element, followed by "[", fol
lowed by comma-separated lengths of each dimension, followed by "]". The "xs
d:type" attribute is described in the "XML Schema Part 2: Datatypes" Specifi
cation (see [12]). Note that the array element itself can be an array. An ar
ray type is encoded as its element type, followed by "[", followed by rank e
ncoded as a sequence of commas (one for each dimension), followed by "]". It
MAY also contain an "offset" attribute to indicate the starting position of
a partially represented array. Each element of an array is encoded using th
e accessor named after the type of array element. The elements are represent
ed as a list with the dimension on the right side varying rapidly. The acces
sor MAY contain the "position" attribute that conveys the position of the it
em in the enclosing array. Both "offset" and "position" attributes are encod
ed as "[", followed by a comma-separated position in each dimension, followe
d by "]", with offsets and positions based at 0.
Any accessor element that contains its value directly MAY optionally have an
attribute named "xsd:type" whose value indicates the type of the element's
contained value as described in the "XML Schema Part 2: Datatypes" Specifica
tion [12]. However, its presence is mandatory on elements whose tag name com
bined with implicit or explicit namespace does not unambiguously identify th
e type of the element.
A NULL value is indicated by an attribute named "xsd:null" with value of '1'
.
In many cases, it is necessary to package multiple related elements as a sin
gle element, for instance in cases where the elements are linked together vi
a hrefs. SOAP defines another attribute "SOAP:Package" whose value can be "0
" or "1". If "1", the element acts as a scoping element for contained sub el
ements.

8.2. Simple Types

For simple types, SOAP adopts the types found in the section "Built-in datat
ypes" of the "XML Schema Part 2: Datatypes" Specification [12], along with t
he corresponding recommended representation thereof. Examples include:
Type Example
integer 58502
real 314159265358979E+1
negative-integer -32768
Strings and arrays of bytes are encoded as multi-reference simple types.

8.2.1. Strin

A string is a multi-reference simple type. According to the rules of multi-r
eference simple types, the containing element of the string value MAY have a
n ID attribute; additional accessor elements MAY then have matching href att
ributes.
For example, two accessors to the same string could appear, as follows:
<greeting id="String-0">Hello</greeting>
<salutation href="#String-0"/>
However, if the fact that both accessors reference the same instance of the
string is immaterial, they may be encoded as though single-reference, as fol
lows:
<greeting>Hello</greeting>
<salutation>Hello</salutation>

8.2.2. Enumerations

An enumeration is a single reference type whose value is encoded as one of t
he possible enumeration strings. In the following example EyeColor is an enu
meration with the possible values of "Green", "Blue", or "Brown":
<Person>
<Name>Henry Ford</Name>
<Age>32</Age>
<EyeColor>Brown</EyeColor>
</Person>

8.2.3. Array of Bytes

An array of bytes is encoded as a multi-reference simple type. The recommend
ed representation of an opaque array of bytes is the 'bin.base64' encoding d
efined in XML DCD [5], which simply references the MIME standard. However, t
he line length restrictions that normally apply to Base64 data in MIME do no
t apply in SOAP.
bin.base64: aG93IG5vdyBicm93biBjb3cNCg==

8.3. Polymorphic Accessor

Many languages allow accessors that can polymorphically access values of sev
eral types, each type being available at run time. When the value is single-
reference, the type of this kind of accessor is often called "Variant". A po
lymorphic accessor MUST contain an "xsd:type" attribute that describes the t
ype of the actual value.
For example, a Polymorphic parameter named "cost" with a type of float would
be encoded as follows:
<cost xsd:type="float">29.95</cost>
as contrasted with a cost parameter whose type is invariant, as follows:
<cost>29.95</cost>

8.4. Compound Types

Beyond the simple types, SOAP defines support for the following constructed
types:
Records/structs
Arrays
Where appropriate and possible, the representation in SOAP of a value of a g
iven type mirrors that used by practitioners of XML-Data and the common prac
tice of the XML community at large.

8.4.1. Compound Values and References to Values

A compound value contains an ordered sequence of structural members. When th
e members have distinct names, as in an instance of a C or C++ struct, this
is called a "struct," and when the members do not have distinct names but in
stead are known by their ordinal position, this is called an "array."
The members of a compound value are encoded as accessor elements. For a stru
ct, the accessor element name is the member name. For an array, the accessor
element name is the element type name and the sequence of the accessor elem
ents follows the ordinal sequence of the members.
The following is an example of a struct of type Book:
<Book>
<author>Henry Ford</author>
<preface>Prefatory text</preface>
<intro>This is a book.</intro>
</Book>
Below is an example of a type with both simple and compound members. It show
s two levels of referencing.
Note that the "href" attribute of the Author accessor element is a reference
to the value whose "id" attribute matches; a similar construction appears f
or the Address.
<Book>
<title>My Life and Work</title>
<author href="#Person-1"/>
</Book>
<Person id="Person-1">
<name>Henry Ford</name>
<address href="#Address-2"/>
</Person>
<Address id="Address-2">
<email>henryford@hotmail.com
<web>www.henryford.com</web>
</Address>
The form above is appropriate when the Person value and the Address value ar
e multi-reference. If these were instead both single-reference, they SHOULD
be embedded, as follows:
<Book>
<title>My Life and Work</title>
<author>
<name>Henry Ford</name>
<address>
<email>henryford@hotmail.com
<web>www.henryford.com</web>
</address>
</author>
</Book>
If instead there existed a restriction that no two persons can have the same
address in a given schema and that an address can be either a Street-addres
s or an Electronic-address, a Book with two authors would be encoded in such
a schema as follows:
<Book>
<title>My Life and Work</title>
<firstauthor href="#Person-1"/>
<secondauthor href="#Person-2"/>
</Book>
<Person id="Person-1">
<name>Henry Ford</name>
<address xsd:type="m:Electronic-address">
<email>henryford@hotmail.com
<web>www.henryford.com</web>
</address>
</Person>
<Person id="Person-2">
<name>Thomas Cook</name>
<address xsd:type="n:Street-address">
<Street>Martin Luther King Rd</Street>
<City>Raleigh</City>
<State>North Carolina</State>
</address>
</Person>

8.4.1.1. Generic Records

There are cases where a struct is represented with its members named and val
ues typed at run time. Even in these cases, the existing rules apply. Each m
ember is encoded as an element with matching name, and each value is either
contained or referenced. Contained values MUST have an "xsd:type" attribute
giving the type of the value.

8.4.2. ArraysThe representation of the value of an array is an ordered seque
nce of elements constituting items of the array. The default tag name for ea
ch element is the element type.
As with compound types generally, if the type of an item in the array is a s
ingle-reference type, each item contains its value. Otherwise, the item refe
rences its value via an href attribute.
The following example is an array containing integer array members. The leng
th attribute is optional.
<ArrayOfint xsd:type="u:int[2]">
<int>3</int>
<int>4</int>
</ArrayOfint>
The following example is an array of Variants containing an integer and a st
ring.
<ArrayOfvariant xsd:type="u:variant[2]">
<variant xsd:type="int">23</variant>
<variant xsd:type="string">some string</variant>
</ArrayOfvariant>
The following is an example of a two-dimensional array of strings.
<ArrayOfstring xsd:type="u:string[2,3]">
<string>r1c1</string>
<string>r1c2</string>
<string>r1c3</string>
<string>r2c1</string>
<string>r2c2</string>
<string>r2c3</string>
</ArrayOfstring>
The following is an example of an array of two arrays, each of which is an a
rray of strings.
<ArrayOfArrayOfstring xsd:type="u:string[][2]">
<ArrayOfstring href="#array-1"/>
<ArrayOfstring href="#array-2"/>
</ArrayOfArrayOfstring>
<ArrayOfstring id="array-1" xsd:type="u:string[3]">
<string>r1c1</string>
<string>r1c2</string>
<string>r1c3</string>
</ArrayOfstring>
<ArrayOfstring id="array-2" xsd:type="u:string[2]">
<string>r2c1</string>
<string>r2c2</string>
</ArrayOfstring>
Finally, the following is an example of an array of phone numbers embedded i
n a struct of type Person and accessed through the accessor "phone-numbers":

<Person>
<name>John Hancock</name>
<phone-numbers xsd:type="u:string[2]">
<string>111-2222</string>
<string>999-0000</string>
</phone-numbers>
</Person>
A multi-reference array is always encoded as an independent element whose ta
g name is the string "ArrayOf" prepended to the element type of the array. F
or example an array of order structs encoded as an independent element:
<ArrayOfOrder xsd:type="u:Order[2]">
<Order>
<Product>Apple</Product>
<Price>1.56</Price>
</Order>
<Order>
<Product>Peach</Product>
<Price>1.48</Price>
</Order>
</ArrayOfOrder>
A single-reference array is encoded as an embedded element whose tag name is
the accessor name.
<PurchaseOrder>
<CustomerName>Henry Ford</CustomerName>
<ShipTo>
<Street>5th Ave</Street>
<City>New York</City>
<State>NY</State>
<Zip>10010</Zip>
</ShipTo>
<PurchaseLineItems xsd:type="u:Order[2]">
<Order>
<Product>Apple</Product>
<Price>1.56</Price>
</Order>
<Order>
<Product>Peach</Product>
<Price>1.48</Price>
</Order>
</PurchaseLineItems>
</PurchaseOrder>

8.4.2.1. Partially Transmitted Arrays

SOAP provides support for partially transmitted arrays, known as "varying" a
rrays, in some contexts [7]. A partially transmitted array indicates in an "
offset" attribute the zero-origin index of the first element transmitted; if
omitted, the offset is taken as zero.
The following is an example of an array of size five that transmits only the
third and fourth element:
<ArrayOfstring xsd:type="u:string[5]" offset="[2]">
<string>The third element</string>
<string>The fourth element</string>
</Arrayofstring>

8.4.2.2. Sparse Arrays

SOAP provides support for sparse arrays in some contexts. Each element conta
ins a "position" attribute that indicates its position within the array. The
following is an example of array of arrays of strings:
<ArrayOfArrayOfstring xsd:type="u:string[,][2]">
<Arrayofstring href="#array-1" position="[2]"/>
</ArrayOfArrayOfstring>
<ArrayOfstring id="array-1" xsd:type="u:string[10,10]">
<string position="[2,2]">The third element"</item>
<string position="[7,2]">The eighth element</item>
</ArrayOfstring>
Assuming that the only reference to array-1 occurs in the enclosing array, t
his example could also have been encoded as follows:
<ArrayOfArrayOfstring xsd:type="string[,][2]">
<ArrayOfstring position="[2]">
<ArrayOfstring xsd:type="string[10,10]">
<string position="[2,2]">The third element"</string>
<string position="[7,2]">The eighth element</string>
</ArrayOfstring>
</ArrayOfstring>
</ArrayOfArrayOfstring>

8.5. Default Values

An omitted accessor element implies either a default value or that no value
is known. The specifics depend on the accessor, method, and its context. Typ
ically, an omitted accessor implies a Null value for Variant and for polymor
phic accessors (with the exact meaning of Null accessor-dependent). Typicall
y, an omitted Boolean accessor implies either a False value or that no value
is known, and an omitted numeric accessor implies either that the value is
zero or that no value is known.

9. Formal Syntax

This specification uses the augmented Backus-Naur Form (BNF) as described in
RFC-2234 [10].

10. Security Considerations

Not described in this document are methods for integrity and privacy protect
ion. Such issues will be addressed more fully in a future version(s) of this
document.

11. References
RFC2068: Hypertext Transfer Protocol, http://info.internet.isi.edu/in-notes/
rfc/files/rfc2068.txt. Also: http://www.w3.org/Protocols/History.html.
HTTP Extension Framework, http://www.w3.org/Protocols/HTTP/ietf-http-ext.htm
l.
The XML Specification, http://www.w3.org/TR/WD-xml-lang.html.
XML-Data Specification, http://www.w3.org/TR/1998/NOTE-XML-data/.
Document Content Description for XML, http://www.w3.org/TR/NOTE-dcd.html
Namespaces in XML, http://www.w3.org/TR/REC-xml-names/.
Transfer Syntax NDR, in "DCE 1.1: Remote Procedure Call," http://www.opengro
up.org/public/pubs/catalog/c706.htm.
RFC 2396: Uniform Resource Identifiers (URI): Generic Syntax and Semantics,
http://www.ietf.org/rfc/rfc2396.txt.
XML Linking Language, http://www.w3.org/1999/07/WD-xlink-19990726.html
RFC-2234: Augmented BNF for Syntax Specifications: ABNF
Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP
14, RFC 2119, March 1997
XML Schema Part 2: Datatypes, http://www.w3.org/TR/1999/WD-xmlschema-2-19991
105/
RFC2026: The Internet Standards Process -- Revision 3, http://info.internet.
isi.edu/in-notes/rfc/files/rfc2026.txt.

--
※ 修改:·huangcyy 於 May 22 20:22:10 修改本文·[FROM: 48h36.xjtu.edu.]
※ 来源:·BBS 水木清华站 smth.org·[FROM: 48h36.xjtu.edu.]


XML E-Business Standards: Promises and Pitfalls (转载)

 发信人: FreeM (孤雁·随意飞翔未曾迷途), 信区: XML
标 题: XML E-Business Standards: Promises and Pitfalls (转载)
发信站: BBS 水木清华站 (Wed Jun 7 06:48:12 2000)

【 以下文字转载自 E_commerce 讨论区 】
【 原文由 FreeM 所发表 】
The Promise
The greatest driver of business change today is e-business, brough
t about by the Internet. In the near term, this revolution will ha
ve the most impact on business-to-business transactions. Recent an
nouncements by Ford and General Motors that they both intend to us
e e-commerce for all their supply procurements—in Ford's case wor
th $80 billion per annum—have been noted by some commentators as
signaling the day when e-business came of age.
To conduct e-business transactions, companies need a common langua
ge through which to exchange structured information between their
computer systems. HTML, the first-generation language of the Inter
net, is not suited for this task as it defines only the formatting
of information, not its meaning. Enter Extensible Markup Language
—XML. Like HTML, XML consists of text delimited by tags; so it is
easily conveyed over the Internet. In XML the tags can define the
meaning and structure of the information, enabling computer tools
to use that information directly.
XML has been embraced enthusiastically by all the major IT supplie
rs and user groups. Its standardization and rapid uptake have been
the major development in IT over the past two years. Industry riv
als like IBM, Microsoft, Sun, and Oracle all support the core XML
1.0 standard, are developing major products based on it, and colla
borate to develop related standards. XML is now the world standard
platform for e-business transactions. However, in any business ap
plication, XML itself is not the answer. It is only a standard fou
ndation on which answers can be built. In that lack of prescriptio
n lies both the power, and the danger, of XML in e-business.
The Pitfalls
XML today is in a position similar to that of relational databases
twenty years ago. The relational data model does not pre-define h
ow you will store your data; it gives you a standard foundation, l
eaving you to choose how to use it to store data. You must define
the tables and columns. What relational databases do for informati
on storage, XML does for transmission of information over the Net.
XML does not of itself define how information will be structured,
or what it can mean. You define the tags and their semantics, giv
ing structure and meaning to the data. Both XML and relational dat
abases provide a framework for organizing data in a simpler, more
flexible, and more powerful way than ever before.
To understand the future impact of XML, we must understand the pas
t and present impact of relational databases. Because relational d
atabases are so much better than what went before them—simpler, m
ore powerful, more accessible— when they arrived around 1980 we s
tarted building many more new databases. New applications with new
databases proliferated, grew, and became indispensable to their c
reators. Then we began to see the confusion we were creating.
As companies built tens and hundreds of new databases, the same da
ta were stored in many different databases with redundancies, over
laps, and inconsistencies. The result today inside many big compan
ies is information chaos—a corporate data spaghetti of system-to-
system links for data exchange, application integration costs as h
igh as 40% of the total IT budget, and, above all, delays in build
ing vital new applications.
The problem with system-to-system interchanges between relational
databases is this: If you have N databases, the number of possible
data interchange links can grow as N squared. With even thirty di
fferent databases—and most companies have far more than that—the
re are nearly 1000 possible links. If even a small fraction of the
se interfaces have to be built, maintained, and understood, the re
sulting complexity will be unmanageable. Many companies have lost
this data complexity battle and are paying a heavy price. Twenty y
ears after the start of the relational era, we have still not solv
ed the complexity problems it created.
The potential pitfall of XML is this: Through widespread use of XM
L, we will create a greater data complexity battle—this time acro
ss whole industries rather than individual companies. And this tim
e when we lose the battle, we will suffer even greater consequence
s.
As companies first venture into e-business, this may not seem to b
e a big problem. Surely, they say, we can adopt one of the emergin
g XML-based message standards—such as FIN-XML for financial trans
actions, or C-XML for diverse commercial transactions—and simply
build the interfaces between this message standard and our own cor
e systems? Any one of these XML-based e-commerce standards is as c
omplex as a medium-large relational database schema. Building inte
rfaces between one of these standards and one of your company's la
rge IT systems is a substantial piece of work—but feasible.
Unfortunately, there is not just one XML-based standard emerging,
but many—for different industry sectors, and even several within
the same sector. There are already XML-based standards wars betwee
n different industry groupings. It will not be possible to interfa
ce to just one of the standards, for many reasons: your company wi
ll not be operating in just one market sector; one standard does n
ot address all your business needs; your business partners may bac
k different standards; standards wars will continue, and you need
to back the winners. As the new standards are used, they will grow
and evolve. You will have to build and maintain interfaces betwee
n multiple systems and multiple XML standards just to stay in e-bu
siness.
XML-based message standards are today proliferating across the wor
ld, just as relational databases proliferated from the 1980s withi
n individual companies. The result will be the same data confusion
seen before, this time played out on a worldwide scale. Each comp
any will have a patchwork of application databases (as before) and
interfaces to many different XML message formats. The costs of in
terfacing packages, business processes, and legacy systems to the
many XML standards are multiplicative, and may soon be the key inh
ibitor to your company exploiting new business models and processe
s.
This is a complexity trap at least as large, and as dangerous, as
the complexity trap in multiple relational databases. In twenty ye
ars we failed to solve the relational complexity trap. How will we
fare with the much bigger XML complexity trap?
There are two possible ways forward—to back some supra-standards
repository "framework" such as Microsoft's BizTalk, or to manage t
he XML interfaces properly within your own company. While they are
not mutually exclusive, I shall discuss them separately.
BizTalk to the Rescue?
The BizTalk framework, promoted by Microsoft and partners, aims to
make it easier for individual companies to mix and match XML mess
age formats from different vendors and standards groupings, pickin
g out the sets that best meet their business needs and application
mix.
It does so in three ways. First, it sets out a "canonical form," i
n which any application-specific set of XML message formats can be
defined. Second, it provides a public repository at http://www.Bi
zTalk.org where BizTalk-conformant XML message format sets can be
validated, lodged, retrieved, and freely used. Third, the creators
of BizTalk-conformant message standards are encouraged to lodge X
SLT-based translations between their own formats and others' stand
ard formats.
The theory is this: your company subscribes to BizTalk-conformant
standard A, so you build interfaces from your IT systems to that m
essage format. Your business partner subscribes to a different sta
ndard, B, which is also Biztalk-conformant. Using the XSL translat
ion between A and B (available from the Biztalk repository), you c
an send XML messages in standard A, which your partner can then tr
anslate from A to B and understand your messages. If enough standa
rds come under the BizTalk "umbrella," you can freely exchange mes
sages with any business partner who uses it.
Is this, then, the way forward for your company? Should you bet th
at the industry strength of Microsoft and its partners is enough t
o drive all the package solutions you and your business partners n
eed into the BizTalk framework? Can you just format messages into
any BizTalk-conformant standard, and then rely on BizTalk translat
ions to do the rest?
The history of relational databases suggests not, because the BizT
alk translation framework does not solve the N-squared problem. Ju
st as for databases, if there are N different "standard" message f
ormats, up to N(N-1) translations may be required. Currently the n
umber of XML-based message standards defined by industry groupings
(N) is well over 100, and growing. If you were the creator of one
of these XML-based standards, would you spend the time to underst
and all the other standards—your competitors'—in enough detail t
o create and maintain all the necessary translations? It's enough
work just to keep your own XML formats abreast of changing busines
s needs; maintaining thirty or fifty XSLT translations as well wou
ld be a massive extra workload, for a limited payback.
For this reason, do not hold your breath for plug-and-play applica
tion compatibility via BizTalk XML. And do not bet your corporate
IT strategy on it. If you are to avoid the N-squared trap of incom
patible message formats and legacy systems, the solution lies with
in your own company.
Your Own Gold Standard
There is a viable way forward for individual companies, which is t
o take control of the problem yourself. The key is in this observa
tion: nobody else is in exactly the same business you are. Therefo
re you need to build a single technology-independent logical model
of all the information needed to drive your business—your own go
ld standard for business information—and then map all the differe
nt technology pieces (your own IT systems and external XML message
formats) onto that logical model. Define message formats and tran
slations from the logical model. Any data translation between syst
em A and message format B is done not directly, but in two steps v
ia the logical business model. By doing every data translation in
two steps, you will abolish the N-squared complexity barrier. For
each new IT system or XML message format, you only have to define
one translation (to your logical business model), rather than N tr
anslations to other systems and message formats.
The steps required to do this are:
Build a single logical model of the information needed to drive yo
ur business.
Map your main IT systems and XML message formats onto the logical
model.
Define common XML message formats based on the logical business mo
del.
Define XML message translations into and out of the common message
format.
Having done this, you can then translate between any two data mode
ls or XML message formats via the common message format. The hard
steps here are (1) and (2); once they are done, steps (3) and (4)
are largely mechanical. Tools and techniques are available to help
you through these steps, which have been proven to work for large
, complex enterprises. If you can succeed in this endeavor, the pr
ize is well worth having—a coherent information architecture, ins
ulating your company from a growing industry-wide data spaghetti a
nd enabling you to adapt rapidly to new business models and data n
eeds. In the era of e-commerce, the winners will be those agile co
mpanies who can move rapidly to new successful business models. A
coherent, understandable corporate information architecture is the
key to that agility.
The Way Forward
The BizTalk initiative is not the only attempt to bring order to t
he proliferation of industry sector XML applications. Others, such
as the UN-backed ebXML initiative and the XML/EDI group, are prop
osing public repositories of XML message definitions. By doing so,
they are attempting to link all definitions to a common business
vocabulary so as to ease the N-squared translation problem.
Each of these "supra-standards" efforts will help to manage the co
mplexity of different XML dialects. However, as with the XML diale
cts themselves, it is not at all clear which repository initiative
will establish the most early momentum, or win out in the end. No
ne of the XML repositories will solve the N-squared translation pr
oblem for all businesses, unless it can establish a common model o
f all business information, agreed between all parties, which can
then act as an interlingua for all XML translations. The chances o
f such a massive information model being developed consistently an
d completely, agreed across all countries and industry sectors, an
d then maintained effectively, are remote.
Therefore no company can afford to wait for these cross-industry i
nitiatives to succeed. Instead, each company can establish its own
model of business information based on its own business needs, an
d perform all XML translations via this model. This is a feasible
undertaking, which can start to deliver results in just a matter o
f months. These models will vastly simplify the problems of interf
acing with a changing and unpredictable outside world. At the same
time, this course of action does not preclude you from taking adv
antage of BizTalk or any other XML repository initiative, if and w
hen a winner emerges.

--
At every level, Perl is about helping you get from here to there
with minimum fuss and maximum enjoyment. That's why so many
Perl programmers go around with a silly grin on their face.

※ 来源:·BBS 水木清华站 smth.org·[FROM: edunix.cic.tsin]


SOAP (BM: inannan)

编号 | 类别 | 标题 | 编辑日期
1 | 文件 | Soap与防火墙 inannan | 2001.05.30
2 | 文件 | Re: 有关SOAP的问题 inannan | 2001.05.30
3 | 文件 | MS_SOAP_Toolkit4VS6@2K.11.20 inannan | 2001.05.30
返回上一页 回到上一级目录


Soap与防火墙

 发信人: ruin (无), 信区: XML
标 题: Soap与防火墙
发信站: BBS 水木清华站 (Sun Sep 17 10:06:30 2000)

在过去的五年中，通过Internet访问信息已经成为当今世界的基本需求，迄今用于此项
目的的最通用的协议就是超文本传输协议（HTTP），每一个浏览器和Web服务器都支持H
TTP，HTTP是一项传输文本、图形及其他信息的非常有效的技术。

但仅有HTTP是不够的。使用Internet的一个日益重要的部分是与远程应用程序进行交互
的能力，这种类型的交互通常被模型化为远程过程调用（RPC），其中，客户传送参数然
后得到返回的某种结果。而HTTP非常灵活，所以没有被设计为调用远程过程的协议。与
此相应，存在各种分布式对象协议用于完成这种与远程应用程序的通信，其中有Micros
oft的分布式COM（DCOM）使用的协议及对象管理集团（OMG）的IIOP协议等等，所有这些
协议都提供了类似的服务，允许客户向服务器应用程序发送一个RPC然后接收服务器的响
应。

分布式对象协议在Intranet环境下工作得很好，而将其用于公共的Internet就会有很多
问题。任何连接于Internet的服务器都可能被任何Internet用户访问，这就会产生一些
安全性的问题。为了解决这个问题，许多组织都在其公共的Web服务器和访问这些服务器
的大众之间架设一道防火墙。象Microsoft Proxy Server这样的产品提供的防火墙能够
根据各种条件的设定阻挡对Web服务器的访问，从而增加了组织对其系统安全的信心。
防火墙对Internet的安全使用是必要的，但却对分布式对象协议的有效使用提出了挑战
，为解决这个问题，Microsoft开发了简单对象访问协议（SOAP）。SOAP是一个分布式对
象协议，就象DCOM和其他的分布式对象协议一样，允许客户和服务器之间进行RPC调用。
但与现有协议不同，SOAP就是设计来在有防火墙的情况下工作的。与此同样重要的是，
SOAP并不是设计为只用于一种组件技术。迄今为止，关于应该使用哪种分布式对象协议
进而哪种组件技术存在大量的争论，但与目前捆绑于一种特定技术的分布式对象协议不
同，SOAP并不假设创建组件的特定方式，SOAP只是一个协议，可以用于任何组件技术。

本文解释了SOAP如何解决与Internet防火墙共同工作的问题，然后对协议本身进行了描
述，目的是澄清为什么SOAP有用并提供一些SOAP如何工作的信息。

返回页首
----------------------------------------------------------------------------
----
防火墙的麻烦

要理解为什么防火墙会对分布式协议产生问题需要理解防火墙是如何区分协议的，在TC
P/IP体系结构中，每一种广泛使用的协议都被分配一个自己的端口号，而使用该协议的
每一个请求都带有该端口号，例如，HTTP的端口号是80，而FTP的端口号是21。大多数防
火墙阻挡某个特定协议都是通过拒绝送到该端口号的访问请求来实现的，一般情况下防
火墙都配置为允许对端口号80的访问，否则浏览器来的HTTP请求将不能通过，但许多防
火墙都阻挡了大多数其他端口号，这样做基于一种假设，即在每种协议都有潜在安全性
威胁的情况下，除非防火墙明确允许否则禁止任何端口号比允许这些协议进入Intranet
要好。
而这就是使用分布式对象协议的问题所在，不象HTTP、FTP及其他广泛使用的协议，分布
式对象协议一般都没有被赋予一个广为人知的端口号，而使用动态赋予的端口号，而端
口号的选择是随意的。如果没有防火墙介入客户与服务器之间的通信，这种方法工作得
很好，但一加入防火墙，通信就停止了，因为防火墙阻挡了使用该协议的访问，而之所
以阻挡是由于防火墙没有配置为允许使用任意端口号的访问。下面的例子解释了这种情
况。
解决这个问题有各种方法，例如，一些防火墙可以配置为允许端口号在某个范围内的访
问，如果使用的分布式对象协议可以配置为只赋予这个范围内的端口号，则客户的请求
就可以成功地到达服务器。充满安全意识的网络管理员对开放一个随机端口集的做法一
般都会皱眉头，因为这不是一个理想的解决方案。另一个用于特定用户的选择是COM In
ternet服务，开始时使用端口号80然后就通过TCP发送通常的DCOM报文（包），虽然在很
多情况下有用，但这项技术只用于Microsoft的Internet Information Server和DCOM，
也还不是一个完全的解决方案，仍然需要一种更一般的方式。
由于几乎所有的防火墙都允许端口80，使分布式对象协议通过防火墙所需要的事情就是
该协议使用端口号80。这并不象看起来那么简单，因为端口号80已经被赋予了HTTP，SO
AP的解决方案是将分布式对象协议建立在HTTP之上。HTTP是非常简单的：只包含几个在
客户与服务器之间传送信息的基本词汇 - GET、PUT、POST及其他，每一个动词都可以跟
有其他信息，所有信息通常都是以简单字符串的形式发送的，SOAP对这些没有做任何修
改，也不要求对HTTP增加动词，而是使用可扩展标记语言（XML）定义请求和响应消息的
格式，使用HTTP的POST命令发送这些信息。所有的SOAP访问都通过端口号80，这意味着
SOAP可以用于Internet上的任何Web服务器，防火墙不在是一个问题。下面的例子显示了
这点。
SOAP初始设计目标之一是保证在现有的Internet基础设施（HTTP、防火墙、代理服务器
以及其他等等）上有效地使用，例如，为了安全，SOAP可以使用安全套接层（SSL）协议
，利用HTTP连接管理设施的优点等等。SOAP使Internet上的分布式对象应用之间的通信
就象使用浏览器访问Web页面一样容易

--

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.114.42.136]
返回上一页 回到目录 回到页首 下一篇


Re: 有关SOAP的问题

 发信人: alou (lou), 信区: XML
标 题: Re: 有关SOAP的问题
发信站: BBS 水木清华站 (Tue Sep 19 15:24:25 2000)

【 在 gch (孤独失败) 的大作中提到: 】
∶ 用HTTP来传递XML格式数据
∶ SOAP可以和ASP+，C#编写的WEB SERVICES配合使用
∶ 调用WEB SERVICES
∶ 唯一遗憾的是SOAP目前在SECURITY方面不足
∶ SECURITY只用通过HTTPS来保证
∶ 今天试通了www.asptoday.com上的有关soap的例子.
∶ 这个例子其实很简单.通过点击客户名,激活一个soap调用.
∶ (其实就是以soap格式封装数据,发送到服务器端,服务器端将格式
∶ 解开,再调用相应的函数),最后返回此客户的详细信息.这个直接用
∶ asp实现则更简单.我不明白的是,soap的长处到底在哪?或者说,具体
∶ 在什么样的场合会用得到soap?
∶ ...................

用XML作为开放系统互连的手段我觉得是非常好的。
就像电子商务正在从B2C走向B2B一样，使用HTML/HTTP在服务器和浏览器
之间的click and view的模式已经不是唯一的Web应用模式了，XML/HTTP
在不同企业之间的Application Server/Management System之间的交互应
用将会有很大的发展。

我的一点感想，望各位大虾不吝赐教。

--

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.112.101.154]


MS_SOAP_

 发信人: flier (小海 //爱喝可乐^_^), 信区: XML
标 题: MS_SOAP_Toolkit4VS6@2K.11.20
发信站: BBS 水木清华站 (Thu Nov 23 20:06:18 2000)

比上一个版本主要的改进在于支持更多的安全模式

ftp://ftp.lib.pku.edu.cn/incoming/MS_SOAP_mailto:Toolkit4VS6@2K.11.20/SOAPTK.exe

..1531376..Byte...Enjoy it! :)

The November 2000 release of the SOAP Toolkit for Microsoft? Visual Studio?
6.0 offers improved security features through the use of the SSL protocol f
or message transmission over the Internet. This update includes added suppor
t for several authentication mechansims. Additional information is available
in the release notes included in the download. Please note that the SOAP To
olkit requires Microsoft Windows? 2000 or Windows NT? 4.0 SP6, as well as Vi
sual Studio 6.0 SP4 to be fully functional.

The SOAP Toolkit for Visual Studio 6.0
Microsoft Corporation
Updated November 2000
Visit the MSDN Download Center to download the November 2000 release of the
SOAP Toolkit
The updated SOAP Toolkit download includes more detailed documentation, as w
ell as all the source code necessary to expose SOAP Web Services on Microsof
t? Windows? operating systems and to consume them using Microsoft Visual Stu
dio? 6.0 or other COM-enabled development tools.
Although you can expose Web Services using any programming language, object
model or operating system, Windows, COM, and our tools make it a snap. The S
OAP Toolkit automates all the key parts of creating a Web Service.
If you have an existing COM component, the SOAP Toolkit makes it easy to tur
n it into a Web Service and consume it in, for example, Microsoft Visual Bas
ic?. The SOAP Toolkit includes a tool that will extract the type library fro
m an existing COM component and turn it into a Service Description Language
(SDL) contract that represents that component's capabilities as a service. I
t will also produce other necessary files to implement the service for consu
mption, based on your preferences. (You can also generate this contract manu
ally.)
Once you have a contract, it includes an extension for any COM-enabled devel
opment tool that will automatically turn the contract into a proxy that you
can program against, just like a local COM component. The Toolkit also conta
ins SOAP listeners that receive the SOAP calls that are sent by means of HTT
P and directs them to the appropriate service.
What's New for the November 2000 Release
The much-anticipated November 2000 release of the SOAP Toolkit for Visual St
udio 6.0 has improved security features by making use of the commonly used p
rotocol SSL (Secure Socket Layer) for message transmission over the Internet
. This latest release of the SOAP Toolkit has added support for several auth
entication mechanisms, including:
Sending and receiving messages over SSL
Basic authentication
Basic over SSL
Integrated Windows authentication
Client and Server certificates
Authenticating a client to an HTTP proxy
This is an exciting addition to the SOAP Toolkit because, in addition to aut
hentication, the SSL protocol adds data integrity and data privacy to HTTP a
s well as brokering access to only those authorized to use internal business
logic and data stores used to implement a Web Service. Sending SOAP message
s with the SSL security features implemented assures that the messages canno
t be read or modified while in transit. If you are using a protocol such as
HTTP, the client credentials will be passed as plain text. By utilizing the
new SSL features instead of HTTP, you can be sure that client credentials wi
ll be securely encrypted.
Developers of Web Services can utilize the robust new security features of t
he SOAP Toolkit to balance their security and performance needs. SSL produce
s significantly slower performance than using a protocol such as HTTP, but i
t is possible to selectively use SSL for only those operations of a Web Serv
ice that have heavy security needs, thus minimizing performance overhead whi
le maximizing Web Service integrity.
For more information about SOAP developer resources, please see http://msdn.
microsoft.com/soap/.

--
. 生命的意义在于 /\ ____\ /\_ \ /\_\ .
. 希望 \ \ \___/_\/\ \ \/_/__ __ _ _★ .
. 工作 \ \ ____\\ \ \ /\ \ /'__`\ /\`'_\ .
. 爱你的人 \ \ \___/ \ \ \___\ \ \/\ __//\ \ \/ .
. 和你爱的人 \ \___\ \ \_____\ \__\ \____\ \ \_\ .
. …… \/___/ \/_____/\/__/\/____/ \/_/ @126.com .

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.114.39.246]
上一篇 返回上一页 回到目录 回到页首


Re: XMI?

 发信人: angry (烦), 信区: XML
标 题: Re: XMI?
发信站: BBS 水木清华站 (Fri Oct 27 17:29:17 2000) WWW-POST

XMI（XML Metadata Interchange）是一个存储和共享面向对象的程序设计信息的标准，
由IBM、UNISYS和其他合作伙伴定义。

【 在 AirSupply (小唐······) 的大作中提到: 】
∶ 一些文件里面有这个词汇，啥意思？
∶ 大侠快出手的说

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 162.105.119.59]


Re: what is the difference between xml schema and

 发信人: aji (阿季), 信区: XML
标 题: Re: what is the difference between xml schema and
发信站: BBS 水木清华站 (Fri Dec 1 13:45:32 2000)

从功能上讲，二者其实说不上互斥。
schema和dtd都是用来定义你自己的标记语言(当然是基于xml标准），
只不过走的不同的路子：schema本身就使用xml语法，对于了解xml语法
的人来说很容易理解，也很容易上手；而dtd使用的是另一套语法，要
看懂dtd定义，需要专门学习一下dtd的语法。
二者从功能上讲并无孰优孰劣之别，从我个人习惯来讲，我还是更喜欢
dtd的风格，好像巴斯科范式，呵呵。
如果说二者是对立互斥的，我觉得主要是从工业标准层面上来说
因为xml所定义的标记语言只有成为工业标准才能真正发挥其价值，
所以就需要有组织来做xml发布的标准化认证工作，其方法无非是
向该组织提交自己的dtd或者schema，有改组织来认证，通过后就
会被加入到该组织的xml标准库中，供工业界引用。而现在的两大
标准化组织：xml.org和schema.org分别只采用dtd和schema作为
自己的xml定义标准，所以dtd和schema之争，其实是w3c和ms之争，
呵呵。最后的结局很可能是二者并存，工业界存在同一个xml标记
语言的两种定义形式，而有第三方的程序来做两种标准的转换工作。

【 在 toocai (苔菜) 的大作中提到: 】
∶ how to understand "xml schema and the dtd are mutually exclusive"?
∶ thanks a lot.

--

※ 来源:·BBS 水木清华站 smth.org·[FROM: 162.105.30.31]
发信人: humannature (Ken), 信区: XML
标 题: Re: what is the difference between xml schema and
发信站: BBS 水木清华站 (Fri Dec 1 14:34:34 2000)

Schema is the next generation of DTD.
Schema allows schema authors to reuse other schema files in a modular
manner, much more understandable than DTD entities.
Schema has many more data types and data type features than DTDs.

【 在 toocai (苔菜) 的大作中提到: 】
∶ how to understand "xml schema and the dtd are mutually exclusive"?
∶ thanks a lot.

--

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.119.27.12]
上一篇 返回上一页 回到目录 回到页首


相关资源 (BM: inannan)

编号 | 类别 | 标题 | 编辑日期
1 | 目录 | 网络资源 (BM: inannan) | 2001.05.30
2 | 目录 | 书籍与电子文档 (BM: inannan) | 2001.05.30
3 | 目录 | WAP资源推荐 (BM: takeiteasy) | 2001.05.25
返回上一页 回到上一级目录


网络资源 (BM: inannan)

编号 | 类别 | 标题 | 编辑日期
1 | 文件 | website veb | 2000.03.27
2 | 文件 | Re: XML文档哪里有？ (转载) inannan | 2001.05.25
3 | 文件 | Re: XML文档哪里有？ (转载) inannan | 2001.05.25
4 | 文件 | Re: Annotated XML Specification in lib inannan | 2001.05.25
5 | 文件 | Re: 想学XML，请看这里！ inannan | 2001.05.25
6 | 文件 | 中国XML邮件组有人来捧场吗？ inannan | 2001.05.25
7 | 文件 | Re: BizTalk新电子商务架构简介 inannan | 2001.05.25
8 | 文件 | Re: xsl用什么编辑器？ inannan | 2001.05.25
9 | 文件 | 众多的xml资料地址 inannan | 2001.05.25
10 | 文件 | Re: 有没有关于linux下的xml的详细文章? inannan | 2001.05.27
11 | 文件 | 介绍XML的 中文资料，呵呵 inannan | 2001.05.27
12 | 文件 | 注册码大全 inannan | 2001.05.28
13 | 文件 | OASIS是个好组织 inannan | 2001.05.30
14 | 文件 | 一个VML的应用 inannan | 2001.05.30
15 | 文件 | Re: 大家访问http://xml.zixia.net了 inannan | 2001.05.30
返回上一页 回到上一级目录


水木清华精华区_No Title

XML,XSL,DTD,HTML,XHTML,SVG等的老家
http://www.w3c.org/
http://www.xml.com
http://www.xml.org

国外其他
http://www.xml.com
http://www.xml.org
www.oasis-open.org
www.biztalk.org(关于XML在e-commerce应用框架)
www.wdvl.com

中国XML联盟
http://www.xml.org.cn

国内其他
http://http://dnastudio.dhs.org/
http://www.chinaasp.com/sqlbbs
http://www.asptoday.com

返回上一页 回到目录 回到页首 下一篇


Re: XML文档哪里有？ (转载)

 发信人: veb (君), 信区: XML
标 题: Re: XML文档哪里有？ (转载)
发信站: BBS 水木清华站 (Sun Apr 9 15:55:53 2000)

【 以下文字转载自 WWW 讨论区 】
【 原文由 tabman 所发表 】
你可以去这个网址看看
www.chinaasp.com/sqlbbs
这是一个技术论坛,其中有有关XML的讨论和介绍的...
【 在 yanqlv (funny) 的大作中提到: 】
∶ 【 在 tabman (rainman) 的大作中提到: 】
∶
∶ 偶是一个XML的外行，不过很想欣赏一下XML文档。

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.10.183]


Re: XML文档哪里有？ (转载)

 发信人: veb (君), 信区: XML
标 题: Re: XML文档哪里有？ (转载)
发信站: BBS 水木清华站 (Sun Apr 9 15:56:03 2000)

【 以下文字转载自 WWW 讨论区 】
【 原文由 JoyKiller 所发表 】

www.asptoday.com

www.xml.org.cn:8188.

【 在 tabman (rainman) 的大作中提到: 】
∶ 你可以去这个网址看看
∶ www.chinaasp.com/sqlbbs
∶ 这是一个技术论坛,其中有有关XML的讨论和介绍的...

--

宠辱不惊花开花落,
去留无意云卷云舒.

※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.10.232]


Re: Annotated XML Specification in lib.pku

 发信人: whily (云飞), 信区: XML
标 题: Re: Annotated XML Specification in lib.pku
发信站: BBS 水木清华站 (Wed Apr 12 09:47:57 2000)

【 在 whily (云飞) 的大作中提到: 】
∶ Annotated XML Specification, written by Tim Bray, who is the co-author of
∶ the XML Recommendation, will help you understand the Standard better.
∶ It was uploaded to ftp://ftp.lib.pku.edu.cn/incoming/AnnotatedXMLSpecification

The index file is axml.html

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.204.5.130]


Re: 想学XML，请看这里！

 发信人: datouy (大头), 信区: XML
标 题: Re: 想学XML，请看这里！
发信站: BBS 水木清华站 (Thu Apr 13 11:18:17 2000)

我试过的。还不错！
已经翻译了一些，交流一下？

：）

【 在 haiyun (haiyun ) 的大作中提到: 】
∶ http://msdn.microsoft.com/xml/default.asp
∶ 当然全是E文。你要能忍受呦!
∶ 希望能一起讨论。
∶ mail: yuejin2000@263.net
∶ 和 h.h.ww@263.net

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.112.115.59]


中国XML邮件组有人来捧场吗？

 发信人: linxiaozhu (林小筑), 信区: XML
标 题: 中国XML邮件组有人来捧场吗？
发信站: BBS 水木清华站 (Fri Apr 14 00:13:36 2000)

中文XML资源, XML的最新资料,同行的交流空间
订阅，发空信到 china_xml_list-subscribe@egroups.com
也可以到其主页 http://www.egroups.com/group/china_xml_list 或中国XML联盟的一个网址www.xml.org.cn上去订阅

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 203.95.7.153]


Re: BizTalk新电子商务架构简介

 发信人: truebasic (追寻爱的小鸭), 信区: XML
标 题: Re: BizTalk新电子商务架构简介
发信站: BBS 水木清华站 (Fri Apr 14 21:11:57 2000)

www.biztalk.org上面好多?nbsp;

※ 修改:·veb 於 Apr 14 23:08:51 修改本文·[FROM: 202.112.99.209]
※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.195.140.26]


Re: xsl用什么编辑器？

 发信人: aBadBoy (死烂死烂的坏坏小子), 信区: XML
标 题: Re: xsl用什么编辑器？
发信站: BBS 水木清华站 (Tue Apr 18 17:52:05 2000)

www.xmlsoftware.com有很多工具
【 在 JoyKiller (都市里的黑衣人) 的大作中提到: 】
∶ xsl stylus不错.
∶ 要不然用XMLSPY 也行.

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 162.105.170.66]


众多的xml资料地址

 发信人: windride (一欲成风), 信区: XML
标 题: 众多的xml资料地址
发信站: BBS 水木清华站 (Sun Apr 23 11:08:51 2000)

ftp://202.114.206/xml/lib/

--
※ 修改:·windride 於 Apr 25 12:48:01 修改本文·[FROM: 166.111.168.235]
※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.168.235]


Re: 有没有关于linux下的xml的详细文章?

 发信人: scaner (默默相随), 信区: XML
标 题: Re: 有没有关于linux下的xml的详细文章?
发信站: BBS 水木清华站 (Sun Jun 18 17:18:07 2000)

http://xml.apache.org/呀,大把的好东西

【 在 veb (君) 的大作中提到: 】
∶ 要是有条件到相应网站看看。
∶ 如www.w3c.org
∶ 或本板，
∶ 或xml.zixia.net/index.xml
∶ 等.

--
#telnet I.want.to.go
telnet: Unable to connect to remote host: No Route to host

※ 来源:·BBS 水木清华站 smth.org·[FROM: aics.nuaa.edu.c]


介绍XML的 中文资料，呵呵

 发信人: veb (君), 信区: XML
标 题: 介绍XML的 中文资料，呵呵
发信站: BBS 水木清华站 (Mon Jun 19 10:28:27 2000)

看来大家没有注意？？？很早就有的！！！
XML标准：
http://xml.zixia.net
下的
http://xml.zixia.net/xml-standard/xmlcn.htm
全面介绍XML的最标准，最权威的中文文档。(XML标准)
并以超链组织，比纸介质方便的多。

//我真的不知道还要一些什么XML语法大全有什么用。呵呵
//不过该文档只介绍XML,没有XSLT等（有英文）
--

Powered by eXtensible Markup Language

※ 修改:·veb 於 Jun 19 10:29:51 修改本文·[FROM: 202.112.99.209]
※ 修改:·veb 於 Jun 19 18:54:37 修改本文·[FROM: 202.112.99.209]
※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.112.99.209]


注册码大全

 发信人: ioricat (猫王没有哭), 信区: XML
标 题: 注册码大全
发信站: BBS 水木清华站 (Mon Aug 7 20:57:36 2000)

http://hambo.yeah.net
http://202.103.100.253/hambo/index.html

大家不要再问啦~~~~
--
※ 修改:·ioricat 於 Aug 7 20:58:18 修改本文·[FROM: 202.116.45.15]
※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.116.45.15]


OASIS是个好组织

 发信人: AirSupply (小唐·不可以聚集), 信区: XML
标 题: OASIS是个好组织
发信站: BBS 水木清华站 (Sat Oct 7 23:43:26 2000)

http://www.oasis-open.org/

hehe, 不错不错，上面好多现成的DTD以及各种前人做过的东东的介绍

--
幻想是没有用的

还得一点一点做才成

※ 修改:·AirSupply 於 Oct 7 23:46:28 修改本文·[FROM: 202.112.45.49]
※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.112.45.49]


一个VML的应用

 发信人: Jobs (温少), 信区: XML
标 题: 一个VML的应用
发信站: BBS 水木清华站 (Sun Oct 8 09:04:57 2000)

http://sunrise.szu.edu.cn/NewTechForum/_VML/SongbaseUserGroup.asp

这本来是我们站点分析系统的一个部分，我们的站点分析系统其中一部分
使用了VML来产生一些直观的统计报表，我觉得通过使用VML结合ASP产生一些
统计报表是很有用的。虽然现在SVG来势汹汹，但是毕竟他还没得到浏览器的直接
支持，用户要观看SVG图形的时候还要安装插件，这给用户带来了一些不方便。
但是VML就不同了，他是Microsoft的格式，IE直接支持，在当今IE 一同天下情况下，
几乎不需要考虑太多的兼容问题。

--

※ 来源:·BBS 水木清华站 smth.org·[FROM: 210.39.3.50]


Re: 大家访问

 发信人: Jobs (温少), 信区: XML
标 题: Re: 大家访问http://xml.zixia.net了
发信站: BBS 水木清华站 (Wed Oct 25 22:51:11 2000)

我们有很多最新的资料，我本来想做一个站点，专门讨论新技术，
下载新技术资料站点的，但是这段时间太忙了，我们在准备一个项目，
代码量估计可能超过100,000行，我的天哪……不知道什么时候才有空
作我的XML论坛了，不过还是欢迎大家去看看：

http://sunrise.szu.edu.cn/NewTechForum/

还没有完全完工，……

【 在 lisuke (smart) 的大作中提到: 】
∶ 是个好地方，就是文档更新太少了，
∶ 也不及时。

--

※ 来源:·BBS 水木清华站 smth.org·[FROM: 210.39.3.50]
上一篇 返回上一页 回到目录 回到页首


书籍与电子文档 (BM: inannan)

编号 | 类别 | 标题 | 编辑日期
1 | 文件 | resource veb | 2000.03.27
2 | 文件 | 谁给我介绍一本XML的入门书呀？谢了先 inannan | 2001.05.25
3 | 文件 | Re: 谁给我介绍一本XML的入门书呀？谢了?inannan | 2001.05.25
4 | 文件 | 买了一本好书 inannan | 2001.05.25
5 | 文件 | Re: 《XML实用技术》值得一看 inannan | 2001.05.25
6 | 文件 | 介绍XML初学者一本入门书籍 inannan | 2001.05.25
7 | 文件 | Re: 关于《无废话XML》 inannan | 2001.05.26
8 | 文件 | BOOK REC: APPLIED XML inannan | 2001.05.26
9 | 文件 | 网页新视界XML 一书还不错 inannan | 2001.05.26
10 | 文件 | Don Box新书"Essential XML"目录 inannan | 2001.05.30
11 | 文件 | Re: 觉得无废话xml写的不怎么样 inannan | 2001.05.30
返回上一页 回到上一级目录


水木清华精华区_No Title

 ***电子文档
<<无废话XML>>/wfhXML
ftp://202.117.1.24/Book_Doc/Computer/WWW/XML/无废话XML/wfhxml_gb.zip

***书
《XML使用技术》
Charles F. Goldfarb著
清华大学出版社
44元（打折后）

***XML文档例子
http://www.xml.org.cn
实践应用，第四个有一个zip文件
http://www.xml.com.cn

***XML文档例子
http://www.ipc.dhs.org/test.xml
返回上一页 回到目录 回到页首 下一篇


谁给我介绍一本XML的入门书呀？谢了先

 发信人: yangxuu (据说江西出美女), 信区: XML
标 题: 谁给我介绍一本XML的入门书呀？谢了先
发信站: BBS 水木清华站 (Fri Apr 7 09:59:00 2000)

我现在手头有一本Natanya Pitts写的《XML轻松进阶》，
电子工业出版社翻译的。感觉一本书还是讲的不充分，
各位大牛当初用的是什么宝书呀？不至于都是啃规范的把？

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: keg.cs.tsinghua]


Re: 谁给我介绍一本XML的入门书呀？谢了先

 发信人: veb (jun), 信区: XML
标 题: Re: 谁给我介绍一本XML的入门书呀？谢了先
发信站: BBS 水木清华站 (Sun Apr 9 22:12:21 2000)

【 在 yangxuu (据说江西出美女) 的大作中提到: 】
∶ 中国XML联盟推荐的<<无废话XML>>对于初学者是本好书.

wfhxml对初学者停好的。
斗胆说一说他的几个局限//papaya

1.几乎是局限再xml（狭义的xml，要是广义就几乎无所不包了）
中，而xsl,xslt现在很重要了，要不怎么在brower中看，hehe
2.xml schema,xml data是更重要的内容

不揣简陋，向大家学习，致敬！！

//总的说来，值得向初学者推荐

--

Powered by eXtensible Markup Language

※ 修改:·veb 於 Apr 9 22:13:13 修改本文·[FROM: 202.112.99.209]
※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.112.99.209]


买了一本好书

 发信人: Nullgate (空门大师~~Powered by Perl), 信区: XML
标 题: 买了一本好书
发信站: BBS 水木清华站 (Mon Apr 10 17:26:21 2000)

XML实用技术 44大元（打折后）
准备用XML+Perl大干一场——不过得等期中考试以后 :-(
个人觉得很不错，比较齐
--
Perl资源： http://166.111.160.5/nullgate/perl/
神秘代理： telnet 166.111.160.214 9999

※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.160.216]
发信人: Nullgate (空门大师~~Powered by Perl), 信区: XML
标 题: Re: 买了一本好书
发信站: BBS 水木清华站 (Mon Apr 10 17:39:00 2000)

<PRESS>Prentice Hall Press</PRESS>
<AUTHOR>Charles F.Goldfarb</AUTHOR>
<AUTHOR>Paul Prescod</AUTHOR>
<PRESS>清华大学出版社（是不是把PH代理了？）</PRESS>
<ISBN> 7-900622-03-9</ISBN>
<BTW>Goldfarb是SGML的发明者,//shake</BTW>
【 在 veb (君) 的大作中提到: 】
∶ 麻烦把书名，作者，出版社等贴一下。//bow
∶ 是Goldford写的吧。
∶ 个人认为翻译还可以，而作者有很有权威，不错。什么时候出version 2就好了。

--
Perl资源： http://166.111.160.5/nullgate/perl/
神秘代理： telnet 166.111.160.214 9999

※ 修改:·Nullgate 於 Apr 10 17:40:17 修改本文·[FROM: 166.111.160.216]
※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.160.216]
发信人: veb (君), 信区: XML
标 题: Re: 买了一本好书
发信站: BBS 水木清华站 (Mon Apr 10 17:55:23 2000)

【 在 egg (鸡蛋) 的大作中提到: 】
∶ 呵呵好像没看到有什么别的比较全面的xml的书了。
∶ 先买下来再说——不过一直都没看……

主要介绍XML关于XSL（含XSLT）的内容已经过时。
是一本好的中文XML书。wfhxml电子文档也不错。

查了一下，发明SGML的三个人：
Charls F. Goldfarb(结构化领域最受尊重的权威之一)
Ed. Mosher
Ray Lorie

--

Powered by eXtensible Markup Language

※ 修改:·veb 於 Apr 13 11:17:46 修改本文·[FROM: 202.112.99.209]
※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.112.99.209]
发信人: veb (君), 信区: XML
标 题: Re: 买了一本好书
发信站: BBS 水木清华站 (Mon Apr 10 18:18:57 2000)

【 在 starw (☆★永恒の孤星★☆) 的大作中提到: 】
∶ 有scaner没？//grin
∶ 其实英文的有不少书了，比如O'Reilly什么的一堆
∶ 就是国内很少，中文的就更少了

中文的到时有几本，就是翻译太臭。

（我看过三本，
一本就是Goldfarb写的，
一本带红色的皮的，翻译很臭，当时看见书后有一个中英文表对照才买的
一本2000年出版的，翻译不好
XML轻松进界没看过,翻了一下
另外看过wfhxml（电子版）
）

--

Powered by eXtensible Markup Language

※ 修改:·veb 於 Apr 10 18:19:56 修改本文·[FROM: 202.112.99.209]
※ 修改:·veb 於 Apr 10 18:21:19 修改本文·[FROM: 202.112.99.209]
※ 修改:·veb 於 Apr 13 11:18:40 修改本文·[FROM: 202.112.99.209]
※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.112.99.209]


Re: 《XML实用技术》值得一看

 发信人: veb (君), 信区: XML
标 题: Re: 《XML实用技术》值得一看
发信站: BBS 水木清华站 (Wed Apr 12 15:59:13 2000)

【 在 alou (lou) 的大作中提到: 】
∶ 大家都很习惯的想把XML在浏览器上显示出来。这是最末位的东西，我觉得
∶ 在《XML实用技术》里讲到的XML应用案例对大家的思路应该有帮助。

这本书推荐过的。
书，可信，不可全信，古人说过的话。
XML运用于WWW是Internet的第二次革命。//不是我说的//html是第一次。

应用集成当然重要，
WEB应用也不可藐视啊~~~

--

Powered by eXtensible Markup Language

※ 修改:·veb 於 Apr 12 16:04:37 修改本文·[FROM: 162.105.178.45]
※ 来源:·BBS 水木清华站 smth.org·[FROM: 162.105.178.45]


介绍XML初学者一本入门书籍

 发信人: firegun (牛牛), 信区: XML
标 题: 介绍XML初学者一本入门书籍
发信站: BBS 水木清华站 (Mon May 8 10:08:35 2000)

电力出版社的<<XML完全手册>>
30大洋
简明易懂，我以为很适合初学者

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 162.105.170.146]


Re: 关于《无废话XML》

 发信人: ain (遠離凢嚻), 信区: XML
标 题: Re: 关于《无废话XML》
发信站: BBS 水木清华站 (Sat May 27 07:34:24 2000)

大家可到http://go.163.com/~xml2000/下载该书，

【 在 jeff1978 (雅永紫) 的大作中提到: 】
∶ 各位好，前些天有事不在网上，一打开信箱(前些时候，现在263已登不上了)就收到好几封mail，由于这本书有1.4M，
∶ 所以原本想mail给各位志同道合者，但也只好作罢，不过可以在两只老虎工作室上down
∶ load这本书（www.2tigers.net）。
∶ 大家若有什么好的资源都共享一下吧，关于现在XML的讨论还太少，欢迎大家进行
∶ 更为深度的讨论，同时也欢迎大家用mail进行交流。（hjjf@263.net）

--

新手一个，有说得不对的地方请大家指正。

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.116.64.38]


BOOK REC: APPLIED XML

 发信人: lanyjie (收复台湾), 信区: XML
标 题: BOOK REC: APPLIED XML
发信站: BBS 水木清华站 (Sat May 27 21:37:51 2000)

it is an english book :(, I find it absorbing, below is a little
extract, sorry I can't type quick, so I can only provide this little:(

Technology is a funney business. One day everyone's screaming "Object-
Oriented!" the next it's "push!" and today it's "XML" How does one
separate the wheat from the chaff?

That's not something we try to tackle in this book

Our objective in this book is to shouw you how to apply xml to real
world scenarios, Yes, we spend some time covering the conceptual
details of XML--but that's the easy stuff. What we chose to write
about are things that most books couldn't cover before:

how to use XML while creating real world applications.

//this book is about 500 pages, with a cdrom containing examples
mentioned in the book.

It corrects some of my wrong views: e.g. XML is complementary to HTML
not a replacement.

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 162.105.40.80]


网页新视界XML 一书还不错

 发信人: veb (君), 信区: XML
标 题: 网页新视界XML 一书还不错
发信站: BBS 水木清华站 (Mon May 29 23:01:01 2000)

很适合初学者。推荐一把。
内容比较新。
（XLink部分不对）
2000出的。

--

Powered by eXtensible Markup Language

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.112.99.209]


Don Box新书"Essential XML"目录

 发信人: seamus (天使在我身旁), 信区: XML
标 题: Don Box新书"Essential XML"目录
发信站: BBS 水木清华站 (Wed Sep 20 21:11:30 2000)

今天拿到了Don Box的新书"Essential XML"，可惜没电子档，我在这里把目录抄
给大家。

Contents
Preface
1 Beyond Markup
Document Basics
Names
Processing Instructions
Entities
Types and XML
Serialization Details
Where Are We?

2 Programming XML
Simple API for XML Version 2(SAX2)
Auxiliary SAX Interfaces
SAX and I/O
SAX Error Handling
The Glue of SAX: XML Reader
The Document Object Model
The Object Model
The DOM and Factories
The Node Interface
Parents and Children
Nonhierarchical Nodes
Text Nodes
Element and Attribute Nodes
Document,Document Type,and Entity Nodes
Bulk Insertion Using Document Fragment
DOM Error Handling
Implementation vs Interface
DOM Traversal
Where Are We?

3 Navigation
XPath Basics
XPath Expressions
XPath Functions
XPath Abbreviations
Navigation and URIs
URI + XPath == XPointer
Ranges and Points
Where Are We?

4 XML Schemas
Schema Basics
Type Definitions
Element Declarations
Complex Types
Content Models and Particles
Attributes
Extensibility
Types Revisited
Reference and Uniqueness Constraints
Where Are We?

5 Transforms
XSLT Basics
Template-based Programming
Namespaces and XSLT
Generated Output
Muliple Stylesheets
Pattern-based Templates
Controlling Output
Where Are We?

6 Beyond Interface-based Programming
Where Are We?
Leaving Home
XML as a Better Component Model
Documents as Messages
Where Are We Going?

Appendix A: The XML Information Set(Infoset)
Appendix B: XML Productions
Appendix c: Example Gallery

--

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.120.19.1]


Re: 觉得无废话xml写的不怎么样

 发信人: xslt (xmldbmaker), 信区: XML
标 题: Re: 觉得无废话xml写的不怎么样
发信站: BBS 水木清华站 (Tue Nov 28 13:14:43 2000)

所有这些书都不值一提，和和
还没有一本象样的。

打个不恰当的比喻，还没有象
thinking in java 之于 java,
更没有programming visual c++(inside vc) 之于 MFC
至于会不会有 programming windows 之于 windows编程，更是估计永远没戏了。

不过Don box的essential XML应当是一本佳作，
这么说吧，如果您买了不满意，我包下来。

【 在 windkite (| 留得残荷听雨声 |) 的大作中提到: 】
∶ 只到昨天下午找了一本水利出版社的
∶ xml实用大全，才对有关概念有个清晰的理解。

--
黑暗中我在默默地独自回味，
想着那些灌过的水和我犯下的罪。

※ 来源:·BBS 水木清华站 smth.org·[FROM: 162.105.203.99]
上一篇 返回上一页 回到目录 回到页首


WAP资源推荐 (BM: takeiteasy)

编号 | 类别 | 标题 | 编辑日期
1 | 文件 | Re: 谁能介绍几个能用手机浏览的网站? takeiteasy | 2000.06.02
2 | 文件 | 我推荐的一些WAP资源（国外站点） takeiteasy | 2000.05.13
3 | 文件 | 一些WAP技术资料站点（中文） takeiteasy | 2000.06.02
4 | 文件 | Re: WAP规范 inannan | 2001.05.25
返回上一页 回到上一级目录


Re: 谁能介绍几个能用手机浏览的网站?

 发信人: magicbear (魔术熊), 信区: XML
标 题: Re: 谁能介绍几个能用手机浏览的网站?
发信站: BBS 水木清华站 (Tue May 23 02:08:12 2000)

【 在 kemmi (风之子) 的大作中提到: 】
∶ 我只知道有个www.cwap.com的可以(可惜不支持GB)
∶ http://wap.sohu.com怎么上不去?
∶ 还有别的wap网站吗?
∶ (我用的是windows下的手机浏览器.)
（中、英）
掌门网
http://www.byair.com
新闻、股票、电视、天气、航班、黄页、字典、邮件等
自由易 (实验版)
http://www.one2free.com.cn/123.asp
手机报价、天气、新闻、在线注册、链接等
（全中文）
全球通
http://wap.chnmobile.net
新闻、天气、股票、体育、健康、电子商务、链接等
网易
http://wap.163.com
新闻、股票、航班、天气、星运以及个人服务等
掌上网
http://www.airwap.com
新闻、股票、商务、黄页、搜索、个人服务、免费空间等
新浪网
http://wap.sina.com.cn
新闻、天气、股票等
3721
http://wap.3721.com
搜狐WAP
http://202.106.169.157
新闻 财经 交通 旅游 体育 娱乐 生活 商情 电子邮件
掌上网
http://www.wapdm.com/
提供个性化服务、实时股票、实时航班信息、移动商城、外汇信息、
收发任意账号电子邮件、在线词霸、老黄历、
较全的wap网站连接、掌上游戏、天气预报、新闻、笑话、星座运程、文化驿站等等。
其他几个:
http://wap.linktone.com
http://www.cnpalminfo.com/index.wml

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 162.105.16.253]
返回上一页 回到目录 回到页首 下一篇


水木清华精华区_No Title

国外的WAP, 尤其是欧洲的网站, 发展速度简直惊人.
这里是一些我欣赏的站点:

http://wapsilon.com/ WEB上的WAP模拟器,能非常逼近专业的模拟器.
(以前自己很想作的, 可是发现后就觉得实在比不上了.)
http://www.gelon.net/ 有比较多的WAP资源和相关联结.
http://wirelessdata.org/ecommerce/best/reiter/index.asp
在INTERNET上实现WAP商务应用. 但是需要加入WDF.
http://www.forum.nokia.com/main/1,6668,1_1,00.html
NOKIA的开发人员论坛和技术资料来源. 非常多的资源.
http://www.gsmworld.com/technology/wap.html
这是英国的关于WAP比较详细的一个站点.

http://jumbuck.com 我用模拟器看的第一个WAP站点.
从中可以发现很多关于CODING, WAP GAME, WAPSHOPPING CART的资料和代码.

先写到这里, 网络实在太慢.


Re: 如果要了解一些wap的技术，哪里有技术资料可以看

 发信人: takeiteasy (南方有嘉木), 信区: XML
标 题: Re: 如果要了解一些wap的技术，哪里有技术资料可以看
发信站: BBS 水木清华站 (Wed Jun 28 09:32:16 2000)

【 在 reffo (offer倒了) 的大作中提到: 】
∶ 谢谢
∶ 可以是书面的也可以是电子的
∶ 挺想看看的

请访问http://166.111.214.46

或者访问http://www.wapschool.com
http://www.one2free.com.cn
http://tech.sina.com.cn/wap/index.shtml
--

第一道茶苦若生命,
第二道茶甜如爱情,
第三道茶淡如清风.

※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.67.180]


Re: WAP规范

 发信人: yanglc (魂归燕园~~别理我，烦着呢), 信区: XML
标 题: Re: WAP规范
发信站: BBS 水木清华站 (Sat Apr 29 16:52:10 2000)

1032193107->0x3D860453
3D->61
86->134
04->4
53->83
61.134.4.83
starw干吗要故意弄的这么复杂啊？
【 在 starw (寒山白云) 的大作中提到: 】
∶ ftp://1032193107/pub/wap_1.2/

--
http://www2.cs.uestc.edu.cn/~yanglc

※ 来源:·BBS 水木清华站 smth.org·[FROM: 162.105.11.130]
上一篇 返回上一页 回到目录 回到页首


XML教程 (BM: inannan)

编号 | 类别 | 标题 | 编辑日期
1 | 目录 | 未名空间的XML教程 (BM: veb) | 2001.02.22
2 | 目录 | XML DOM 初級使用手冊 (BM: inannan) | 2001.05.25
3 | 文件 | XML教程 inannan | 2001.05.25
返回上一页 回到上一级目录


未名空间的XML教程 (BM: veb)

编号 | 类别 | 标题 | 编辑日期
1 | 文件 | XML 教程--1 ai | 2000.02.02
2 | 文件 | XML 教程--2 ai | 2000.02.02
3 | 文件 | XML 教程--3 ai | 2000.02.02
4 | 文件 | XML 教程--4 ai | 2000.02.02
5 | 文件 | XML 教程--5 ai | 2000.02.02
6 | 文件 | XML 教程--6 ai | 2000.02.02
7 | 文件 | XML 教程--7 ai | 2000.02.02
8 | 文件 | XML 教程--8 ai | 2000.02.02
9 | 文件 | XML 教程--9 ai | 2000.02.02
10 | 文件 | XML 教程--10 ai | 2000.02.02
11 | 文件 | XML 教程--11 ai | 2000.02.02
12 | 文件 | readme veb | 2000.03.13
返回上一页 回到上一级目录


XML 教程--1

 发信人: ai (真爱~专业灌水&辅修聊天), 信区: WWW
标 题: XML 教程--1
发信站: BBS 水木清华站 (Wed Mar 1 21:36:54 2000)

发信人: Walnuts (nut), 信区: XML
标 题: XML 教程--1
发信站: The unknown SPACE (Tue Nov 30 15:30:54 1999),

处理XML元素

XML是一种标识语言。一个XML元素是由开始标签、结束标签以及标签之间的数据
构成的。

开始和结束标签用来描述标签之间的数据。标签之间的数据被认为是元素的值。例
如，

在下面一个XML元素的例子中，元素“director”的值是“?d Wood”。

<director>Ed Wood</director>

元素名（“director”）允许你把“Ed Wood”这个值标出来，这样你就能把这些
数据

同另外类似的数据区分开来。例如，有可能另一个元素的值也是“Ed Wood”。

<actor>Ed Wood</actor>

由于每个元素都有不同的标签名，所以你能很容易把上面两个元素的值区别开来
。如

果没有办法把数据标出来，两个有同样值的元素会混淆起来。

?nbsp;
--
※ 修改:．Walnuts 于 Nov 30 15:33:52 修改本文．[FROM: 128.2.15.18]
--
┏━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ * 生命的漂泊 * ┃
┃ * * * ┃
┃ * * * * ┃
┃* * 你知道生命的意义吗？ * ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━┛

※ 来源:·BBS 水木清华站 smth.org·[FROM: ab1-75.bjnet.ed]
返回上一页 回到目录 回到页首 下一篇


XML 教程--2

 发信人: ai (真爱~专业灌水&辅修聊天), 信区: WWW
标 题: XML 教程--2
发信站: BBS 水木清华站 (Wed Mar 1 21:37:35 2000)

发信人: Walnuts (nut), 信区: XML
标 题: XML 教程--2
发信站: The unknown SPACE (Tue Nov 30 15:35:49 1999), 转信

处理XML文档

一个基本的XML文档就是一个XML元素，它可以嵌套XML元素。例如，下面的XML元
素

“books”就是一个有效的XML文档。

<books>
<book isbn="0345374827">
<title>The Great Shark Hunt</title>
<author>Hunter S. Thompson</author>
</book>
</books>

构建一个基本的XML文档需要记住关键的三点：所有元素必须有结束标签；所有元
素

必须正确的嵌套（不允许交迭元素）；所有特征值必须加引号。
--
┏━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ * 生命的漂泊 * ┃
┃ * * * ┃
┃ * * * * ┃
┃* * 你知道生命的意义吗？ * ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━┛

※ 来源:·BBS 水木清华站 smth.org·[FROM: ab1-75.bjnet.ed]


XML 教程--3

 发信人: ai (真爱~专业灌水&辅修聊天), 信区: WWW
标 题: XML 教程--3
发信站: BBS 水木清华站 (Wed Mar 1 21:38:08 2000)

发信人: Walnuts (nut), 信区: XML
标 题: XML 教程--3
发信站: The unknown SPACE (Tue Nov 30 15:44:30 1999), 转信

处理XML数据岛

什么是XML数据岛?

数据岛是指存在于HTML页面中的XML代码。数据岛允许你在HTML页面中集成XML，对
XML

编写脚本，不需要通过脚本或<OBJECT>标签读取XML。几乎所有能够存在于一个结
构完

整的XML文档中的东西都能存在于一个数据岛中。包括处理指示、DOCTYPE声明和内
部子

集。（注意，编码串不能放在数据岛中。）

数据岛的XML可以是内嵌的：

<XML ID="XMLID">
<customer>
<name>Herbert Hanley</name>
<custID>81422</custID>

</customer>
</XML>

或者在XML标签中通过SRC属性引用：

<XML ID="XMLID" SRC="customer.xml"></XML>

处理指导

简单处理XML。把XML放到一个XML元素中，并且给这个XML元素一个ID。

--

--
┏━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ * 生命的漂泊 * ┃
┃ * * * ┃
┃ * * * * ┃
┃* * 你知道生命的意义吗？ * ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━┛

※ 来源:·BBS 水木清华站 smth.org·[FROM: ab1-75.bjnet.ed]


XML 教程--4

 发信人: ai (真爱~专业灌水&辅修聊天), 信区: WWW
标 题: XML 教程--4
发信站: BBS 水木清华站 (Wed Mar 1 21:38:36 2000)

发信人: Walnuts (nut), 信区: XML
标 题: XML 教程--4
发信站: The unknown SPACE (Tue Nov 30 15:42:12 1999), 转信

类似于文档对象访问一个XML数据岛

什么是XML文档对象?

XML文档对象是指一个拥有属性和方法的对象，你可以利用这些属性和方法访问和
处

理XML文档。当一个XML数据岛被读取和解析时，就会创建一个XML文档对象。

怎样访问XML数据岛?

下面是一个带有数据岛的HTML页面。数据岛在<XML>元素中。

<HTML>
<HEAD>
<TITLE>HTML with XML Data Island</TITLE>
</HEAD>
<BODY>
<P>Within this document is an XML data island.</P>
<XML ID="resortXML">
<resorts>
<resort>Calinda Cabo Baja</resort>
<resort>Na Balam Resort</resort>
</resorts>
</XML>
</BODY>
</HTML>

你能通过ID属性访问数据岛，“resortXML”成为文档对象的名称。你能利用这个
对象

的方法和属性访问它的根节点和孩子节点。在上面的例子中，根节点是<resorts>
，孩子

节点是<resort>。下面列出了一些属性和方法，可用来访问XML文档的节点。

XMLDocument：返回对XML文档对象模式的引用。

documentElement：返回XML文档的根节点。

childNodes：返回节点的孩子节点目录。

item：通过索引访问目录中的个别节点。索引值是从0开始的，所以item(0)返
回第一

个节点。

text：返回节点的内容。

下面的代码访问第二个孩子节点<resort>并返回它的内容“Na Balam Resort”。

resortXML.XMLDocument.documentElement.childNodes.item(1).text

--

--
┏━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ * 生命的漂泊 * ┃
┃ * * * ┃
┃ * * * * ┃
┃* * 你知道生命的意义吗？ * ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━┛

※ 来源:·BBS 水木清华站 smth.org·[FROM: ab1-75.bjnet.ed]


XML 教程--5

 发信人: ai (真爱~专业灌水&辅修聊天), 信区: WWW
标 题: XML 教程--5
发信站: BBS 水木清华站 (Wed Mar 1 21:39:02 2000)

发信人: Walnuts (nut), 信区: XML
标 题: XML 教程--5
发信站: The unknown SPACE (Tue Nov 30 15:46:55 1999), 转信

访问XML对象模式

什么是XML对象模式?

微软IE5中的XML解析器揭示了XML对象模式，允许你访问和处理XML文档中的节点。
当

解析器读取并且解析一个XML文档时，它将建立一棵节点树，每个节点都能通过脚
本

来访问。例如，如果解析器读取并且解析下面的XML文档，它将创建一个能通过文
档

ID值(xmlDocument)被引用的文档对象，一个表现根节点的对象和一个表现树中其
余

节点的对象。

怎样访问树中的节点?

请试着在下面的数据岛中找出访问每个节点所需要的代码。

<XML ID="xmlDocument">
<class>
<student studentID="13429">
<name>Jane Smith</name>
<GPA>3.8</GPA>
</student>
</class>
</XML>

--

--
┏━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ * 生命的漂泊 * ┃
┃ * * * ┃
┃ * * * * ┃
┃* * 你知道生命的意义吗？ * ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━┛

※ 来源:·BBS 水木清华站 smth.org·[FROM: ab1-75.bjnet.ed]


XML 教程--6

 发信人: ai (真爱~专业灌水&辅修聊天), 信区: WWW
标 题: XML 教程--6
发信站: BBS 水木清华站 (Wed Mar 1 21:39:30 2000)

发信人: Walnuts (nut), 信区: XML
标 题: XML 教程--6
发信站: The unknown SPACE (Tue Nov 30 15:52:45 1999), 转信

在XML文档中使用数据类型

什么是XML文档中的数据类型?

微软提供的XML Schema版本支持数据类型。作为一项预先展示的技术，它对于
那些
想要用schema和丰富的数据类型构造原型和增长经验的开发者来说是很有用的。微
软积
极参与制定逐步形成的W3C的XML Schema标准。开发者需要注意这个版

本的XML Schema是要变化的。在微软IE5当中，元素值能被指定数据类型。数
据类
型能够通过XML Schema或根据实际情况被指定。以前，XML元素值只有一种类型（
字符
串），所以开发者要处理XML文档必须花时间转换元素值。键入你的

XML数据，解析器会进行数据类型转换。另外，由于元素值有特定的数据类型
，所
以元素值的改变也要符合数据类型。这给你提供了一种确认使用者输入的方法。

如何指定XML元素值的类型？

通过XML Schema指定元素值的类型，你必须在XML Schema的开头声明数据类型
的名
域和schema的名域。

<Schema xmlns="urn:schemas-microsoft-com:xml-data" xmlns:dt="urn:
schemas
-microsoft-com:datatypes">

dt前缀用来在schema中表示指定数据类型的类型属性。

<ElementType name="NUMBER" content="textOnly" dt:type="number"/>

通过dt属性指定元素类型，你必须在XML文档的开头声明数据类型的名域。

<NUMBERS xmlns:dt="urn:schemas-microsoft-com:datatypes">

dt前缀用来给一个元素的例子指定数据类型。

<NUMBERS xmlns:dt="urn:schemas-microsoft-com:datatypes">

<NUMBER dt:dt="number">44533</NUMBER>

</NUMBERS>

--
※ 修改:．Walnuts 于 Nov 30 16:13:54 修改本文．[FROM: 128.2.15.18]

--
┏━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ * 生命的漂泊 * ┃
┃ * * * ┃
┃ * * * * ┃
┃* * 你知道生命的意义吗？ * ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━┛

※ 来源:·BBS 水木清华站 smth.org·[FROM: ab1-75.bjnet.ed]


XML 教程--7

 发信人: ai (真爱~专业灌水&辅修聊天), 信区: WWW
标 题: XML 教程--7
发信站: BBS 水木清华站 (Wed Mar 1 21:40:07 2000)

发信人: Walnuts (nut), 信区: XML
标 题: XML 教程--7
发信站: The unknown SPACE (Tue Nov 30 15:53:54 1999), 转信

访问经过类型定义的XML值

什么是经过类型定义的XML值？

经过类型定义的XML值是指在XML Schema中被指定数据类型的元素值。XML解析
器使
用schema来确认文档。

微软提供的XML Schema版本支持数据类型。作为一项预先展示的技术，它对于
那些
想要用schema和丰富的数据类型构造原型和增长经验的开发者来说是很有用的。微
软积
极参与制定逐步形成的W3C的XML schema标准。开发者需要注意这个版

本的XML Schema是要变化的。

除了拥有字符串值以外，每个XML元素也可以有经过类型定义的值。例如下面
的XML
元素：

<date>1970-09-30</date>

值可以是“1970-09-30”，也可以是经过类型定义的“Web Sep 30 00:00:
00 PDT
1970.”

如何访问经过类型定义的XML值？

可以通过XML对象模式访问经过类型定义的数据。就好象你能根据元素节点的
节点
值性质找到元素值一样，你能根据元素本身的节点类型值找到经过类型定义的元素
值。

例如，考虑一下下面的XML文档：

<?xml version="1.0"?>

<weather xmlns="x-schema:weatherSchema.xml">

<date>1970-09-30</date>

<degrees>67.5</degrees>

</weather>

“weatherSchema.xml”是下面这个文件：

<Schema xmlns="urn:schemas-microsoft-com:xml-data"xmlns:dt="urn:
schemas-
microsoft-com:datatypes">

<ElementType name="date" content="textOnly" dt:type="date"/>

<ElementType name="degrees" content="textOnly" dt:type="float"/>

<ElementType name="weather" content="eltOnly"/>

<element type="date"/>

<element type="degrees"/>

</ElementType>

</Schema>

如果你要处理“degrees”这个元素（xmlDocument.documentElement.
childNodes.
item(1)），你可以根据节点类型值来访问它的值（

xmlDocument.documentElement.childNodes.item(1).nodeTypedValue）。

--
※ 修改:．Walnuts 于 Nov 30 16:09:22 修改本文．[FROM: 128.2.15.18]

--
┏━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ * 生命的漂泊 * ┃
┃ * * * ┃
┃ * * * * ┃
┃* * 你知道生命的意义吗？ * ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━┛

※ 来源:·BBS 水木清华站 smth.org·[FROM: ab1-75.bjnet.ed]


XML 教程--8

 发信人: ai (真爱~专业灌水&辅修聊天), 信区: WWW
标 题: XML 教程--8
发信站: BBS 水木清华站 (Wed Mar 1 21:40:43 2000)

发信人: Walnuts (nut), 信区: XML
标 题: XML 教程--8
发信站: The unknown SPACE (Tue Nov 30 16:05:43 1999), 转信

XML Schema

什么是XML Schema？

W3C XML Activity Page 声明：“尽管XML1.0提供了一种机制，文档类型定义
（
DTD）给标记的使用加了限制，但是对XML文档的自动处理需要更严格更全面的工具
。需
要主要体现在对应用软件各部分的结合、文档结构、属性和数据类型

等等的约束。W3C XML Schema工作组正忙于定义XML文档的结构、内容和语义
。”

微软IE5支持XML Schema，这项预先展示的技术是建立在递交给W3C的
XML-Data草案
的基础上的。XML Schema可被认为是XML-Data草案的子集，它符合文档内容描述（
DCD
）提议的特点。

IE5中的XML解析器能够根据文档类型定义(DTD)或XML Schema解析XML文档。
XML
Schema是用来声明内容模式的基于XML的语法。它有DTD所有的功能，并且还有其他
的功
能如数据类型定义。

如何建立XML Schema？

请在下面的XML文档中找一找每个节点的schema声明。

<class xmlns="x-schema:classSchema.xml">

<student studentID="13429">

<name>Jane Smith</name>

<GPA>3.8</GPA>

</student>

</class>

你会注意到在上面文档中默认的名域是“x-schema:classSchema.xml”。这告
诉解
析器根据URL(“classSchema.xml”)上的schema(x-schema)来解析整个文档。

下面是上面那个文档的完整的schema。注意schema的根元素中的名域声明。第
一个
(xmlns=”urn:schemas-microsoft-com:xml-data”)表明这个XML文档是一个XML

Schema。第二个(xmlns:dt=

”urn:schemas-microsoft-com:datatypes”)允许schema处理者在“
ElementType
”和“AttributeType”声明中的“type”属性前加“dt”前缀来说明元素的类型
和内
容的特征。

<Schema xmlns="urn:schemas-microsoft-com:xml-data" xmlns:dt="urn:

schemas-microsoft-com:datatypes">

<AttributeType name='studentID' dt:type='string' required='yes'/>

<ElementType name='name' content='textOnly'>

<ElementType name='GPA' content='textOnly' dt:type='float'/>

<ElementType name='student' content='mixed'>

<attribute type='studentID'/>

<element type='name'/>

<element type='GPA'/>

</ElementType>

<ElementType name='class' content='eltOnly'>

<element type='student'/>

</ElementType>

</Schema>

schema用“Schema”元素开头，“Schema”元素包括schema名域的声明，在本
例中
还包括数据类型名域的声明。Schema的内容以“AttributeType”和“
ElementType”的
声明开头。

<AttributeType name='studentID' dt:type='string' required='yes'/>

<ElementType name='name' content='textOnly'>

<ElementType name='GPA' content='textOnly' dt:type='float'/>

这些声明接下来的是刚声明过元素的父亲元素的“ElementType”声明。

<ElementType name='student' content='mixed'>

<attribute type='studentID'/>

<element type='name'/>

<element type='GPA'/>

</ElementType>

这个过程继续下去，直到所有元素都已经声明了。

不同于DTDs，XML Schema允许有一个开放的内容模式，你可以进行定义数据类
型、
使用默认值等等操作而不必限定内容。

在下面的schema中，“GPA”元素的类型被定义并有一个默认值，但在“
student”
元素中没有其他节点被声明。

<Schema xmlns="urn:schemas-microsoft-com:xml-data" xmlns:dt="urn:
schemas
-microsoft-com:datatypes">

<AttributeType name="scale" default="4.0"/>

<ElementType name="GPA" content="textOnly" dt:type="float">

<attribute type="scale"/>

</ElementType>

<AttributeType name="studentID"/>

<ElementType name="student" content="eltOnly" model="open"
order="many">

<attribute type="studentID"/>

<element type="GPA"/>

</ElementType>

</Schema>

上面的schema允许你只确认你所关心的区域。这使你对文档有更多的控制，并
允许
你使用schema提供的一些特性而不必严格确认。

一些说明：

“ElementType”和“AttributeType”声明必须放在“attribute”和“
element”
内容声明之前。例如，在上面的schema中，“GPA”元素的“ElementType”声明必
须放
在“student”元素的“

ElementType”声明之前。

“order”属性的默认值是建立在“content”属性的值上的。当content值为
“
eltOnly”时，order默认值是“seq”。当content值为“mixed”时，order默认值
是“
many”。

--

--
┏━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ * 生命的漂泊 * ┃
┃ * * * ┃
┃ * * * * ┃
┃* * 你知道生命的意义吗？ * ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━┛

※ 来源:·BBS 水木清华站 smth.org·[FROM: ab1-75.bjnet.ed]


XML 教程--9

 发信人: ai (真爱~专业灌水&辅修聊天), 信区: WWW
标 题: XML 教程--9
发信站: BBS 水木清华站 (Wed Mar 1 21:41:18 2000)

发信人: Walnuts (nut), 信区: XML
标 题: XML 教程--9
发信站: The unknown SPACE (Tue Nov 30 16:36:39 1999), 转信

编写结构完整的XML文档

一个XML文档如果符合一些基本的规范，那它就是结构规范的。XML格式有一套
比
HTML简单的解析规则，允许XML解析器不需要外部描述或了解数据含

义就可以解析XML数据。

起始标签和结束标签必须匹配

XML元素可以包含正文和其他元素，在它的schema中用严格的规范给出了文档
的类
型。但是，元素必须严格嵌套：每个起始标签必须有对应的结束

标签。

元素不能交迭

下面的例子不符合XML语法。

<title>Evolution of Culture <sub>in Animals

</title> by John T. Bonner</sub>

改正后符合语法的形式是：

<title>Evolution of Culture

<sub>in Animals</sub>

<author>by John T. Bonner</author>

</title>

XML标签对大小写是敏感的

下面是不同的元素。

<City> <CITY> <city>

表示空元素

XML对空元素有速记办法：一个标签以/>符号结尾就表示空元素。例如，下面
两行
是等效的：

<title/>

<title></title>

保留字符

一些字符是XML句法结构的一部分。如果你想要在XML数据中引用它们，必须用
特殊
的字符来替代它们。下面列出这些字符。

< <

& &

> >

" "

' &apos;

例如，"Melons cost < $1 at the A&P"要写成"Melons cost < $1 at the A&

amp;P."。

每个XML文档必须有唯一的根元素

例如，在天气报告中，元素<weather-report>表示这个XML文档唯一的根元素
。

--

--
┏━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ * 生命的漂泊 * ┃
┃ * * * ┃
┃ * * * * ┃
┃* * 你知道生命的意义吗？ * ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━┛

※ 来源:·BBS 水木清华站 smth.org·[FROM: ab1-75.bjnet.ed]


XML 教程--10

 发信人: ai (真爱~专业灌水&辅修聊天), 信区: WWW
标 题: XML 教程--10
发信站: BBS 水木清华站 (Wed Mar 1 21:42:53 2000)

发信人: Walnuts (nut), 信区: XML
标 题: XML 教程--10
发信站: The unknown SPACE (Tue Nov 30 16:45:30 1999), 转信

使用XML解析器

还等什么？快把你的HTML转变成XML...

正在写书的当中，我涉及到了XML。我开始把文章写成HTML的方式。这样确实
很方
便，让文字成为置标化的ASCII形式使得编写程序、转换和添加数据十分

容易。例如，我不必给各章节、图表编号，不用自己制表。Perl脚本读取原始
的
HTML产生更完善的HTML输出，所有部分被编号并且相互链接。在输出中我把

每一段都编号，在编号上增添能调用反馈功能的链接—其一能将评论的电子邮
件自
动发送给我，其二将评论发送给私有的新闻组供小组成员讨论。

考虑过我写作的需要，我明白应该让XML来做些事，而且这样的转换是很有意
义的
。我为什么不一开始就首选XML呢? 那大概是由于习惯的偏见。首先我承认自己一

直因为需要编写和遵循文件类型定义(DTD)而被唬住了。我曾听说了无数有关
冗繁
的DTD项目的故事，它们耗费了大量的时间和资金却最终一无所获。其次，我不太

清楚怎样编写XML,尤其是如何显示XML。

去年我参加Perl大会回来后不得不尝试XML。与会期间，Tim Bray（OpenText
的创
始者，XML规范的编者之一）指出了一个使我难忘的简单事

实。“如果你在花时间写解析代码”，他和我说，“你就是在浪费时间。”
Tim 讲
的没错。即使我只是曾在写清晰简单的HTML,就已经为自己想要重写解析工具而

深感愧疚。XML的解析工具如雨后春笋般涌现，应该了解怎样使用这些工具。

<<返回标题

从HTML到XML

很长时间我一直认为XML从最简单的方式来看不过是在HTML基础上的些许改进
。但
是当我把六万五千字的HTML原稿转换为结构良好的XML时，原来

的想法彻底改变了。利用一些文本编辑的宏，只用了一小时这些转换就大功告
成了
。转换过程的第一步要封闭所有的标记(tag)。你需要用</p>匹配每一个<p>, 对于

所有成对的标记都如此。象<img src="fig.gif">这样的空标记也要闭合。就
变成
了这样:<img src="fig.gif"/>。然后, 我必须给所有的属性项加

上引号。<img src=fig.gif>这种形式就不能再出现了。也没有了象<table
border
＞这样的缺省属性。那必须变为<table border="0">。

最后，我要处理逸出(Escape)实体。我的原文使用了许多的HTML结构，因此尖
括弧
写为<和 >。如果有这样的符号，XML就要求有多一个层次级别。这

些实体必须变为<和>。XML 处理器处理外层信息；而浏览器处理里层的内容

。

新的成为一些W3C技术测试容器的Amaya 浏览器现在已经能够读入HTML 写出满
足三
项要求的相应的XML。它也是HTML/XML的编辑

器，适用文本和结构的浏览。如果你感兴趣，在www.w3c.org有 Win32和Unix
风格
的版本。

现在，我可以用Perl的XML::Parse模块来解析原稿。在James Clark 的
expat (
Mozilla 5中的XML引擎)的基础上，这一新的Perl

模块发展很快;在www.activestate.com 上的Perl-XML邮件列表有详细的讨论
。 (
如果你在使用ActiveState的新版ActivePerl,

你可以Perl软件包管理器Perl Package Manager安装该解析器。)这儿说明了
如何
在Perl中解析XML文档:

use XML::Parser;

my $xml = XML::Parser->new(Style => 'Stream');

$xml->parsefile("/jon/book/book.htm");

当你在流方式中使用XML::Parser,解析事件调用Perl方法中StartTag,
EndTag和
Text。见表1的实例。StartTag 方法存储当前的标记

(如h1) 和属性(如class="chapter")。当Text 方法被调用时—例如，chapter
1
中h1标记的文本– 用所得的信息与章节号给该章的标题添加一

个数字。EndTag方法检查内容刚被Text方法释放出的标记是否是应该后续注释
链接
的标记(如p,li等)。

<<返回标题

看，不是DTD!

请注意expat不是有效性检查的解析器, XML::Parser也不是。它仅检查一个
XML文
档是否结构良好(well-formed) ,不必遵循DTD的规

定。缺少DTD, 我的脚本从哪儿获取决定何为章节、何为图表或列表的信息？
从CSS
。也即为，用下面的形式替代虚构的XML化的“我的书”的表示法：

<chapter>Conferencing</chapter>

<p></p>

<figure>

<figure-title>NNTP tools</figure-title>

<figure-image>./figures/fig.gif</figure-image>

</figure>

我用CSS类的属性兼做风格和结构的表示，象这样:

<h1 class="chapter">Conferencing</h1>

<p class="figure-title">NNTP tools</p>

<div class="figure-image">

<img src="./figures/fig.gif"/>

</div>

长远来看,这种方法会毫无意义。IE 5.0 已开始能够显示与CSS相结合的纯
XML。一
旦性能成熟且广泛使用, 就不必将XML转换为XML然后递交浏览

器。但目前，这种XML/HTML/CSS的混合战略很有意思。确实既然我正通过脚本
运行
我的XML资源，我能写纯粹的XML并完全依靠脚本为浏览器提

供内容。但不是每个人都想那样做。通过CSS将结构化的信息编码, 你生成直
接在
现在的浏览器中显示的XML。

后来我意识到混合的途径并不排除使用DTD。通常你先写DTD, 再基于它建立
XML文
档。但在使用HTML中常用到一隐指的DTD。使我吃惊的是发现

和格式化十分容易。因为expat不能检查有效性，我需要一解析器来做这件事
。开
始我用DXP, DataChannel的第一个基于Java的解析器。它起初是

Norbert Mikula的 NXP, 现已被Microsoft/DataChannel的 DCXML所取代。

DXP告诉了我需要知道的一切。首先它“埋怨”没有定义元素(element)。因此
我不
得不象这样写出定义:

<!ELEMENT a (#PCDATA)>

<!ELEMENT p (#PCDATA | i | u | b |

span | center | a | tt)*>

有人奇怪为什么XML不能就用XML描述之，但该由SGML演变来的语法正是我们所
需要
的。第一个声明表示存在'a' 元素，它包含了解析的字符数据。第二个

声明表示存在'p' 元素，它包含解析的字符数据或所列的一系列元素。

我还规定了我正在使用的CSS属性。这里是标志特殊元素的p标记的变量:

<!ATTLIST p

class ( listing-title |

figure-title |

table-title |

listing-caption |

figure-caption

) #IMPLIED

>

当我接着重新运行解析器，我分清一些在各处使用的规则。例如,我曾想在表
中不
用图象。解析器找到了这些地方促使我决定是否允许DTD中这种结构或是相应地改
变源
文

件。它也会出现一个惊人的错误：在第二章打开的一个div标记直到第七章才
找到
相应的结束标记。对于不检查有效性的解析器，错上加错，会得至正确！

整个过程只花了数小时。转换对于文件的改动不大，但使得他们倍添价值。在
O'
Reilly 和Associates的产品群机于接受HTML ,不管它有多么整洁。当他

们得知会得到结构良好和有效的XML,他们真是欣喜若狂。

这个方法不是最理想的。你牺牲了DTD的许多优点。例如，你能这样做：

<! ELEMENT figure (

figure-title,

figure-body,

figure-caption)>

这个声明定义一图表作为单个复杂对象，它由三个必要成分组成的。XML 打算
这样
做，下次类似情况我可能用这种方法。然而即使你真的这样利用DTD,它的文件结

构的声名强制性可能仍不够。比方一些属性有数千个允许的值。你能在DTD中
将其
列出，但你可能想要在数据库中查找。有时需要依赖于解析器的程序代码补充DTD
的

声名功能。

<<返回标题

微软的XML解析器

当我利用表一的转换方法对我的书的XML进行转换，它产生的HTML输出可以在
任何
的4.x浏览器中浏览。我用了CSS普通的一部分。(遗憾的是，目前

Netscape和Microsoft的产品的CSS的实现状况使这种转换比应有的更艰难.)

尽管都在Microsoft的环境下操作，你也可以采用表二的方法.它展示了在
JScript
控制下MSIE 5中的C++ 解析器.该解析器不是面向事件而是面向树

(Tree)型结构.你一旦建立了整个的树来表示你的文档,你能横贯、转换和显示
该树
.在实际应用中,两种方法区别不大，有些解析器两者都支持.IBM的Java解析器

DXP和其它工具实现了简单的XML API--SAX.

在浏览器内部运行时,通过访问浏览器的文档对象模块(DOM),基于解析器的应
用能
做各种有用的事情.理论上,表一中实现的简单反馈机制可以成为交互的文档编辑器
,直

接在源文件中就可以积累浏览者的评价. C++ 解析器不一定要在浏览器中运行
.我
现在从一个.CMD文件代替DXP来用它检查我的书的有效性.怎么

做?WSH(Windows Scripting Host)可以实现.提供validate.js的文件,它包括:

var doc = new

ActiveXObject("microsoft.xmldom");

doc.load("c:\\jon\\book.xml");

if (doc.lastError.reason != "")

{ WScript.echo(doc.lastError.reason); }

我能用命令cscript validate.js 来确认书的有效性.

Java程序员想要把确认有效的XML解析器结合进他们的应用可以使用DCXML,
DataChannel DXP的后一产品.

Microsoft/DataChannel 的合作产品刚以beta版的形式在www.datachannel.
com 上

公布. 目前还没有使用说明文档，但如果你要

了解该C++解析器如何使用，你可以体会在表三中显示的Java的版本.

目前XML的发展日新月异. www.w3c.org和 www.finetuning.com 、www.xml.
org.cn
能让你紧跟XML的步伐. 不

要等到5.0浏览器实现了所有的XML的特点再去学习.每一个现有的HTML网页就
是潜
在的相同甚至是更有价值的XML页!

--

--
┏━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ * 生命的漂泊 * ┃
┃ * * * ┃
┃ * * * * ┃
┃* * 你知道生命的意义吗？ * ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━┛

※ 来源:·BBS 水木清华站 smth.org·[FROM: ab1-75.bjnet.ed]


XML 教程--11

 发信人: ai (真爱~专业灌水&辅修聊天), 信区: WWW
标 题: XML 教程--11
发信站: BBS 水木清华站 (Wed Mar 1 21:43:44 2000)

发信人: Walnuts (nut), 信区: XML
标 题: XML 教程--11
发信站: The unknown SPACE (Tue Nov 30 16:50:50 1999), 转信

数据库中的XML应用实例

我们在该例中介绍如何实现数据库和XML结合。您将可以看到，该例中实现对
一般
的关系数据库进行查询等操作，并将结果输出到通用的XML。例中还示范结合采用

XSL规范XML的格式，用HTTP和ASP进行网络的通信和处理。您可以在此基础上
进行
许多扩充的开发，特别是服务器/客户端架构的Web应用。

下面我们来详细说明该实例及使用方法：

(1)准备工作

打开控制面板，将Northwind.mdb数据库添加至您的用户数据源(DNS)并命名为
"
nwind"；

process.asp放在服务器端，第4部分中要用到该文件处理HTTP请求；

用Visual Basic 6.0打开test.vbp项目，引用MS XML Version2.0库。

（2）定义的变量

Dim con As ADODB.Connection

Dim rs As ADODB.Recordset

Dim xmlstr As String

Dim xmldoc As MSXML.DOMDocument

Dim xmlhttp As MSXML.XMLHTTPRequest

Dim xsldoc As MSXML.DOMDocument

Dim message As MSXML.DOMDocument

Dim query As String

（3）初始化

函数init(),在Form_Load()中调用

'建立和打开ADODB与ODBC的数据连接

Set con = New ADODB.Connection

con.ConnectionString = "DSN=nwind;UID=sa;PWD=;"

con.Open

'建立XML 文档对象(XML Document Objects)

Set xmldoc = New MSXML.DOMDocument

Set xsldoc = New MSXML.DOMDocument

Set message = New MSXML.DOMDocument

（4）实现查询和输出：

在Command1_Click函数中实现

'查询数据库

query = "Select * FROM Customers WHERE CustomerID = '" & Text1.
Text & "'
"

Set rs = con.Execute(query)

'将查询的结果存储到XML文件

On Error Resume Next

Kill ("recordset.xml")

rs.Save "recordset.xml", adPersistXML

xmldoc.async = False

xmldoc.Load ("recordset.xml")

'执行对子树的查询，实际上是滤除其它Schema定义的部分, 提取出满足查询
结果
的纯数据

MsgBox xmldoc.selectSingleNode("//z:row").xml

'载入样式表(stylesheet)并将XML规格化

xsldoc.async = False

xsldoc.Load ("standard.xsl")

xmldoc.transformNodeToObject xsldoc, message

'将XML发送给服务器进行处理

Set xmlhttp = New MSXML.XMLHTTPRequest

xmlhttp.Open "POST", "http://icds/process.asp", False ‘要根据
process.
asp的位置指定好第2项参数

xmlhttp.send message

（5）使用应用程序

按F5执行该程序，在上面的文本框中输入查询的顾客的ID, 按下面的”处理顾
客信
息”执行查询并输出结果。

--

--
┏━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ * 生命的漂泊 * ┃
┃ * * * ┃
┃ * * * * ┃
┃* * 你知道生命的意义吗？ * ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━┛

※ 来源:·BBS 水木清华站 smth.org·[FROM: ab1-75.bjnet.ed]


水木清华精华区_No Title

未名空间的XML教程
主要涉及XML，XML数据岛
schema，XML与数据库。
上一篇 返回上一页 回到目录 回到页首


XML DOM 初級使用手冊 (BM: inannan)

编号 | 类别 | 标题 | 编辑日期
1 | 文件 | XML DOM 初級使用手冊(1) veb | 2000.05.27
2 | 文件 | XML DOM 初級使用手冊(2) <图象> veb | 2000.05.27
返回上一页 回到上一级目录


XML DOM 初級使用手冊(1)

 发信人: lingi ( linger), 信区: XML
标 题: XML DOM 初級使用手冊(1)
发信站: BBS 水木清华站 (Thu Apr 6 15:02:34 2000)

转自：chinaasp->xml

XML DOM 初級使用手冊

Brian Randell
DevelopMentor
1999 年 10 月
摘要：本篇文章將討論如何經由 XML DOM 的執行方式來存取並操作 XML 文件，一如
Microsoft XML Parser 所述。（10面列印頁）

內容

簡介
DOM 到底是什麼？
如何使用 XML Dom？
如何載入文件？
處理失敗
擷取 XML 文件資訊
如何瀏覽文件？
接下來呢？

簡介
假設您是 Visual Basic? 程式開發人員，您收到了一些延伸性標示語言 (XML) 文件格式
的資料。現在您想要取得 XML 文件中的資訊， 然後將此資訊整合進您的 Visual Basic
解決方案中。 您當然可以自己編程式碼來剖析 XML 檔案內容，因為它畢竟只是一個文字
檔而已。
不過，這個方法並不十分經濟，而且浪費了 XML 的一項強大功能： 以結構方式呈現資料
。

擷取 XML 檔案資訊的較好方式是使用 XML 分析元。 XML 分析元是一個可以讀取 XML 檔
案並使用其內含資料的軟體。 作為一個 Visual Basic 程式開發人員，您可以使用支援
XML 「文件物件模型（DOM）」的分析元。 DOM 定義了一組分析元可呈現的標準指令集，
可讓您從程式中存取
HTML 以及 XML 文件的內容。 支援 DOM 的 XML 分析元將會取用 XML 文件中的資料，
然後經由可編入程式的物件集將其呈現。本篇文章將說明如何經由 XML DOM 的執行方式
來存取並操作 XML 文件，一如 Microsoft?XML Parser (Msxml.dll) 所顯現。

在進一步讀取之前，您應該看一下原始的 XML 檔案，以取得一個概念， 知道分析元如何
讓您更加便利。下列程式碼顯現 Cds.xml 檔案的內容，它包含了光碟項目。每個項目包
含的資訊有演唱者、 標題及曲目。

<?xml version="1.0"?>
<!DOCTYPE compactdiscs SYSTEM "cds.dtd">
<compactdiscs>
<compactdisc>
<artist type="individual">Frank Sinatra</artist>
<title numberoftracks="4">In The Wee Small Hours</title>
<tracks>
<track>In The Wee Small Hours</track>
<track>Mood Indigo</track>
<track>Glad To Be Unhappy</track>
<track>I Get Along Without You Very Well</track>
</tracks>
<price>$12.99</price>
</compactdisc>
<compactdisc>
<artist type="band">The Offspring</artist>
<title numberoftracks="5">Americana</title>
<tracks>
<track>Welcome</track>
<track>Have You Ever</track>
<track>Staring At The Sun</track>
<track>Pretty Fly (For A White Guy)</track>
</tracks>
<price>$12.99</price>
</compactdisc>
</compactdiscs>

上一份文件的第二行參照了一個外部的 DTD，或是「文件類型定義 （Document Type
Definition）檔案。DTD 是定義特殊 XML 文件類型的版面配置及預期內容。 XML 分析元
可以使用 DTD 來判定文件是否有效。 DTD 只是一個協助分析元確認文件的方式。另一個
漸漸普及的方法是 XML
架構 （XML Schemas）。您可使用 XML 來定義架構與 DTD 對照（它使用的是自己 "有趣
的" 語法）。

下列程式碼顯示 Cds.xml 所使用的 Cds.dtd 內容：

<!ELEMENT compactdiscs (compactdisc*)>
<!ELEMENT compactdisc (artist, title, tracks, price)>
<!ENTITY % Type "individual | band">
<!ELEMENT artist (#PCDATA)>
<!ATTLIST artist type (%Type;) #REQUIRED>
<!ELEMENT title (#PCDATA)>
<!ATTLIST title numberoftracks CDATA #REQUIRED>
<!ELEMENT tracks (track*)>
<!ELEMENT price (#PCDATA)>
<!ELEMENT track (#PCDATA)>
本篇文章將不會進一步探討 DTD 和 XML 架構。 XML 架構語言是根據已提交到 W3C 的
XML-Data附註。

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.144.40]
返回上一页 回到目录 回到页首 下一篇


XML DOM 初級使用手冊(2) <图象>

 发信人: lingi ( linger), 信区: XML
标 题: XML DOM 初級使用手冊(2) <图象>
发信站: BBS 水木清华站 (Thu Apr 6 15:05:20 2000)

转自：chinaasp->xml

DOM 到底是什麼？
用於 XML 的 DOM 是顯現 XML 文件內容的物件模型。 W3C 的文件物件模型 (DOM) 層級
1 規格 現在定義了 DOM 應該呈現的內容、方法及事件。 Microsoft 的 DOM 執行方式完
全支援 W3C 標準， 它的附加功能可讓您更輕易地從您的程式中使用 XML 檔案。

如何使用 XML Dom？
要使用 XML DOM 必須建立 XML 分析元的例項。 Microsoft 是透過 Msxml.dll 中的標準
COM 介面集來顯現 XML DOM，使其成為可能。 Msxml.dll 包含類型程式庫與執行方式程
式碼，以讓您使用 XML 文件。 如果您使用的是指令執行用戶端（如 Internet
Explorer 中的 VBScript
執行）， 您會藉由使用 CreateObject 方法建立 Parser 物件例項以使用 DOM。

Set objParser = CreateObject( "Microsoft.XMLDOM" )

如果您是從 Active Server Page (ASP) 使用 VBScript，您將使用 Server.CreateObjec
t。

Set objParser = Server.CreateObject( "Microsoft.XMLDOM" )

如果您使用 Visual Basic，您可以設定參照到 MSXML 類型程式庫 （Msxml.dll 所提供
）來存取 DOM。若要從 Visual Basic 6.0 中使用 MSXML 的話，請：

開啟專案參照對話方塊。
從可用的 COM 物件清單中選取 Microsoft XML，版本 2.0。 如果找不到這個項目，您將
需要 MSXML 程式庫。
接著您可以建立 Parser 物件例項。
Dim xDoc As MSXML.DOMDocument Set xDoc = New MSXML.DOMDocument

在哪裡可以找到 Msxml.dll 呢？您可以使用下列任何一種方式來取得 MSXML 程式庫：

安裝 Internet Explorer 5.0 — MSXML 分析元是其內部元件。
或者是， 下載 Microsoft XML 分析元的可重新發佈版本。
一旦參照了 Visual Basic 專案中的類型程式庫，請啟動分析元、 載入文件，然後使用
文件中的日期。

現在您可能會想—那麼我使用的是什麼呢？如果您使用 「Visual Basic 6.0 物件瀏覽器
」來開啟 MSXML 程式庫並測試其物件模型的話， 您將看見物件模型是相當豐富的。本篇
文章將示範如何使用 DOMDocument 類別和 IXMLDOMNode 介面來存取 XML 文件。

圖 1. MSXML 分析元物件模型

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.144.40]
上一篇 返回上一页 回到目录 回到页首


XML教程

 发信人: veb (君), 信区: XML
标 题: XML教程
发信站: BBS 水木清华站 (Thu Apr 13 23:53:15 2000) WWW-POST

[返回首页][返回资源]

XML教程
翻译:褚健

1 处理XML元素
2 处理XML文档

3 处理XML数据岛
4 类似于文档对象访问一个XML数据岛
5 访问XML对象模式
6 在XML文档中使用数据类型
7 访问经过类型定义的XML值
8 XML Schema

处理XML元素

XML是一种标识语言。一个XML元素是由开始标签、结束标签以及标签之间的数据构成的。
开始和结束标签用来描述标签之间的数据。标签之间的数据被认为是元素的值。例如，在
下面一个XML元素的例子中，元素“director”的值是“&Eacute;d Wood”。

<director>Ed Wood</director>

元素名（“director”）允许你把“Ed Wood”这个值标出来，这样你就能把这些数据同
另外类似的数据区分开来。例如，有可能另一个元素的值也是“Ed Wood”。

<actor>Ed Wood</actor>

由于每个元素都有不同的标签名，所以你能很容易把上面两个元素的值区别开来。如果没
有办法把数据标出来，两个有同样值的元素会混淆起来。

返回

处理XML文档

一个基本的XML文档就是一个XML元素，它可以嵌套XML元素。例如，下面的XML元素“
books”就是一个有效的XML文档。

<books>
<book isbn="0345374827">
<title>The Great Shark Hunt</title>
<author>Hunter S. Thompson</author>
</book>
</books>

构建一个基本的XML文档需要记住关键的三点：所有元素必须有结束标签；所有元素必须
正确的嵌套（不允许交迭元素）；所有特征值必须加引号。

返回

处理XML数据岛
什么是XML数据岛?

数据岛是指存在于HTML页面中的XML代码。数据岛允许你在HTML页面中集成XML，对XML编
写脚本，不需要通过脚本或<OBJECT>标签读取XML。几乎所有能够存在于一个结构完整的
XML文档中的东西都能存在于一个数据岛中。包括处理指示、DOCTYPE声明和内部子集。（
注意，编码串不能放在数据岛中。）

数据岛的XML可以是内嵌的：

<XML ID="XMLID">
<customer>
<name>Herbert Hanley</name>
<custID>81422</custID>
</customer>
</XML>

或者在XML标签中通过SRC属性引用：

<XML ID="XMLID" SRC="customer.xml"></XML>

处理指导
简单处理XML。把XML放到一个XML元素中，并且给这个XML元素一个ID。

返回

类似于文档对象访问一个XML数据岛
什么是XML文档对象?

XML文档对象是指一个拥有属性和方法的对象，你可以利用这些属性和方法访问和处理XML
文档。当一个XML数据岛被读取和解析时，就会创建一个XML文档对象。

怎样访问XML数据岛?

下面是一个带有数据岛的HTML页面。数据岛在<XML>元素中。

<HTML>
<HEAD>
<TITLE>HTML with XML Data Island</TITLE>
</HEAD>
<BODY>
<P>Within this document is an XML data island.</P>
<XML ID="resortXML">
<resorts>
<resort>Calinda Cabo Baja</resort>
<resort>Na Balam Resort</resort>
</resorts>
</XML>
</BODY>
</HTML>

你能通过ID属性访问数据岛，“resortXML”成为文档对象的名称。你能利用这个对象的
方法和属性访问它的根节点和孩子节点。在上面的例子中，根节点是<resorts>，孩子节
点是<resort>。下面列出了一些属性和方法，可用来访问XML文档的节点。

XMLDocument：返回对XML文档对象模式的引用。

documentElement：返回XML文档的根节点。

childNodes：返回节点的孩子节点目录。

item：通过索引访问目录中的个别节点。索引值是从0开始的，所以item(0)返回第一个节
点。

text：返回节点的内容。

下面的代码访问第二个孩子节点<resort>并返回它的内容“Na Balam Resort”。

resortXML.XMLDocument.documentElement.childNodes.item(1).text

返回

访问XML对象模式
什么是XML对象模式?

微软IE5中的XML解析器揭示了XML对象模式，允许你访问和处理XML文档中的节点。当解析
器读取并且解析一个XML文档时，它将建立一棵节点树，每个节点都能通过脚本来访问。

例如，如果解析器读取并且解析下面的XML文档，它将创建一个能通过文档ID值
(xmlDocument)被引用的文档对象，一个表现根节点的对象和一个表现树中其余节点的对
象。

怎样访问树中的节点?

请试着在下面的数据岛中找出访问每个节点所需要的代码。

<XML ID="xmlDocument">
<class>
<student studentID="13429">
<name>Jane Smith</name>
<GPA>3.8</GPA>
</student>
</class>
</XML>

返回

在XML文档中使用数据类型
什么是XML文档中的数据类型?

微软提供的XML Schema版本支持数据类型。作为一项预先展示的技术，它对于那些想要用
schema和丰富的数据类型构造原型和增长经验的开发者来说是很有用的。微软积极参与制
定逐步形成的W3C的XML Schema标准。开发者需要注意这个版本的XML Schema是要变化的
。在微软IE5当中，元素值能被指定数据类型。数据类型能够通过XML Schema或根据实际
情况被指定。以前，XML元素值只有一种类型（字符串），所以开发者要处理XML文档必须
花时间转换元素值。键入你的XML数据，解析器会进行数据类型转换。另外，由于元素值
有特定的数据类型，所以元素值的改变也要符合数据类型。这给你提供了一种确认使用者
输入的方法。

如何指定XML元素值的类型？

通过XML Schema指定元素值的类型，你必须在XML Schema的开头声明数据类型的名域和
schema的名域。

<Schema xmlns="urn:schemas-microsoft-com:xml-data" xmlns:dt="urn:schemas-micro
soft-com:datatypes">

dt前缀用来在schema中表示指定数据类型的类型属性。

<ElementType name="NUMBER" content="textOnly" dt:type="number"/>

通过dt属性指定元素类型，你必须在XML文档的开头声明数据类型的名域。

<NUMBERS xmlns:dt="urn:schemas-microsoft-com:datatypes">

dt前缀用来给一个元素的例子指定数据类型。

<NUMBERS xmlns:dt="urn:schemas-microsoft-com:datatypes">
<NUMBER dt:dt="number">44533</NUMBER>
</NUMBERS>
返回

访问经过类型定义的XML值

什么是经过类型定义的XML值？

经过类型定义的XML值是指在XML Schema中被指定数据类型的元素值。XML解析器使用
schema来确认文档。

微软提供的XML Schema版本支持数据类型。作为一项预先展示的技术，它对于那些想要用
schema和丰富的数据类型构造原型和增长经验的开发者来说是很有用的。微软积极参与制
定逐步形成的W3C的XML schema标准。开发者需要注意这个版本的XML Schema是要变化的
。

除了拥有字符串值以外，每个XML元素也可以有经过类型定义的值。例如下面的XML元素：

<date>1970-09-30</date>

值可以是“1970-09-30”，也可以是经过类型定义的“Web Sep 30 00:00:00 PDT 1970.
”

如何访问经过类型定义的XML值？

可以通过XML对象模式访问经过类型定义的数据。就好象你能根据元素节点的节点值性质
找到元素值一样，你能根据元素本身的节点类型值找到经过类型定义的元素值。

例如，考虑一下下面的XML文档：

<?xml version="1.0"?>
<weather xmlns="x-schema:weatherSchema.xml">
<date>1970-09-30</date>
<degrees>67.5</degrees>
</weather>

“weatherSchema.xml”是下面这个文件：

<Schema xmlns="urn:schemas-microsoft-com:xml-data"xmlns:dt="urn:schemas-micros
oft-com:datatypes">
<ElementType name="date" content="textOnly" dt:type="date"/>
<ElementType name="degrees" content="textOnly" dt:type="float"/>
<ElementType name="weather" content="eltOnly"/>
<element type="date"/>
<element type="degrees"/>
</ElementType>
</Schema>

如果你要处理“degrees”这个元素（xmlDocument.documentElement.childNodes.item(1
)），你可以根据节点类型值来访问它的值（xmlDocument.documentElement.childNodes.
item(1).nodeTypedValue）。

返回

XML Schema

什么是XML Schema？

W3C XML Activity Page 声明：“尽管XML1.0提供了一种机制，文档类型定义（DTD）给
标记的使用加了限制，但是对XML文档的自动处理需要更严格更全面的工具。需要主要体
现在对应用软件各部分的结合、文档结构、属性和数据类型等等的约束。W3C XML Schema
工作组正忙于定义XML文档的结构、内容和语义。”

微软IE5支持XML Schema，这项预先展示的技术是建立在递交给W3C的XML-Data草案的基础
上的。XML Schema可被认为是XML-Data草案的子集，它符合文档内容描述（DCD）提议的
特点。

IE5中的XML解析器能够根据文档类型定义(DTD)或XML Schema解析XML文档。XML Schema是
用来声明内容模式的基于XML的语法。它有DTD所有的功能，并且还有其他的功能如数据类
型定义。

如何建立XML Schema？

请在下面的XML文档中找一找每个节点的schema声明。

<class xmlns="x-schema:classSchema.xml">
<student studentID="13429">
<name>Jane Smith</name>
<GPA>3.8</GPA>
</student>
</class>

你会注意到在上面文档中默认的名域是“x-schema:classSchema.xml”。这告诉解析器根
据URL(“classSchema.xml”)上的schema(x-schema)来解析整个文档。

下面是上面那个文档的完整的schema。注意schema的根元素中的名域声明。第一个
(xmlns=”urn:schemas-microsoft-com:xml-data”)表明这个XML文档是一个XML Schema
。第二个(xmlns:dt=”urn:schemas-microsoft-com:datatypes”)允许schema处理者在“
ElementType”和“AttributeType”声明中的“type”属性前加“dt”前缀来说明元素的
类型和内容的特征。

<Schema xmlns="urn:schemas-microsoft-com:xml-data" xmlns:dt="urn:schemas-micr
osoft-com:datatypes">
<AttributeType name='studentID' dt:type='string' required='yes'/>
<ElementType name='name' content='textOnly'>
<ElementType name='GPA' content='textOnly' dt:type='float'/>
<ElementType name='student' content='mixed'>
<attribute type='studentID'/>
<element type='name'/>
<element type='GPA'/>
</ElementType>
<ElementType name='class' content='eltOnly'>
<element type='student'/>
</ElementType>
</Schema>

schema用“Schema”元素开头，“Schema”元素包括schema名域的声明，在本例中还包括
数据类型名域的声明。Schema的内容以“AttributeType”和“ElementType”的声明开头
。

<AttributeType name='studentID' dt:type='string' required='yes'/>
<ElementType name='name' content='textOnly'><ElementType name='GPA'
content='textOnly' dt:type='float'/>

这些声明接下来的是刚声明过元素的父亲元素的“ElementType”声明。

<ElementType name='student' content='mixed'>
<attribute type='studentID'/>
<element type='name'/>
<element type='GPA'/>
</ElementType>

这个过程继续下去，直到所有元素都已经声明了。

不同于DTDs，XML Schema允许有一个开放的内容模式，你可以进行定义数据类型、使用默
认值等等操作而不必限定内容。

在下面的schema中，“GPA”元素的类型被定义并有一个默认值，但在“student”元素中
没有其他节点被声明。

<Schema xmlns="urn:schemas-microsoft-com:xml-data" xmlns:dt="urn:schemas-micro
soft-com:datatypes">
<AttributeType name="scale" default="4.0"/>
<ElementType name="GPA" content="textOnly" dt:type="float">
<attribute type="scale"/>
</ElementType>
<AttributeType name="studentID"/>
<ElementType name="student" content="eltOnly" model="open"
order="many">
<attribute type="studentID"/>
<element type="GPA"/>
</ElementType>
</Schema>

上面的schema允许你只确认你所关心的区域。这使你对文档有更多的控制，并允许你使用
schema提供的一些特性而不必严格确认。

一些说明：

“ElementType”和“AttributeType”声明必须放在“attribute”和“element”内容声
明之前。例如，在上面的schema中，“GPA”元素的“ElementType”声明必须放在“
student”元素的“ElementType”声明之前。

“order”属性的默认值是建立在“content”属性的值上的。当content值为“eltOnly”
时，order默认值是“seq”。当content值为“mixed”时，order默认值是“many”。

返回

------------------------------------------------------------------------------
--

[返回标题][返回资源][返回首页][欢迎投稿]

最后更新：1999年8月25日
本站点所刊文章版权，均归本站点所有。署名作者拥有其著作权。
未经允许，不得随意转载,违者必究！！

www.xml.org.cn

--
※ 修改:·veb 於 Apr 15 16:01:37 修改本文·[FROM: 202.112.99.209]
※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.112.99.209]
上一篇 返回上一页 回到目录 回到页首


XML应用(ec,wap,etc) (BM: inannan)

编号 | 类别 | 标题 | 编辑日期
1 | 目录 | WAP指南 (BM: takeiteasy) | 2001.05.28
2 | 目录 | XML与电子商务 (BM: inannan) | 2001.05.30
3 | 文件 | Re: 谁先说说xml怎么用吧 inannan | 2001.05.25
4 | 文件 | XML的实际应用 inannan | 2001.05.25
5 | 文件 | Re: 请问XML在机械行业的应用。 inannan | 2001.05.30
6 | 文件 | 关于使用xml+java开发web应用! inannan | 2001.05.30
返回上一页 回到上一级目录


WAP指南 (BM: takeiteasy)

编号 | 类别 | 标题 | 编辑日期
1 | 目录 | WML编程语言 (BM: takeiteasy) | 2001.02.22
2 | 目录 | WAP服务器设置 (BM: takeiteasy) | 2001.02.22
3 | 目录 | 手机上网设置 (BM: takeiteasy) | 2001.02.22
4 | 目录 | WAP简介 (BM: takeiteasy) | 2001.05.28
5 | 目录 | WAP建站问题 (BM: takeiteasy) | 2001.04.20
6 | 目录 | WAP前景展望 (BM: inannan) | 2001.05.28
返回上一页 回到上一级目录


WML编程语言 (BM: takeiteasy)

编号 | 类别 | 标题 | 编辑日期
1 | 文件 | WML语言与编程(1) takeiteasy | 2000.06.02
2 | 文件 | WML语言与编程(2) takeiteasy | 2000.06.02
3 | 文件 | WML语言与编程(3) takeiteasy | 2000.06.02
4 | 文件 | WML语言与编程(4) takeiteasy | 2000.06.02
5 | 文件 | WML语言与编程(5) takeiteasy | 2000.06.02
6 | 文件 | WML语言与编程(6) takeiteasy | 2000.06.02
7 | 文件 | WML语言与编程(7) takeiteasy | 2000.06.02
8 | 文件 | WML语言与编程(8) takeiteasy | 2000.06.02
9 | 文件 | WML语言与编程(9) takeiteasy | 2000.06.02
10 | 文件 | WML语言与编程(10) takeiteasy | 2000.06.02
11 | 文件 | WML语言与编程(11) takeiteasy | 2000.06.02
12 | 文件 | WML语言与编程(12) takeiteasy | 2000.06.02
13 | 文件 | WML语言与编程(13) takeiteasy | 2000.06.23
14 | 文件 | WML语言与编程(14) takeiteasy | 2000.06.23
15 | 文件 | WML语言与编程(15) takeiteasy | 2000.06.02
16 | 文件 | WML语言与编程(16) takeiteasy | 2000.06.02
返回上一页 回到上一级目录


WML语言与编程(1)

 发信人: stanford2002 (天哪，我怎么啦), 信区: XML
标 题: WML语言与编程(1)
发信站: BBS 水木清华站 (Sat Jun 24 17:38:46 2000)

WAP构架
¨ WML是一种适用于无线互连网的标记语言。
¨ WAP（Wireless Application Protocol）是适用于无线互连网的网络协议。
¨ 客户是各种基于WAP协议的手掌设备或者是各种模拟器。
¨ WAP网关有两个功能：对WML网页进行编码和解码；实现HTTP协议和WAP协议之间的转
换。
¨ WAP服务器是指在MIME配置中设置了WML数据类型的Web服务器。
¨ 为什么采用WAP：方便、安全。
URL
¨ WML使用和HTML相同的引用方式。
http://www.motorola.com/great.wml
¨ 在URL后使用片段。
http://www.motorola.com/great.wml#login
¨ 相对的URL——基础的URL是当前的卡片。
<go href=”/next” />
Content Type
¨ 在互联网上使用WML数据类型。
¨ 要想使用Web服务器传输WML数据类型，就需要对Web服务器的MIME设置进行配置。
¨ 需要增加以下数据类型：
wml：text/vnd.wap.wml
wmlc：application/vnd.wap.wmlc（经过编码WML数据类型）
wmls：text/vnd.wap.wmlscript
wbmp：image/vnd.wap.wbmp (BMP图象)
其他可选的数据类型：
wmlsc：application/vnd.wap.wmlscriptc
wmlscript：text/vnd.wap.wmlscript
ws：text/vnd.wap.wmlscript
wsc：application/vnd.wap.wmlscriptc

---------------------------------------

到www.sinopalm.com
看WAP

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.214.47]
返回上一页 回到目录 回到页首 下一篇


WML语言与编程(2)

 发信人: stanford2002 (天哪，我怎么啦), 信区: XML
标 题: WML语言与编程(2)
发信站: BBS 水木清华站 (Sat Jun 24 17:40:07 2000)

WML字符集
¨ WML是XML的子集，继承了XML的字符集设置。
¨ WML文档缺省的字符集是UTF–8。
元素和属性
¨ 元素
1．一个完整的WML标记有以下两种格式：
<tag> content </tag>
<tag/>
¨ 属性
1． 可以随意地指定或添加元素的属性。
2． 属性的格式：<tag attr=”abcd”/>。
3． 所有的XML名字都是大小写敏感的。
4． 所有的属性值都必须用双引号或单引号括起来。
变量
¨ WML卡片中可以使用变量。
¨ 描述变量的语法在WML中有最高的解释优先级。
¨ 当空格无法表示一个变量名结束的时候，就必须使用括号将参数名括起来。
¨ $$在WML中代表一个‘$’符号。
¨ 变量语法格式如下：
$identifier
$(identifier)
$(identifier:conversion)
¨ 变量使用说明：
1． 可以在字符串中使用。
2． 可以在运行中更新变量的值。
3． 变量处于设置状态（NOT NULL），如果变量不等同于空字符串。
4． 变量处于未设置状态（NULL），如果变量等同于空字符串。
¨ 变量替代：
1． 变量的数值可以代入卡片中的文本。
2． 只有文本部分可以实现替代。
3． 任何元素和属性都不能使用变量来替代。
4． 替代将在运行期发生。
5． 替代将不影响变量现在的值。
6． 替代是按照字符串替代的方式工作。
7． 如果一个没有定义的变量要实现替代，那么该变量将被看作空字符串。
8． 变量名是由US-ASCII码、下划线和数字组成，并且只能以US-ASCII码开头。
9． 变量名是大小写敏感的。

-----------------------------
到www.sinopalm.com
看WAP

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.214.47]


WML语言与编程(3)

 发信人: stanford2002 (天哪，我怎么啦), 信区: XML
标 题: WML语言与编程(3)
发信站: BBS 水木清华站 (Sat Jun 24 17:41:13 2000)

‘$’符号
¨ 美元符号
1． 要想在文本中显示美元符号，必须成对使用。
2． 一个美元符号表示变量替代。
3． 一个简单的显示美元符号的例子：
This is a $$ character.
¨ 有效性
1． 在美元符号后面接字符串都将被认为是变量替代或者是生效。
2． 几个无效的例子：
<!--bad variable syntax -->
Balance left is $10.00.
<!—bad placement (in the type attribute)-->
<do type=”x-$(type)” label=”$type”>
Newcontext属性
Newcontext等于true或false，将决定浏览是否做以下事情：
¨ 删除所有在当前上下文中定义的变量。
¨ 清除历史信息。
¨ 重新设置所有的状态为一个缺省的状态。
<card id=”card1” title=”Mortgage Calc” newcontext=”true”>
大小写敏感
¨ WML和XML都是大小写敏感的语言。
¨ 所有的WML标记和属性都是大小写敏感的。
¨ 任何枚举的属性值也是大小写敏感的。
页面和卡片
¨ WML是XML语言的子集。
¨ 一个WML应用是由许多页面（Deck）所组成的。一个WML的页面就相当于HTML的一页。
¨ 一个WML页面是由文件声明和WML标记对组成。
¨ WML标记对中间有一个或多个卡片组成。
¨ WML就是在各个卡片之间转换和传递信息。
WML标记对
¨ WML标记对是任何一个WML页面的根元素。
¨ WML标记对中可以包含一个或多个卡片，和可选的头元素。
¨ WML标记对中可以使用可选的“模板”来生成其所包含的所有卡片。

-------------------------------------------
到www.sinopalm.com
看WAP

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.214.47]


WML语言与编程(4)

 发信人: stanford2002 (天哪，我怎么啦), 信区: XML
标 题: WML语言与编程(4)
发信站: BBS 水木清华站 (Sat Jun 24 17:42:07 2000)

WML例子
<wml>
<card>
<p>
<do type=”accept”>
<go href=”#card2”/>
</do>
Hello world !
This is the first card…
</p>
</card>
<card id=”card2”>
<p>
This is the second card.
Goodbye
</p>
</card>
</wml>

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.214.47]


WML语言与编程(5)

 发信人: stanford2002 (天哪，我怎么啦), 信区: XML
标 题: WML语言与编程(5)
发信站: BBS 水木清华站 (Sat Jun 24 17:43:16 2000)

文件声明
¨ XML声明总是在文件的第一行。
<?xml version=”1.0”?>
¨ DOCTYPE声明。
<!DOCTYPE WML PUBLIC “-//WAPFORUM//DTD WML1.1//EN” http://www.wapforum.org
/DTD/wml_1.1.xml>
事件与导航
¨ 导航与事件处理：
1． WML包括导航和事件处理模块。
2． WML允许作者指定需要处理的事件。
3． 事件可以和所需要完成的任务捆绑在一起。
4． URL导航就是这样的一个例子。
5． 事件捆绑是通过几种元素声明来完成的，包括：go、do和onevent。
6． Do元素比Go元素需要用户更多的参与。
Do元素
¨ Do元素提供了一个通用的事件处理机制，使得用户可以参与当前卡片的事件处理。
¨ WML提供一些预先定义的Do模块。
¨ accept：确定（或接受）。
¨ prev：返回到上次的位置。
¨ help：请求帮助。
¨ options：上下文敏感的选项请求。
<do type=”options” name=”do1” label=”options”>
<go href=”/options”/>
</do>
任务
¨ Go元素——当用户选中该元素时，就引导用户去WML中指定URL。
<go href=http://www.mot.com.wireless.wml>Motorola Wireless</go>
¨ Prev元素——当用户选中该元素时，就引导用户去上次用户访问过的URL。
<do type=”options” name=”do1” label=”default”>
</prev>
</do>
¨ Refresh元素——当用户选中该元素时，变量值将被重新设置。
<do type=”refresh”>
<refresh>
<setvar name=”firstname” value=”david”>
<setvar name=”lastname” value=”smith”>
<setvar name=”age” value=”29”>
</refresh>
</do>
Setvar元素
¨ 指定在当前的上下文中的变量的值，从侧面影响正在运行的任务。
¨ 必须使用name属性指定变量的名字。
¨ 必须使用value属性指定所需要赋给变量的值。

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.214.47]


WML语言与编程(6)

 发信人: stanford2002 (天哪，我怎么啦), 信区: XML
标 题: WML语言与编程(6)
发信站: BBS 水木清华站 (Sat Jun 24 17:45:39 2000)

Select元素和Option元素
¨ Select元素和Option元素是用来在WML中形成选择任务。
¨ Option元素可以指定在用户作出选择后的目标地址。
<select name=”type”>
<option value=”boxed” onpick=”#selectBoxed”>boxed</option>
<option value=”arranged” onpick=”selectArranged”>arranged</option>
</select>
Input元素
¨ Input元素是用来收集用户的输入。
1． name属性是用来指定变量的名字。
2． value属性可以指定变量缺省的值。
<input name=”firstname” type=”text” value=”Robert” format=”*A” maxle
ngth=”32”/>
<input type=”text” name=”age” format=”*N”/>
<input type=”text” name=”address” format=”*M”/>
<input type=”password” name=”password”/>
3． type属性可以用来指定按密码输入模式进行输入，否则就是普通的文本输入模式。

4． format属性用来指定输入的内容是数字（N）、字母、字母和数字，输入长度，大写
或者小写等等。
Text元素
¨ 段落：<p></p>（自动换行模式切换）
¨ 空白：空格、制表符和换行都将被显示为空白。
¨ 重点：em（强调），strong（特别强调），i（斜体），u（下划线），big（预定义
的大字体），small（预定义的小字体）。
¨ br元素：建立新的一行。
<p>
<b>
Welcome to…
</b>
<strong><i>
Mobile
</i></strong>
<u>
ADK
</u>
</p>
超级链接
¨ a元素和anchor元素被用来创建一个超级链接。选中该元素的时候，用户将被带入到
链接的地址（可以是另外的页面或者是同一页面下的不同卡片）。
¨ 也可以不使用a元素和anchor元素，而采用go元素中的href属性来创建一个超级链接
。
1．<anchor>follow me
<go href=”destination”/>
</anchor>
2．<a href=”destination”>follow me</a>
3．<do type=”accept” label=”ACCEPT”>
<go href=”http://www.abc.com/yourcode” method=”post”>
<postfield name=”w” value=”12”>
<postfield name=”password” value=”your password”/>
</go>
</do>

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.214.47]


WML语言与编程(7)

 发信人: microdream (我的梦，我的天堂), 信区: XML
标 题: WML语言与编程(7)
发信站: BBS 水木清华站 (Sun Jun 25 16:23:41 2000)

Timer元素
¨ Timer可以用来延时显示页面或卡片，或在页面和卡片间实现切换以取得动画效果。

¨ 下面的例子就是在显示“Hello World”五秒钟后，用户将被自动引导至“/next”所
指定的位置：
<wml>
<card ontimer=”/next”>
<timer value=”50”/>
<p>
Hello World !
</p>
</card>
</wml>
注释
¨ 简单的注释（单行或多行，注释中没有WML标记）。
<!—Put simple comment here -->
¨ 使用CDATA标记来实现带有WML标记的注释。
<![CDATA[lot of stuff here <b>bold text</b>…
…
<table column=”2”>…</table> still lot more
…
]]>
Template元素
¨ Template元素声明一个在页面中所有卡片都可以使用的事件处理模块。
1． 模块中的事件处理将自动应用于同一页面中的所有卡片。
2． 某个卡片可以通过定义同名的事件处理来替代模块中的事件处理。
<wml>
<template>
<do type=”options” name=”do1” label=”default”>
<prev/>
</do>
</template>
<card id=”first”>
<!—该卡片将自动套用模块中定义的事件处理过程-->
…
</card>
<card id=”second”>
<!—该卡片将使用空操作（noop）来替代模块中定义的事件处理过程，那么就等价于
该卡片中没有该事件处理过程—>
<do type=”options” name=”do1”>
<noop/>
</do>
…
</card>
<card id=”third”>
<!—该卡片使用同名的事件处理替代模块中提供的事件处理—>
<do type=”options” name=”do1” label=”options>
<go href=”/options”/>
</do>
</card>
</wml>

-------------------------------------------------
www.sinopalm.com

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.214.47]


WML语言与编程(8)

 发信人: microdream (我的梦，我的天堂), 信区: XML
标 题: WML语言与编程(8)
发信站: BBS 水木清华站 (Sun Jun 25 16:25:51 2000)

Table元素
¨ Table元素是用来创建能容纳文本和图片的表格。
1． align属性是用来指定对齐的方式（”L”是左对齐，”C”是对中，”R”是右对齐
。缺省的对齐方式是从左到右的左对齐方式）。
<table columns=”2”>
<tr><td>One</td><td>Two</td></tr>
<tr><td>1</td><td>2</td></tr>
<tr><td>BA</td><td>B</td></tr>
</table>
2． tr元素用来指定表格的行。
3． td元素用来指定表格的列。
<table columns=”2”>
<tr><td>One</td><td>Two</td></tr>
<tr><td>1</td><td>2</td></tr>
<tr><td>BA</td><td>B</td></tr>
</table>
图标
¨ alt属性指定可选的文本，当设备不能显示图象的时候。
¨ src属性指定图象的来源。
¨ align属性指定图象与相临的文本对齐。
<p>
<img alt=”MOTOROLA” src=”http://ni-icsd/genevaw/logo.gif”/>
Telecom 99
</p>
Postfield元素
¨ 指定向原始服务器指定提交时候的参数名字和参数数值。
1． Login和Password效验是最常用提交。
2． 一个使用go元素的提交例子。
<go href=”http://193.120.145.194:80/wap” methos=”post”>
<postfield name=”LI” value=”$LI”/>
<postfiels name=”PV” value=”$PV”/>
</go>
事件
¨ ontimer事件：该事件发生在计时器过期的时候。
¨ onenterforward事件：该事件发生在用户选中一个有效的URL之后，在正式引导用户
去该URL地址之前。
¨ onenterbackward事件：该时间发生在用户选中一个有效的Prev操作之后，在正式引
导用户之前。
¨ onpick事件：该事件发生在用户选中某个选项。
<card>
<onevent type=”onenterforward”>
<go href=”/url_to_check_security”/>
</onevent>
<p>
Help
</p>
</card>
<card onenterforward=”/url_to_check_security”/>
<p>
Hello
</p>
</card>
-------------------------------------------------------------
www.sinopalm.com
166.111.214.46

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.214.47]


WML语言与编程(9)

 发信人: microdream (我的梦，我的天堂), 信区: XML
标 题: WML语言与编程(9)
发信站: BBS 水木清华站 (Sun Jun 25 16:26:40 2000)

WML核心数据类型
¨ 长度
1． 可以用整数指定画布（屏幕、纸张）的像素大小，或者用百分数表示占用的长度或
宽度。
2． “50”=50个像素。
3． “50%”=占用一半的位置。
4． 只能用在属性值中。
ID和Class属性
¨ 所有的WML元素有两个核心属性：id和class。
¨ 这两个属性被用于服务器方的信息传输。
¨ id提供某个元素在页面中唯一的名字。
¨ class接收元素一个更多的class定义。
¨ 多个元素可以使用同一个class定义。
¨ class的名字是大小写敏感的。
¨ 元素也可以作为class中的一个部分。
WML编程指导
¨ 尽量是用户的操作简单、友好。
1． 建立一个操作流程图。
2． 定义每个卡片的操作。
3． 保持每个卡片小而且简单。
4． 尽量减少按键的次数。
5． 不要使用WML所有的属性（各个厂家对WML兼容情况是不同的）。
创建一个新的WML文件
<?xml version=”1.0”?>
<!DOCTYPE wml PUBLIC “-//WAPFORUM//DTD WML 1.1//EN”
“http://www.wapforum.org/DTD/WML_1.1.xml”>
<wml>
<card id=”card_name” title=”title_name”>
<!—write your code here-->
</card>
</wml>
修改卡片
¨ 根据自己的需要改变卡片的id和title。
¨ 增加卡片的内容。
<?xml version=”1.0”?>
<!DOCTYPE wml PUBLIC “-//WAPFORUM//DTD WML 1.1//EN”
“http://www.wapforum.org/DTD/wml_1.1.xml”>
<wml>
<card id=”welcome” title=”welcome”>
<p>
MADK WML DEMO.
</p>
</card>
</wml>
-----------------------------------------------

www.sinopalm.com
166.111.214.46

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.214.47]


WML语言与编程(10)

 发信人: microdream (我的梦，我的天堂), 信区: XML
标 题: WML语言与编程(10)
发信站: BBS 水木清华站 (Sun Jun 25 16:27:34 2000)

增加动作
<?xml version=”1.0”?>
<!DOCTYPE wml PUBLIC “-//WAPFORUM//DTD WML 1.1 //EN”
“http://www.wapforum.org/DTD/wml_1.1.xml”>
<wml>
<card id=”welcome” title=”welcome”>
<do type=”accept”>
<go href=”#greeting”/>
</do>
<p>
MADK WML DEMO.
</p>
</card>
<card id=”greeting”>
<p>
Welcome to the wireless bookshop.
</p>
</card>
</wml>
建立一个动画消息
<card id=”greeting” ontimer=”#card2” title=”Toolkit Demo”>
<timer value=”30”/>
<p>
<big>
Welcome to…
</big>
</p>
</card>
<card id=”card2” ontimer=”#card3” title=”Toolkit Demo”>
<timer value=”30”/>
<p>
<b>
the Wonderful
</b>
<u>
Wireless
</u>
</p>
</card>
<card id=”card3” title=”Toolkit Demo”>
<p>
<big><i>
Bookstore.
</i></big>
</p>
</card>
建立选择列表
<card id=”card3” title=”Toolkit Demo”>
<do type=”accept”>
<go href=”#collectBookType”/>
</do>
<p>
<b><i>
BookStore.
</i></b>
</p>
</card>
<card id=”collectBookType”>
<p>
Science or novel:
<select name=”type”>
<option value=”science” onpick=”#science”>Science</option>
<option value=”novel” onpick=”#novel”>novel</option>
</select>
</p>
</card>
-----------------------------------------------------------------
www.sinopalm.com
166.111.214.46

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.214.47]


WML语言与编程(11)

 发信人: microdream (我的梦，我的天堂), 信区: XML
标 题: WML语言与编程(11)
发信站: BBS 水木清华站 (Sun Jun 25 16:28:45 2000)

更多的选择
<card id=”science”>
<p>
select science title:
<select name=”productID”>
<option value=”universe” onpick=”#price”>The Universe</option>
<option value=”space” onpick=”#price”>Facts About Space</option>
<option value=”time” onpick=”#price”>Time Machine</option>
</select>
</p>
</card>
<card id=”novel”>
<p>
select novel title:
<select name=”title”>
<option value=”speed” onpick=”#price”>Speed</option>
<option value=”terminator” onpick=”#price”>Terminator</option>
<option value=”ghost” onpick=”#price”>Ghost</option>
</select>
</p>
</card>
Scrollbar与Setvar
<card id=”price”>
<do type=”accept”>
<go href=”#copies>
<setvar name=”price” value=”30.0”/>
<setvar name=”discount” value=”0.00”/>
</go>
</do>
<p>
Click accept to find the
Price and enter number of copies you need:
</p>
</card>

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.214.47]


WML语言与编程(12)

 发信人: microdream (我的梦，我的天堂), 信区: XML
标 题: WML语言与编程(12)
发信站: BBS 水木清华站 (Sun Jun 25 16:29:36 2000)

使用Input
¨ 使用正确的格式。
¨ 选择一个合适的标题。
¨ 限制所输入内容的最大长度。
<card id=”copies”>
<do type=”accept”>
<go href=”#collectName”/>
</do>
<p>
select number of copies:
<input name=”uint” title=”No Of Copies’ format=”*N” maxlength=”9”/
＞
</p>
</card>
¨ 收集名字
<card id=”collectName”>
<do type=”accept”>
<go href=”#collectAddress”/>
</do>
<p>
name:
<input name=”fullName” title=”Full Name” format=”*A” maxlength=”9”
/>
</p>
</card>
¨ 收集地址
<card id=”collectAddress>
<do type=”accept”>
<go href=”#cardType”>
<setvar name=”ship” value=”4.0”/>
</go>
</do>
<p>
address:
<input name=”address” title=”Address” format=”*M” maxlength=”9”/>
</p>
</card>
选择信用卡类型
<card id=”cardType”>
<p>
what kind of credit card?
<select name=”creditCardType”>
<option value=”visa” onpick=”#cardNo”>visa</option>
<option value=”mastercard” onpick=”#cardNo”>mastercard</option>
<option value=”discover” onpick=”#cardNo”>dicover</option>
</select>
</p>
</card>
输入信用卡号码
<card id=”cardNo”>
<do type=”accept”>
<go href=”#cardDate”/>
</do>
<p>
card number
<input name=”cardNumber” title=”Card Number” format=”*N” maxlength=”
16”/>
</p>
</card>
信用卡过期日期
<card id=”cardDate”>
<do type=”accept”>
<go href=”#confirmation”/>
</do>
<p>
expiration date
<input name=”creditCardExp” title=”Expiration Date” format=”*N” maxl
ength=”8”/>
</p>
</card>
确认
<card id=”confirmation”>
<p>
Each is $$ $(price), you ordered $(unint) copies,
Shipping is $$ $(ship), and total is $$64,
Thank you ! Bye Bye !
</p>
</card>
------------------------------------------------------
www.sinopalm.com
166.111.214.46

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.214.47]


WML语言与编程(13)

 发信人: microdream (我的梦，我的天堂), 信区: XML
标 题: WML语言与编程(13)
发信站: BBS 水木清华站 (Mon Jun 26 18:44:54 2000)

复合卡片的应用
<card id=”collectAddress”>
<do tyoe=”accept”>
<go href=”card.wml#cardType”>
<setvar name=”ship” value=”4.0”/>
</go>
</do>
<p>
address:
<input name=”address” title=”Address” format=”*M”/>
</p>
</card>
复合站点的应用
<card id=”collectAddress”>
<do type=”accept”>
<go href=”http://www.abc.com/wml/card.wml#cardType”>
<setvar name=”ship” value=”4.0”/>
</go>
</do>
<p>
address:
<input name=”address” title=”Address” format=”*M”/>
</p>
</card>
调用WMLScript函数
<card id=”confirmation”>
<do type=”accept” label=”Calculate”>
<go href=”calculateTotal.wmls#calculateTotal($(price),$(unit),$(ship))”/>
</do>
<p>
Each is $$ $(price),
You ordered $(unit) copies,
Shipping is $$ $(ship), and
Total is $$ $(total)
</p>
</card>

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.214.47]


WML语言与编程(14)

 发信人: microdream (我的梦，我的天堂), 信区: XML
标 题: WML语言与编程(14)
发信站: BBS 水木清华站 (Mon Jun 26 18:46:25 2000)

－－－－－－－－－－－－－－－－－－－－－－－－－－－－－
WMLScript例子
//wml script used by book store application
extern function calculateTotal(a,b,c)
{
//a: unit price
//b: number of units
//c: shipping charges
var total=a*b+c;
WMLBrowser.setVar(“total”,total);
WMLBrowser.refresh();
}
WBMP格式
经过仔细地研究，发现WBMP的格式如下(例如Width=16,Height=15的一个白色的画面)：

0x00,0x00,0x10,0x0f,0xff,0xff......,0xff。
头两个字节为0，现在还不清楚它的用途。
第三个字节为Width,第四个字节为Height,后面的是数据。
数据有以下特点：用一个Bit对应一个Pixel。0表示黑色，1表示白色。高位开始到底位
结束对应着从左到右，数据从低地址到高地址对应着从上到下。一个字节可以表示8个像
素，不足的部分可以用0补齐。
下面是一张太阳的图片，仅供参考。
0x00,0x00,//Unknown or reserved,maybe the mark for the wbmp
0x14,//Width
0x14,//Height
//Pixel data
0xfa,0xf5,0xf0,0xfb,0x6d,0xf0,0xfb,0xad,0xf0,0xfb,
0xdd,0x80,0x1b,0xfc,0x70,0xe7,0x1f,0xe0,0x7c,0xe7,
0xd0,0xbb,0xfb,0xd0,0xdb,0xfb,0xb0,0xd7,0xfd,0x70,
0xb7,0xfd,0xb0,0x77,0xf5,0xd0,0xfb,0xeb,0xe0,0xfb,
0xdb,0xf0,0x1c,0xe7,0x80,0xc7,0x1c,0x70,0xf7,0xfd,
0xf0,0xf7,0xbf,0xf0,0xf6,0x5d,0xf0,0xf5,0xed,0xf0
因此在知道了WBMP的格式后，就可以在WAP移动设备上做出各种图形，甚至是绘图。本来
WAP终端设备一般是不支持图形模式，但是可以在服务端将所有的图形按照WBMP的格式准
备好再送往WAP终端设备，那么看起来就好象在WAP终端设备上直接绘图。大家可以去 h
ttp://www.infoislive.com/demo 看看。

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.214.47]


WML语言与编程(15)

 发信人: microdream (我的梦，我的天堂), 信区: XML
标 题: WML语言与编程(15)
发信站: BBS 水木清华站 (Mon Jun 26 18:47:38 2000)

使用ASP实现WML
<%@ Language=VBScript %>
<% Response.ContentType="text/vnd.wap.wml" %><?xml version="1.0" encoding="g
b2312"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org
/DTD/wml_1.1.xml">
<wml>
<card id="MainCard" title="Yestock">
<p mode="nowrap">
Yestock<br/>
<select>
<option onpick="中文">http://202.96.168.13/wap/Chinese.wml">中文
<option onpick="English">http://202.96.168.13/wap/English.wml">English
</select>
</p>
</card>
</wml>
注意：在<% Response.ContentType=”text/vnd.wap.wml” %>后面一定要紧接<?xml v
ersion=”1.0” encoding=”gb2312”?>。两者间不能有空格和回车。否则在WinWAP上
可以浏览，但在WAP移动设备上就行不通！

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.214.47]


WML语言与编程(16)

 发信人: microdream (我的梦，我的天堂), 信区: XML
标 题: WML语言与编程(16)
发信站: BBS 水木清华站 (Mon Jun 26 18:48:43 2000)

解决WAP中文问题
WML是XML的一种应用，而XML的缺省编码是UTF-8，也就是Unicode的8位编码方式。如果
不特殊说明，那么XML将认为你采用的是UTF-8的编码方式。这就造成了一个问题，我们
通常使用GB2312编码方式，几乎所有的文档内容都采用了GB2312方式，数据库中也不例
外。而Unicode和GB2312的编码有很大的不同，可以说根本不一样，这是造成乱码的原因
。
任何编码方式包括什么日文，韩文，希腊文，阿拉伯文等都能轻松转换成Unicode，
你可以在同一段文档中加入N种语言。虽然现有的应用软件很少采用Unicode，但Window
s NT的内核却采用Unicode来处理字符。Unicode方式有两个吸引人的个性：独立且宽容
。
如何解决这些问题，现在主要有以下的几种方法：
方法一：直接采用UTF-8编码
方法二：直接采用GB2312编码
方法三：采用字符转换的方式
方法四：配置你的应用服务直接输出UTF-8编码(适用于IIS)
下面具体来讲一下这几种方法:
方法一：直接采用UTF-8编码
这种方法无需多讲。如果你的内容可以轻易转换到UTF-8编码还需要什么呢？
坏处：需要对你的服务内容全面的转换，而且与现有的大多数应用不兼容。
方法二：直接采用GB2312编码
也很简单，在你的编码声明时，标注采用GB2312编码方式，具体做法如下，
<?xml version="1.0" encoding="GB2312"?>
Motorolar L2000www 和 Nokia 7110都支持该种方式。
坏处：有些终端不支持GB2312编码，仍然会有乱码。
方法三：采用字符转换的方式
“&#x5929;&#x4e0b;&#x706b;&#x529b;”转换成中文。其思想是用ASCII字符表现更
大字符集中的字符。比如你要展现希腊文的小写的alpha。alpha在Unicode的编码中是9
45，16进制就是3B1，于是你写下 “&#945;”或者“&#x3B1” 显示的就是小写的alpha
α 。你只需要知道汉字的Unicode编码，将其转换成“&#xXXXX;”的形式。你只要用A
SCII编码方式就行了，任何平台都能处理，而且HTML也支持。本文中蓝色的天下火力就
是用这种方式写的。如果你看不到，表示你的浏览器不支持这种方式。
坏处：增加了文件长度，使得带宽本来还不高的无限互连网更慢；不能直观的看到中文
，万一手一抖后果不堪设想。
方法四：配置你的应用服务直接输出UTF-8编码(适用于IIS)
在IIS的Response Object有一个属性CharSet,按微软的说法只要这么做就行：
<% Response.Charset("UTF-8") %>
坏处：这种方法，只适用于Windows NT下IIS的ASP编程。其他的平台和Web Server有没
有如此简单的方式。

---------------------------------------------
完了。

到166.111.214.46看看

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.214.47]
上一篇 返回上一页 回到目录 回到页首


WAP服务器设置 (BM: takeiteasy)

编号 | 类别 | 标题 | 编辑日期
1 | 文件 | 其实建立WAP站点还是很容易的!!! JoyKiller | 2000.05.13
2 | 文件 | 在REDHAT6.1下架构WAP网站. JoyKiller | 2000.05.13
3 | 文件 | 配置WAP应用服务器 takeiteasy | 2000.06.06
返回上一页 回到上一级目录


水木清华精华区_No Title

无论是在NT平台还是在LINUX/UNIX下,
从WEB 站点过渡到WAP站点,
作几个改动就可以.
1. 更改MIME类型, 添加支持WAP的MIME类型.
具体的请看前文.
2. 编辑WML文件,
这可以在模拟器上进行,
然后把页面放入相应的目录中.
3. 如果是动态生成WML,
无论是用JAVA, ASP,PHP, PERL等,
都只要更改输出的文件头,
按WML格式输出就行了.

这些天, 实在没有机会上 SMTH BBS,
让大家久等,
实在不好意思.
辛苦VEB斑竹了. //BOW.
返回上一页 回到目录 回到页首 下一篇


水木清华精华区_No Title

服务器：
redhat6.1
软件要求：
apache_1.3.12
使用RPM包就可以了
MIME的设置:
修改mime.types
添加如下几行
text/vnd.wap.wml wml
mage/vnd.wap.wbmp wbmp
text/vnd.wap.wmls wmls
application/vnd.wap.wmlsc wmlsc
application/vnd.wap.wmlc wmlc
application/vnd.wap.wmlc
application/vnd.wap.wmlscriptc
application/vnd.wap.wbxml

其它的配置和普通网站一样的啊，把index.wml index.wmls加入到DirectoryIndex
中，在/home/httpd/html/目录下，建立一个WAP目录，设置你的apache的virtual host,
让wap.yourdomain直接指向这个目录。然后在你的目录下面编辑一个文件index.wml内容
如下：
<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org
/DTD/wml_1.1.xml">

<wml>
<card id="mywap" title="mywap">
<p>
hello! welcome here!
</p>
</card>
</wml>

就好了，这样就可以提供WAP服务了，当然如果想让手机能够浏览的话，必须
有路由的，因为手机要有网关支持的，而现在上网手机的网关一般就那几个，
至少要能和网关同上的。如果想用自己的网关，就另外介绍了。如果想提供动态的WAP网
站服务，就安装PHP3。如果感兴趣，就另外介绍的。


配置WAP应用服务器

 发信人: takeiteasy (南方有嘉木－我和我的梦擦肩而过), 信区: XML
标 题: 配置WAP应用服务器
发信站: BBS 水木清华站 (Thu Jul 6 21:34:45 2000)

基于WINDOW NT 平台的IIS设置WAP Server

只要按照以下的简单设置，就可以让NT IIS成为WAP服务器，您可以撰写WML网页或者开发
各种服务。

设定方式：(先确定NT Server已经安裝IIS了服务)

执行NT操作系统下的【开始】/【程序】/【Windows NT Option Pack】/【IIS 4.0】
/Internet服务管理员。

在IIS服务管理员窗口內，点选主机电脑名称后，按鼠标右鍵，点选“属性”选项；

在属性窗后下部有一个文件类型按钮，单击此按钮，会出现文件类型界面；

单击‘新增类型’按钮，然后在相关的扩展名栏中填写 .wml ,在内容类型（MIME）栏中
填写 text/vnd.wap.wml

单击‘确定’按钮

重复以上步骤将以下WML类型新增至MIME內：

相关的扩展名 內容类型(MIME)
.wml text/vnd.wap.wml
.wmlc application/vnd.wap.wmlc
.wmls text/vnd.wap.wmlscript
.wmlsc application/vnd.wap.wmlscriptc
.wbmp image/vnd.wap.wbmp

Apache Web Server

不管是NT 还是UNIX 或LINUX ，都是修改 Apache 安装目录下的conf/mime.types文件

在该文件中增加以下内容：

text/vnd.wap.wml .wml
image/vnd.wap.wbmp .wbmp
application/vnd.wap.wmlc .wmlc
text/vnd.wap.wmls .wmls
application/vnd.wap.wmlsc .wmlsc

存盘

重新启动APACHE WEB SERVER 即可。

--

第一道茶苦若生命,
第二道茶甜如爱情,
第三道茶淡如清风.

※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.67.180]
上一篇 返回上一页 回到目录 回到页首


手机上网设置 (BM: takeiteasy)

编号 | 类别 | 标题 | 编辑日期
1 | 文件 | Nokia 7110 takeiteasy | 2000.06.02
2 | 文件 | 摩托罗拉 V8088或L2000www/LF200www/T228 takeiteasy | 2000.06.02
3 | 文件 | 摩托罗拉A6188上网配置 takeiteasy | 2000.06.02
4 | 文件 | 西门子3568i takeiteasy | 2000.06.02
5 | 文件 | Ericsson R320sc takeiteasy | 2000.06.02
返回上一页 回到上一级目录


水木清华精华区_No Title

Homepage 你想去的WAP站点地址（如166.111.214.46）
Connection Type 连续
Connection Security 关
Bearer 数据
Dial-Up Number 172（或者是其他任何ISP号码）
IP Address 10.0.0.172 (或其他任何公共网关，如212.1.130.132)
Authentication Type 普通
Data Call Type 模拟
Data Call Speed 9600
User Name WAP（如果是172)ISP用户名
Password WAP（如果是172)ISP用户密码

返回上一页 回到目录 回到页首 下一篇


水木清华精华区_No Title

1 在电话待机状态，按MENU键入手机功能表。
2 按OK键，手机开始连接网络。
3 在此过程中，按住MENU键并保持直到屏幕显示"浏览器菜单"后再松开。 在浏览器菜单
屏幕，可以用箭头按键移动反色显示行。
4 移动到"7>设置网络"，再按OK键确认；或者直接按"7"键进入设置网络功能。
5 在设置网络功能中，应当设置WAP网关的主、次IP地址和ISP的参数。
6 按OK"浏览"或直接按反色显示项前的数字，对当前反色显示项进行设置（按1、2键分
别设置主、次IP地址）。
7 选择IP地址或端口号，再按OK"编辑"可以分别输入服务商提供的相应参数。
8 按数字键分别输入IP地址和端口号 中国电信的网关主IP地址：010.000.000.172,次I
P地址和端口号不用修改，再按OK"确定"，输入数字。
功能名称 设置项
主页 浏览的WAP网址如
wap.chnmobile.net
wap.wapschool.com
wap.bookingall.com
   电信 联通
ISP的接入号码 172 1601
IP地址 10.0.0.172 192.168.167.2
超时上限 300
数据通话类型 模拟
数据通话速度 9600
用户名 wap
密码 wap
线路类型 调制解调器
设置完成后，按C或menu"返回"，再按menu"完成"回到待机状态；按开关按键关机后重新
打开手机，设置生效。再选择"访问因特网"即可连接入无限因特网。
用该型号手机接入互联网后，首先您看到的是中国电信的网站。如果您想使用掌上通网
站提供的功能，请进入中国电信网站的友情连结，然后可浏览"其他WAP网站".


水木清华精华区_No Title

 摩托罗拉A6188最多可以设置3个WAP网关代理服务器，便于您选择不同的WAP网关。
       1 在主屏幕中按"系统设置"，进入系统设置屏幕；
       2 在系统设置屏幕中找到并点按"浏览器设置"，进入WAP功能设置屏幕；
       3 点按"代理服务器1"（或"代理服务器2"，"代理服务器3"），进入相应设置屏
幕可以分别设置代理服务器；
       4 分别点按各项资料的输入栏，进入相应的数字输入屏幕，输入资料（中国电信
网关IP:010.000.000.172端口号9201，接入号码是172）；ip地址：010.000.000.172 端
口号：9201
       5 正确输入所有资料后，按"确定"，回到浏览器设置屏幕；
       6 再点按"数据呼叫信息"，进入数据呼叫屏幕；分别点按各项资料的输入栏，进
入相应的数字输入屏幕，输入资料； 电话号码：例如：172 用户名：例如：WAP 密码：
例如：显示为"***"WAP 波特率：9600 线路类型：调制解调器 连接类型：透明
       7 正确输入所有资料后，按"确定"，回到设置屏幕，按"确定"；
       8 关闭电放打开话机。
    所有的参数改变在重新开机后生效，这样就完成了WAP功能的设置；在主屏幕中按"
浏览器"，即可开始访问因特网


水木清华精华区_No Title

打开“互联网”选项，出现功能菜单，选择“设定配置文件”，按“是”；
修改“配置-1”，按“是”；
出现三个功能选项，选择第二项“设定”，按“是”；
出现九项功能菜单，一一设置：
1..配置文件名称：打入你的这个设置的名称：任意。
2..拔号号码：172
3..拔号类型：选择第二项“模拟”
4..登录姓名：如果是使用172，则是“wap”
5..密码：如果使用172，密码则是“wap”
6..网关地址：010.000.000.172
7..网关端口：采用默认9201
8..主页地址：几个WAP主页，任意填写一个：http://wap.chnmobile.net；http://wap
.popu.com；http://www.one2free.com.cn/123.asp
9..持续时间：默认是30秒，你可以自行设置一个数值。
设置好以上九项后，退回上一项，选择“激活”，即接连到互联网上。
激活之后就联上中国移通的默认主页，你可以读取新闻、查看股票行情、直接收、发电
子邮件了。


标题"预定世界",再输入网址wap.BookingAll.com或wap.chnmobile.net .

 1.按动"右箭头键",进入"WAP服务"功能区
2.按"下箭头键"，进入"WAP设置" 功能区
3.选Profile1 进入，更名, 将设置项起一个您喜欢的名字,如:"预定世界"
4.,输入标题"预定世界",再输入网址wap.BookingAll.com或wap.chnmobile.net .
5.按“确定”
6.将图象下载设为:完全开启,按确定键
7.进入通讯，按下表进行设置。

功能名称 设置项
通讯方式 GSM数据
响应时限 150秒
GSM权限 172
拨号方式 模拟
用户标志码 wap(小写)
密码 wap(小写)
空闲时限 300秒
网关：用户标识 不用设置
网关IP地址 010.00.000.172
短信息地址 不用设置

上一篇 返回上一页 回到目录 回到页首


WAP简介 (BM: takeiteasy)

编号 | 类别 | 标题 | 编辑日期
1 | 文件 | WAP简介 takeiteasy | 2000.06.02
2 | 文件 | WAP上网实现步骤 takeiteasy | 2000.06.02
3 | 文件 | WAP世界将更精彩 inannan | 2001.05.28
4 | 文件 | 距 WAP 最 近 的 中 国 消 费 群(1) inannan | 2001.05.28
5 | 文件 | 距 WAP 最 近 的 中 国 消 费 群(2) inannan | 2001.05.28
6 | 文件 | about bluetooth inannan | 2001.05.26
返回上一页 回到上一级目录


标准化无线通信设

 WAP简介

    WAP(Wireless Application
Protocol)就是“无线应用协议”之意。它是由一系列协议组成，用来标准化无线通信设
备，例如蜂窝电话，移动终端，可用于Internet访问，包括收发电子邮件，访问WWW页面
等等。WAP将移动网络和Internet以及公司的局域网紧密地联系起来，提供一种与网络种
类、承运商和终端设备都
独立的无地域限制的移动增值业务。 移动用户可以象使用他们的台式计算机访问信息一
样，用他们的袖珍移动设备（手机等）访问同样的信息。

    WAP是一个全球性的标准，并不受控于某一个厂商或公司。Ericsson、Nokia、
Motorola 和Unwired
Planed在1997年夏天共同建立了WAP论坛，设立论坛的初始意图是为发展无线通信网络的
应用而建立一种本产业范围内的规范。该WAP规范针对不同的协议层定义了一系列协议，
这些协议使得各方面的厂商和公司可以协同工作，开发无线通信网络的应用。应该说WAP
已是事实上的标准，大量
的产品会在明年初问世。最典型的如SmartPhone，想象一下，你可以用移动电话来收发
E-Mail，查询信息，付账，实现PIM功能等，多么美妙！当然要提醒你，不要忘了要想在
移动电话和掌上设备的狭小LCD上看到漂亮的Web画面是不现实的，所谓的上网功能是指收
发文字email，能看到的图
片目前也只能是WBMP格式的小图片。查询信息都要靠特定的ISP来实现，这就不是单靠移
动电话厂商能办到的，所以在WAP Forum中有不少电信公司。目前有超过100个成员加入
WAP论坛，包括有终端和基础设备的制造商，有移动通信的网络运营商，有业务提供商，
有软件公司，
也有网络内容提供商等，共同为移动设备开发服务和应用。可以在http://www.wapforum.
org获取更多关于WAP论坛的信息。

    WAP同时也定义了一个WAP的应用环境，包括微浏览器、描述语言解释器、电子邮件、
用于移动应用的WWW信息等。类似于Internet模式，无线设备终端内含一个微浏览器，而
内容和应用都是位于Web服务器上。。WAP规范还在不断地向前发展着，成员们通过相互的
实验，开发功能完善的W
AP设备，正将WAP带到了移动数据市场的光明大道上。

返回上一页 回到目录 回到页首 下一篇


水木清华精华区_No Title

 WAP上网实现步骤如下：
    1、用户根据WAP手机显示界面进行操作，按下一个有URL请求指向的电话键；

    2、该用户WAP手机使用WAP协议向该设备指定的一个WAP网关发送URL请求；

    3、WAP网关为这个请求创建一个常规的HTTP请求，并发送到相应的Web服务器上去；

    4、Web服务器执行该HTTP请求。如果URL请求指向的是一个静态的文本文件，则Web
服务器获取该文件，并附上HTTP格式的题头；如果URL请求指向的是一个CGI或ASP或是其
他的脚本程序，那Web服务器就会运行这个脚本程序；

    5、Web服务器返回带有Http题头的WML文件（WML文件在WAP环境下称为deck，意即用
于手机面板上显示的文件）或是由CGI或ASP等其他脚本语言生成的WML文件；

    6、WAP网关识别HTTP题头和WML内容，将它们编成二进制码， 然后生成一个针对该
请求的一个包含有这些二进制码的响应并将它们发送到用户的WAP手机中；

    7、用户WAP手机接收该WAP响应，它解析该WML响应并将内容显示在手机的显示屏上

（其他WAP终端设备以同样方式实现无线上网。）


WAP世界将更精彩

 发信人: huabing (再硬的冰,我也要把你化了), 信区: XML
标 题: WAP世界将更精彩
发信站: BBS 水木清华站 (Sat Aug 26 10:55:41 2000)

在我们上一期的“Top Story"中，刊出了Reg对WAP和日本I-mode不乐观的比较意见和对
未来WAP2.0标准的预测，很显然，WAP Forum对Reg的观点“非常的不认同”，在这一期
的文章里，我们将刊登WAP 论坛CEO--Scott Goldman对此观点所发表的不同意见和他更
深层次的对WAP发展的剖析,为方便阅读，我们的文章采取“引用-反驳”的格式。
    “因为WAP的毫无建设性和i-Mode 的相对巨大成功使WAP日趋没落” --- 首先，无
论从WAP标准还是业界的支持来说，WAP都并没有走向没落。从1999年的250个成员发展到
今天的555个成员，事实证明WAP正在受到越来越多的肯定，它没有没落，反而正在高水
平地发展。 此外，iMode拥有更多的用户，难道这就意味着它更加成功？iMode出现两年
多，而采用该系统的只是DoCoMo一间公司，WAP商业化应用的时间不过短短的一年，可却
已经拥有全球超过500个的成员！如果说iMode是更加成功的，那它为什么得不到更多的
拥护？
    “我们预测WAP2.0将会是两种技术的杂交体” --- 如果说WAP2.0将会是两种技术的
杂交体，那么首先iMode必须向 XML 语言靠拢。互联网世界正在向XML 语言发展的趋势
不可逆转，WAP的语言恰好是建立在XML 语言平台上的，而iMode使用的却是cHTML语言，
在这一点，WAP不可能妥协。 正如大家所看到的，WAP2.0将是我们下一代WAP的目标和希
望所在。我们的WAP每天都在获得不断的完善，预计在2000年第三季我们将推出一个完全
支持安全的端对端和PKI的新版本。该版本将新增很多实用的功能例如超大文件下载、多
媒体功能等。我们有信心WAP将不断的进步。
    “i-Mode的成功在于其高实用性和更直观的感觉”--- 我们应该说i-Mode在日本的
推广情况给了我们对无线互联网更多的信心。 很显然i-Mode在日本高速增长的最重要的
一个原因是日本存在巨大的互联网使用需求，而有线网络的相对不足给DoCoMo的无线接
入服务iMode提供了空挡，可以说除了iMode他们别无选择。 iMode以星象占卜和卡通人
物吸引了大量的年轻用户，在这一点WAP也将毫不逊色，WAP将联合Siebel, Microsoft和
Lotus等提供更加出色的WAP应用服务。 确实，因为是独家经营，所以比起繁复的系列
民主决策过程来说，DoCoMo的规范制订来得更加方便。但我们也不能忽视最终受益的是
消费者，我们必须充分考虑各个层面消费者的接受情况。
    “太多的厨师不能煮出一锅好汤来” --- 太多的厨师不能煮出一锅好汤来，但难道
你又愿意让一个厨师不顾你的喜好日复一日地决定你的三餐？
    “简而言之，WAP有品牌，i-Mode有用户”--- 很抱歉，我认为这是一个非常错误的
观点。完全相反，iMode创造了出色的品牌，但比起DoCoMo的独家偏爱来说，WAP超过50
0个的成员将拥有更多的用户。
    “WAP将来的语言会是什么” --- XML将是未来的互联网语言，所以WAP建立在XML的
平台上。
    “我可能更喜欢--将WML扔进垃圾桶，只不知道现在的WAP协议制定者会不会特别想
保存颜面”--- 我必须声明这和保存颜面无关。新的使用户受益的的应用可能和旧的设
备、站点和网关造成冲突，但这不是它的错，正如你不能怪罪新的Netscape视窗不能浏
览你钟情的的多年以前所建的旧站点一样。
    “安全”--- WAP将在2000年第3季度发布的新版本将提供完全支持PKI和端对端安全
的功能，它将具备有线网络加密套接字协议层（SSL）般的安全功能。
    “未来的WAP 2.0将在很大程度上依赖HTML”--- HTML忽略了有限的RAM和ROM，因此
在数据传输上有很大的局限性。我们可以说不管以后采用3G还是GPRS，WML将始终是不可
代替的。
    附加内容：
    WAP论坛CEO于15日在摩托罗拉开发者讨论会上对媒体广泛关注的WAP标准问题予以说
明
    在WAP和日本I-MODE之间越来越浓烈的对峙气氛中，WAP论坛CEO-Goldman的日子也不
怎么好过，15日在美国举行的摩托罗拉开发者讨论会上Goldman就媒体广泛关注的WAP标
准问题作了简短的声明。本专题将摘录精要如下： “先不说DoCoMo本身就是WAP论坛的
成员之一，就DoCoMo的其中一个最高行政执行官都在我们WAP论坛担任部长职务，还有一
个最高工程师在WAP论坛担任多媒体专家研究组组长职务。我们很高兴看到I-MODE所取得
的成就，这表明无线互联网的商业模式在市场上存在巨大的需求。”
    “如果你去问DoCoMo的任何一个人，他们都会告诉你，I-MODE和WAP的发展是一致的
”Goldman说，“当我们去拜访DoCoMo时，DoCoMo很不解地问我‘WAP 和 i-Mode都在朝
着相同的方向发展，但为什么新闻媒体却总把他们对立起来？’” Goldman说，很多的
评论都忽略了最重要的一点，那就是WAP协议是基于互联网语言的发展方向的，即是WML
语言。
    Goldman说“DoCoMo的下一代技术正朝着WAP的方向发展，大家将很快就会看到，一
种融合WAP和I-MODE特征的技术将不久面世。我们可以很肯定地说WAP绝不会采用HTML (
c-HTML)作为语言规范，因为它并非建立在XML基础上”。Goldman认为，为了向互联网语
言标准靠拢，DoCoMo在未来将不得不采用XHTML。
    对DDI在日本的电信服务，Goldman说，如果你拿一部WAP手机和I-MODE手机来比较，
你就会发现它们的服务是如此的相似。从DoCoMo占日本53%电信市场和DDI占15 的分额来
看，他们的市场渗透率基本持平。

--

※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.214.46]


距 WAP 最 近 的 中 国 消 费 群(1)

 发信人: huabing (再硬的冰,我也要把你化了), 信区: XML
标 题: 距 WAP 最 近 的 中 国 消 费 群(1)
发信站: BBS 水木清华站 (Sun Aug 27 13:32:01 2000)

当无线互联服务在日本出现时，人们普遍认为最大的消费群应该是上了点年纪、衣冠楚
楚的商业人士。然而，事实却是，使用无线互联网最多的是十几岁的小女孩，她们热衷
于上网为她们的手机下载宠物图标。
中国的情形又如何呢？
    无线互联网和WAP在中国出现之日，正当电子商务被人们追捧之时。人们津津乐
道谈论着e-commerce的同时，又迫不急待地提出m-commerce（移动商务），中国的无线
互联网和WAP一开始就罩上了商务的光环。移动银行、移动购物、移动股票交易……渴望
开拓新市场的人们恨不得把固定互联网上尝试的一切商务模式全盘端上无线互联网。虽
然没有人明确指出中国无线互联网的首批用户和WAP手机的目标消费群是从事商业活动的
白领阶层，但人们却不难从移动电信运营商和WAP手机生产商的广告促销和各种媒体的大
肆鼓吹中得出这一结论。
     然而时至今日，WAP手机并没有重走当年的路子在收入较好的商业人士中率先流行
起来；无线互联网也没能借固定互联网的势迅速火起来。经济发达的上海目前尚且只有
几千WAP手机用户，其它地方可想而知。难怪中国移动通信公司副总裁鲁向东在肯定无线
互联网服务 "市场需求令人鼓舞"的同时却回避公开目前用户的数字。
    这一多少令移动电信运营商和手机生产厂商尴尬的局面是多种因素共同作用的结果
。比如WAP手机和移动互联网本身不够吸引人，WAP网站内容还比较贫乏，成熟消费群体
对新技术的观望态度，新增手机用户难以在短期内更换WAP手机等等。但恐怕有一个最为
关键的因素却往往容易被人们忽略。那就是，手机生产厂家和移动电信运营商们一厢情
愿地按自己对市场需求的理解去开发、推销产品和服务，而市场未必会按他们所理解的
规律运行。
    换个角度，也许我们能看得更清晰些。
    我们先抛开WAP为什么没有象人们预期的那样流行起来的问题，而是认真分析一下为
什么在先于我们应用无线互联网的国家里，年轻的一代会更加亲近无线互联网。
WAP带给青年新体验
十几岁、二十出头的青年们好奇、敏感、渴望得到社会的肯定同时又希望自己能改
变社会中一切不合理之处。标新立异正是他们表现自我、引起社会注目的重要方式。因
此他们不会放过视野中出现的任何新事物，对新时尚、新潮流总是热情追随。这就不难
理解为什么互联网一经出现，立即受到各国大中学生的青睐。
互联网把一种全新的体验带入人们的生活，有力地冲击着传统生活模式。互联网上
丰富的资源使渴求知识、信息的青年获得极大的满足感；e-mail、ICQ、BBS以及聊天室
等等使渴望交流的青年们可以突破时空的限制、心理的障碍与他人沟通；新奇的游戏、
各种流行音乐等网上娱乐带给青年们不同的享受。互联网对青年们的吸引力是如此之大
，以至于中学生和大学生构成了各国上网人群的主流。
后出现的移动互联网和固定互联网有类似之处，比如同样可以浏览信息、收发邮件、玩
游戏、聊天等，同时它又有很多独特之处，比如用新颖的WAP手机取代了 "庞大"的电脑
作为上网工具，这自然会立即抓住青年们的视线。年龄大些的人会反复比较用WAP手机上
网与用电脑上网有什么差别，是否合用；对青年们来说，他们更愿意自己去尝试、去探
索、去发现。所以，当WAP走进青年们的生活中时，他们是除专业人士以外谈论最多的一
群，当WAP手机和上网费用符合他们的消费水平时，他们也是使用最踊跃的一群。
WAP方便青年间的交流
十几岁、二十出头的青年们正处于从认识自我的关键阶段，自我意识特别强烈。他
们比任何年龄阶段的人更需要私人空间，同时又渴望和同龄人加强沟通，排解成长过程
中的烦恼和疑惑。无线互联网和WAP手机正好可以同时满足这两种需求。
在校园、在网吧，使用固定互联网的青年们不得不和很多人同处一室，虽然各自使
用一台电脑，但有时难免有不便之处。在家里情况可能更糟，往往是一家人共享同一台
电脑，不想家人了解自己青春小秘密的青年们会更加觉得不便。而使用WAP手机上网就没
这些烦恼了。只要能接收到无线电信号，哪里都可以上网，还愁找不到一个既安静又舒
适的个人空间？
青年们需要朋友也愿意结交朋友，很多心事和成长中遇到的问题他们会依赖朋友而
不是家人来解决。用WAP手机上网对青年来说是比用电脑上网更为便捷的交流工具。用E
-mail、ICQ交流还嫌不够的话，用WAP手机打电话不是方便许多？话音质量可非电脑上的
IP电话可比。
WAP的上网方式既尊重了青年们对个人空间的要求又方便他们之间的沟通，这也是青
年们亲近WAP的原因之一。

--

※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.214.46]


距 WAP 最 近 的 中 国 消 费 群(2)

 发信人: huabing (再硬的冰,我也要把你化了), 信区: XML
标 题: 距 WAP 最 近 的 中 国 消 费 群(2)
发信站: BBS 水木清华站 (Sun Aug 27 13:32:40 2000)

WAP贴近青年的消费
大多数型号的WAP手机和普通手机价格相差不大，对早已用上普通手机的发达国家的
青年来说，换用WAP手机负担得起。何况一些运营商采取免费赠送WAP手机，成本由月使
用费中收回的经营策略，这对青年们使用WAP手机访问互联网无疑是极大的鼓励。另外，
运营商为WAP服务制定的收费较为合理，这使得青年们能够承受由WAP新服务带来的额外
支出。就拿美国来说，最大的移动电话运营商Verizon Wireless的无线互联网服务订费
为每月6.95美元，美国其它运营商的无线互联网服务费用也与此大体相当。这点费用仅
相当于美国学生打一、两小时工的收入，青年们完全能够不依靠父母自己支付。
中国青年消费群与WAP市场
世界各国的文化不同，但青年们的心理特征是一致的，所以，在先于我国使用WAP的
发达国家里，带给青年们新鲜体验、符合青年人的行为习惯的WAP也会首先在他们中间流
行起来。不过，由于我国的电信价格政策以及经济状况与其它发达国家有很大差别，这
也仅仅是一种推论。实际情况会如何，还得具体分析。
和世界上的发达国家一样，中国的青年人也是互联网上的主流。据CNNIC今年一月公布的
数据，学生占我国890万互联网用户的21％。这意味着中国有180多万学生使用互联网。
而根据固定互联网与移动互联网之间的相关程度以及青年人的心理行为特征我们不难得
出这样的结论，这180多万中国学生在理论上是WAP的潜在消费群。
由于我国的计划生育政策的影响，目前的大、中学生大多数来自经济状况较好的独
生子女家庭，他们有相对宽裕的零花钱和数目不小的押岁钱。在经济较为发达的地区，
一些孩子得到的押岁钱足以购买一部诺基亚7110WAP手机。另外，这几年，大学生利用课
余时间打工已经成为一种风气，经济收入较好的大学生早就用上了普通手机，这说明，
和普通手机价格相差无几的WAP手机完全可以为大学生所接受。因此，180多万中国学生
中经济条件较好的WAP潜在消费群有可能转化为现实消费群。
问题在于，中国青年们是否能和他们的外国同龄人一样享受到相对低廉的无线互联
网使用费用呢？如果九月出台的价格政策表明无线互联网使用费用和固定互联网使用费
用相当甚至还高出一截的话，中国青年中绝大多数无收入以及收入菲薄的人就会被自然
排斥在WAP的消费群之外。也许，大多数崇尚新奇事物的中国青年只好乖乖地端坐桌上电
脑前，用模拟器遨游一番WAP世界，而不至于望WAP兴叹吧。

--

※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.214.46]


about bluetooth

 发信人: lanyjie (收复台湾), 信区: XML
标 题: about bluetooth
发信站: BBS 水木清华站 (Sun May 14 11:39:37 2000)

蓝牙协议索引
（PDA日报编译整理）
蓝牙协议是一个以爱立信、IBM、INTEL、诺基亚与东芝（TOSHIBA）为主的特别兴
趣组织（SIG）制定的短距离无线通信协议。该协议推出后很快就得到了全球500多
家大小企业的支持，连微软也很快加入到支持者之列。

该协议获得如此的成功绝不是偶然的，它向人们描述了一个未来生活的美好画面，
那时，您的鼠标、键盘乃至显示器、XVD……不再具有令人讨厌的尾巴；而您的便
携电脑（或掌上电脑或PDA或它们本就是一家人）一到办公室或家里就自动连上您
的PC或其它主机，信息的交流已经简单到您弹指一挥之间；而您的手机（管它有没
有WAP功能），走进办公室则直接连至公司的无线接入网（内部电话不需要您一分
钱！），回到家里则成为您的无绳话机（每分钟7分钱！！！-中国-电信-现在）…
………这一切无不象一根悬挂着一大坨钻石的大棒，在各家电产品、信息产品、通
信产品制造商面前挥舞：跑在前边的就有可能获得那坨光彩夺目的瑰宝，而跑在后
面的则少不了挨上几棒。

为了促进该技术在国内的发展，共同面对在开发和使用中遇到的问题，我们将陆续
把一些资源和信息与大家分享。不过请注意：本网站对在此提供任何信息和资源，
不作任何技术上的保证，而对涉及它方的任何信息、协议等，也请严格遵照其自身
的版权说明！

序号
名称
简要说明
大小

1
ProtArch.pdf
本文简要介绍了整个蓝牙协议的体系、性能，同时介绍了由SIG提出的多个应用模
型，以及其与各协议之间的关系
353K

2
SecuArch.pdf
本文概要介绍了蓝牙协议中的安全机制与级别：1、无安全认证；2、应用层安全
认证；3、链路层安全认证。重点讲述了第2级安全机制：应用层安全认证策略。

275K

3
API2SDP.pdf
本文简要介绍了蓝牙协议中业务搜索协议与会话控制和会话结构的对应关系及其
应用编程接口
175K

4
Index.pdf
本文是整个蓝牙体系涉及到的有关协议内容的一个索引
115K

5
BaseBand.pdf
本文介绍了蓝牙中的基带协议以及链路层的底层链路控制机制
1033K

6
Appendix.pdf
蓝牙体系的附录，包括各部分的修改记录、各协议的主要负责单位、主要术语与
缩略语、数据结构示例等
1066K

7
Compliance.pdf
本文介绍了采用蓝牙技术的产品应遵循的要求，保证了产品与协议的统一性以及
产品质量认证标准等
132K

8
HCISpec.pdf
本文全面介绍了蓝牙体系中的主机控制接口协议，为高层应用控制底层的基带协
议、链路控制与管理协议乃至硬件的状态和控制寄存器提供了一个统一的命令接口

该协议较大上传下载都很困难，需要者请直接联系我们

9
IrDAOper.pdf
本文介绍了蓝牙与红外通信协议的兼容与互操作性，保证了原来基于红外通信的
应用向蓝牙的平滑过度
129K

10
L2CAP.pdf
本文介绍了蓝牙的逻辑链路控制与适配协议，为高层的复用、数据打包拆包以及
传输质量控制提供了保证，同时介绍了协议的状态机，包格式以及测试接口等内容

430K

11
LMP.pdf
本文介绍了蓝牙中用于链路建立、链路控制的协议内容
367K

12
PCCard.pdf
本文介绍了基于PC上的蓝牙产品开发技术，讲述了传输层上的包格式、与HCI的接
口和与PC总线的接口等
105K

13
RadioSpec.pdf
本文介绍了蓝牙射频部分的有关协议。SIG为保证系统的质量与产品的互操作性，
制定的严格的射频接口规范与测试要求。
759K

14
Revision.pdf
蓝牙协议的修改记录
79K

15
RFCOMM.pdf
RS232串口仿真协议
169K

16
SDP.pdf
业务搜索协议，阐明了应用搜索并获得设备所能提供的服务类型与等级的有关协
议
278K

17
TelCtrl.pdf
本文介绍了蓝牙的电话控制协议，阐明了用于语音通信和数据通信的建立的信令
及其过程等
360K

18
TestCtrl.pdf
产品测试控制协议，这是一个为了规范和统一测试方法和过程，减小测试工作量
，增加可靠性而制定的测试协议
163K

19
TestMode.pdf
测试模式，包括射频测试与环路测试等，讲述了测试的建立与激活等内容
167K

20
WAPBear.pdf
本文讲述了蓝牙中为了向WAP协议及其应用提供服务而采纳的PPP协议，以及与其
的互操作性等
232K

有关蓝牙的最新报道请参看：蓝牙专题。
本站首页>技术园地
北京水清木华科技有限公司
地址：北京市海淀区清华园三才堂写字楼4122 邮编: 100084
联系电话:(010)82617903
电子信箱：info@waterwood.com.cn
网址：http://www.waterwood.com.cn

版权所有(c) 水清木华

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 162.105.40.80]
上一篇 返回上一页 回到目录 回到页首


WAP建站问题 (BM: takeiteasy)

编号 | 类别 | 标题 | 编辑日期
1 | 文件 | WAP网站建站一问，急！！！ (转载) takeiteasy | 2001.04.20
2 | 文件 | Re: WAP网站建站一问，急！！！ (转载) takeiteasy | 2001.04.20
3 | 文件 | Re: WAP网站建站一问，急！！！ (转载) takeiteasy | 2001.04.20
4 | 文件 | Re: WAP网站建站一问，急！！！ (转载) takeiteasy | 2001.04.20
5 | 文件 | Re: WAP网站建站一问，急！！！ (转载) takeiteasy | 2001.04.20
6 | 文件 | Re: WAP网站建站一问，急！！！ (转载) takeiteasy | 2001.04.20
7 | 文件 | Re: WAP网站建站一问，急！！！ (转载) takeiteasy | 2001.04.20
8 | 文件 | Re: WAP网站建站一问，急！！！ (转载) takeiteasy | 2001.04.20
9 | 文件 | Re: WAP网站建站一问，急！！！ (转载) takeiteasy | 2001.04.20
10 | 文件 | Re: WAP网站建站一问，急！！！ (转载) takeiteasy | 2001.04.20
11 | 文件 | Re: WAP网站建站一问，急！！！ (转载) takeiteasy | 2001.04.20
12 | 文件 | Re: WAP网站建站一问，急！！！ (转载) takeiteasy | 2001.04.20
13 | 文件 | Re: WAP网站建站一问，急！！！ (转载) takeiteasy | 2001.04.20
14 | 文件 | Re: WAP网站建站一问，急！！！ (转载) takeiteasy | 2001.04.20
15 | 文件 | Re: WAP网站建站一问，急！！！ (转载) takeiteasy | 2001.04.20
16 | 文件 | Re: WAP网站建站一问，急！！！ (转载) takeiteasy | 2001.04.20
17 | 文件 | Re: WAP网站建站一问，急！！！ (转载) takeiteasy | 2001.04.20
18 | 文件 | Re: WAP网站建站一问，急！！！ (转载) takeiteasy | 2001.04.20
19 | 文件 | Re: WAP网站建站一问，急！！！ (转载) takeiteasy | 2001.04.20
返回上一页 回到上一级目录


WAP网站建站一问，急！！！ (转载)

 发信人: veb (君), 信区: XML
标 题: WAP网站建站一问，急！！！ (转载)
发信站: BBS 水木清华站 (Wed Jun 7 18:08:14 2000)

【 以下文字转载自 WWW 讨论区 】
【 原文由 littlechild 所发表 】

高手救我！

我和同学自建了一个WAP网站，过程如下：先装NT4.0，再装IIS4.0，再把网站内容

编好放进去，一切OK。最后把机子连在校园网上。

按说这样手机就可以直接浏览我的网站了，但用手机测试时总是显示“服务器无

响应”，我在网上其他机子上用模拟浏览器可以浏览我的网站，但用手机就是不行！

怎么回事？急盼高手赐教，感激涕零！

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.112.109.170]
返回上一页 回到目录 回到页首 下一篇


Re: WAP网站建站一问，急！！！ (转载)

 发信人: veb (君), 信区: XML
标 题: Re: WAP网站建站一问，急！！！ (转载)
发信站: BBS 水木清华站 (Wed Jun 7 18:08:24 2000)

【 以下文字转载自 WWW 讨论区 】
【 原文由 szdwin 所发表 】
哥们儿先别涕零，你已经是高手了而且是先行者

能否告诉小弟俺，在哪儿能找到建wap网站的资料呢？？？

先谢乐！

【 在 littlechild (你听我说) 的大作中提到: 】

高手救我！

我和同学自建了一个WAP网站，过程如下：先装NT4.0，再装IIS4.0，再把网站内容

编好放进去，一切OK。最后把机子连在校园网上。

按说这样手机就可以直接浏览我的网站了，但用手机测试时总是显示“服务器无

响应”，我在网上其他机子上用模拟浏览器可以浏览我的网站，但用手机就是不行！

怎么回事？急盼高手赐教，感激涕零！

--

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.118.70.43]


Re: WAP网站建站一问，急！！！ (转载)

 发信人: veb (君), 信区: XML
标 题: Re: WAP网站建站一问，急！！！ (转载)
发信站: BBS 水木清华站 (Wed Jun 7 18:08:29 2000)

【 以下文字转载自 WWW 讨论区 】
【 原文由 littlechild 所发表 】
【 在 szdwin (捷达) 的大作中提到: 】
∶ 哥们儿先别涕零，你已经是高手了而且是先行者
∶ 能否告诉小弟俺，在哪儿能找到建wap网站的资料呢？？？
∶ 先谢乐！
∶ 高手救我！
∶ 我和同学自建了一个WAP网站，过程如下：先装NT4.0，再装IIS4.0，再把网站内容
∶ 编好放进去，一切OK。最后把机子连在校园网上。
∶ 按说这样手机就可以直接浏览我的网站了，但用手机测试时总是显示“服务器无
∶ 响应”，我在网上其他机子上用模拟浏览器可以浏览我的网站，但用手机就是不行！
∶ 怎么回事？急盼高手赐教，感激涕零！

这位大哥，WAP网站可比一般的INTERNET网站简单多了，这么说吧，我的课题与WAP

有关，所以做一个玩玩。WAP的资料在http：//www.wapforum.org上可以找到，免费的

很全。一般ftp上也有。全套协议4M多，PDF的，祝好运。

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.112.109.172]


Re: WAP网站建站一问，急！！！ (转载)

 发信人: veb (君), 信区: XML
标 题: Re: WAP网站建站一问，急！！！ (转载)
发信站: BBS 水木清华站 (Wed Jun 7 18:08:35 2000)

【 以下文字转载自 WWW 讨论区 】
【 原文由 grohtms 所发表 】
可能是你没有修改mime属性,给iis添上
.wml text/vnd.wap.wml
.wmlc application/vnd.wap.wmlc
.wmls text/vnd.wap.wmlscript
.wmlsc application/vnd.wap.wmlscriptc
.wbmp image/vnd.wap.wbmp
就可以了。

【 在 littlechild (你听我说) 的大作中提到: 】
∶ 高手救我！
∶ 我和同学自建了一个WAP网站，过程如下：先装NT4.0，再装IIS4.0，再把网站内容
∶ 编好放进去，一切OK。最后把机子连在校园网上。
∶ 按说这样手机就可以直接浏览我的网站了，但用手机测试时总是显示“服务器无
∶ 响应”，我在网上其他机子上用模拟浏览器可以浏览我的网站，但用手机就是不行！
∶ 怎么回事？急盼高手赐教，感激涕零！

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 210.32.146.100]


Re: WAP网站建站一问，急！！！ (转载)

 发信人: veb (君), 信区: XML
标 题: Re: WAP网站建站一问，急！！！ (转载)
发信站: BBS 水木清华站 (Wed Jun 7 18:08:40 2000)

【 以下文字转载自 WWW 讨论区 】
【 原文由 szdwin 所发表 】
靠有一个高手？？？！！！

【 在 grohtms (asdf) 的大作中提到: 】
∶ 可能是你没有修改mime属性,给iis添上
∶ .wml text/vnd.wap.wml
∶ .wmlc application/vnd.wap.wmlc
∶ .wmls text/vnd.wap.wmlscript
∶ .wmlsc application/vnd.wap.wmlscriptc
∶ .wbmp image/vnd.wap.wbmp
∶ 就可以了。

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.118.70.43]


Re: WAP网站建站一问，急！！！ (转载)

 发信人: veb (君), 信区: XML
标 题: Re: WAP网站建站一问，急！！！ (转载)
发信站: BBS 水木清华站 (Wed Jun 7 18:08:45 2000)

【 以下文字转载自 WWW 讨论区 】
【 原文由 linuxnew 所发表 】

【 在 littlechild (你听我说) 的大作中提到: 】
wap需要wap网关的支持，你是否用过
∶ 这位大哥，WAP网站可比一般的INTERNET网站简单多了，这么说吧，我的课题与WAP
∶ 有关，所以做一个玩玩。WAP的资料在http：//www.wapforum.org上可以找到，免费的
∶ 很全。一般ftp上也有。全套协议4M多，PDF的，祝好运。

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.112.168.245]


Re: WAP网站建站一问，急！！！ (转载)

 发信人: stanford2002 (天哪，我怎么啦), 信区: XML
标 题: Re: WAP网站建站一问，急！！！ (转载)
发信站: BBS 水木清华站 (Wed Jun 7 18:54:13 2000)

首先要设置MIME,
手机拨号后要通过网关，可以是电信的，也可以使联通的，更可以是自己的。
手机拨入需要特定PORT，需要开放这个端口。

试试：http://166.111.214.46

http://www.sinopalm.com

【 在 veb (君) 的大作中提到: 】
∶ 【 以下文字转载自 WWW 讨论区 】
∶ 【 原文由 littlechild 所发表 】
∶ 高手救我！
∶ 我和同学自建了一个WAP网站，过程如下：先装NT4.0，再装IIS4.0，再把网站内容
∶ 编好放进去，一切OK。最后把机子连在校园网上。
∶ 按说这样手机就可以直接浏览我的网站了，但用手机测试时总是显示“服务器无
∶ 响应”，我在网上其他机子上用模拟浏览器可以浏览我的网站，但用手机就是不行！
∶ 怎么回事？急盼高手赐教，感激涕零！

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.214.47]


Re: WAP网站建站一问，急！！！ (转载)

 发信人: veb (君), 信区: XML
标 题: Re: WAP网站建站一问，急！！！ (转载)
发信站: BBS 水木清华站 (Wed Jun 7 22:01:00 2000)

【 以下文字转载自 WWW 讨论区 】
【 原文由 dumps 所发表 】
正版的Nokia网关好象很贵
不是一般的网站愿意出钱买的
如果你现在需要，可以和IBM合作，
他们现在也做这东西，没有正式发布
现在和他们合作，使用他们的网关
是免费的 :)

【 在 wabc (谁做我的好友?) 的大作中提到: 】
∶ 购置这样一个网关需要多少钱？

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.60.151]


Re: WAP网站建站一问，急！！！ (转载)

 发信人: takeiteasy (南方有嘉木), 信区: XML
标 题: Re: WAP网站建站一问，急！！！ (转载)
发信站: BBS 水木清华站 (Wed Jun 7 23:06:43 2000)

【 在 veb (君) 的大作中提到: 】
∶ 【 以下文字转载自 WWW 讨论区 】
∶ 【 原文由 littlechild 所发表 】
∶ 高手救我！
∶ 我和同学自建了一个WAP网站，过程如下：先装NT4.0，再装IIS4.0，再把网站内容
∶ 编好放进去，一切OK。最后把机子连在校园网上。
∶ 按说这样手机就可以直接浏览我的网站了，但用手机测试时总是显示“服务器无
∶ 响应”，我在网上其他机子上用模拟浏览器可以浏览我的网站，但用手机就是不行！
∶ 怎么回事？急盼高手赐教，感激涕零！

呵呵，最简单的一条，你的机器能出国吗？

如果不行，那么就不要通过电信的网关。要不怎么说电信是个王八蛋呢！！！

他的网关刚开始的时候是免费IP，结果过了几天就变成自由IP了，结果我们就

惨了，刚开始还一直以为是网站出了问题，结果放在能出国的机器上就OK啦！！

FT，打倒中国电信！！！！！

呵呵，大家可以用手机访问http://166.111.214.46，看看。呵呵。

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.67.180]


Re: WAP网站建站一问，急！！！ (转载)

 发信人: littlechild (你听我说), 信区: XML
标 题: Re: WAP网站建站一问，急！！！ (转载)
发信站: BBS 水木清华站 (Thu Jun 8 10:15:42 2000)

【 在 takeiteasy (南方有嘉木) 的大作中提到: 】
∶ 呵呵，最简单的一条，你的机器能出国吗？
∶ 如果不行，那么就不要通过电信的网关。要不怎么说电信是个王八蛋呢！！！
∶ 他的网关刚开始的时候是免费IP，结果过了几天就变成自由IP了，结果我们就
∶ 惨了，刚开始还一直以为是网站出了问题，结果放在能出国的机器上就OK啦！?nbsp;
~~~~~~~~~~~~~~~~~~真的？，我
马上试试。
∶ FT，打倒中国电信！！！！！
∶ 呵呵，大家可以用手机访问http://166.111.214.46，看看。呵呵。
~~~~~~~~~~~~~~~~~~~~~~看了，内容太少，还需要大家
继续努力。
感谢牛人指点！

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.112.109.184]


Re: WAP网站建站一问，急！！！ (转载)

 发信人: duo (多多), 信区: XML
标 题: Re: WAP网站建站一问，急！！！ (转载)
发信站: BBS 水木清华站 (Thu Jun 8 11:32:41 2000)

【 在 littlechild (你听我说) 的大作中提到: 】
∶ ~~~~~~~~~~~~~~~~~~真的？，我
∶ 马上试试。
∶ ~~~~~~~~~~~~~~~~~~~~~~看了，内容太少，还需要大家
∶ 继续努力。
∶ 感谢牛人指点！

自己去下个网关吧，是免费的，编译好了后，把猫配好，就用自己的网关，
手机就可以浏览了。你的问题估计是手机的网关和你的WAP网站之间有点问题。
我们测试的方法就是在内部网上测试，弄台机器跑网关，配好猫，手机就可以
浏览了。不一定要用其他的网关的啊。

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.119.6.172]


Re: WAP网站建站一问，急！！！ (转载)

 发信人: zrdl (Clown), 信区: XML
标 题: Re: WAP网站建站一问，急！！！ (转载)
发信站: BBS 水木清华站 (Thu Jun 8 11:33:14 2000)

使用WINWAP 2.2不能正确显示。
为什么？
【 在 takeiteasy (南方有嘉木) 的大作中提到: 】
∶ 呵呵，最简单的一条，你的机器能出国吗？
∶ 如果不行，那么就不要通过电信的网关。要不怎么说电信是个王八蛋呢！！！
∶ 他的网关刚开始的时候是免费IP，结果过了几天就变成自由IP了，结果我们就
∶ 惨了，刚开始还一直以为是网站出了问题，结果放在能出国的机器上就OK啦！！
∶ FT，打倒中国电信！！！！！
∶ 呵呵，大家可以用手机访问http://166.111.214.46，看看。呵呵。

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.112.87.220]


Re: WAP网站建站一问，急！！！ (转载)

 发信人: duo (多多), 信区: XML
标 题: Re: WAP网站建站一问，急！！！ (转载)
发信站: BBS 水木清华站 (Thu Jun 8 11:34:49 2000)

【 在 zrdl (Clown) 的大作中提到: 】
∶ 使用WINWAP 2.2不能正确显示。
∶ 为什么？

不支持下一节访问的，用来测试服务器的MIME设置是否正确还是可以的。

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.119.6.172]


Re: WAP网站建站一问，急！！！ (转载)

 发信人: takeiteasy (南方有嘉木), 信区: XML
标 题: Re: WAP网站建站一问，急！！！ (转载)
发信站: BBS 水木清华站 (Thu Jun 8 12:13:58 2000)

ft,这个不能显示主要是因为WinWAP不支持中文。呵呵。
而且，我们用的Unicode它好像也不支持。FT。
推荐使用Nokia ToolKit，它是我所用过的模拟器中支持中文
最好的。呵呵，可是Nokia的Server作的很烂，真是奇怪。
不过，这个Toolkit太费资源。呵呵。

【 在 duo (多多) 的大作中提到: 】
∶ 不支持下一节访问的，用来测试服务器的MIME设置是否正确还是可以的。

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.67.183]


Re: WAP网站建站一问，急！！！ (转载)

 发信人: dumps (自我定位中...), 信区: XML
标 题: Re: WAP网站建站一问，急！！！ (转载)
发信站: BBS 水木清华站 (Thu Jun 8 12:56:44 2000)

【 在 takeiteasy (南方有嘉木) 的大作中提到: 】
∶ ft,这个不能显示主要是因为WinWAP不支持中文。呵呵。
∶ 而且，我们用的Unicode它好像也不支持。FT。
∶ 推荐使用Nokia ToolKit，它是我所用过的模拟器中支持中文
∶ 最好的。呵呵，可是Nokia的Server作的很烂，真是奇怪。

据说这些大公司的WAP Server都是做了手脚的,比如Motorola的手机
遇到Nokia Server会出一些怪问题,同样Nokia的手机在Motorola的
WAP Server那里也不是太爽(这些都有待亲自考证)

∶ 不过，这个Toolkit太费资源。呵呵。

用Java做的东东,显然比较慢,不过这个Toolkit应该是最好用的了

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.60.167]


Re: WAP网站建站一问，急！！！ (转载)

 发信人: Rossini (阿木*Thinking in .Com), 信区: XML
标 题: Re: WAP网站建站一问，急！！！ (转载)
发信站: BBS 水木清华站 (Thu Jun 8 12:59:55 2000)

请问再哪里修改，
我的机器市nt4+iis4，多谢。
【 在 veb (君) 的大作中提到: 】
∶ 【 以下文字转载自 WWW 讨论区 】
∶ 【 原文由 grohtms 所发表 】
∶ 可能是你没有修改mime属性,给iis添上
∶ .wml text/vnd.wap.wml
∶ .wmlc application/vnd.wap.wmlc
∶ .wmls text/vnd.wap.wmlscript
∶ .wmlsc application/vnd.wap.wmlscriptc
∶ .wbmp image/vnd.wap.wbmp
∶ 就可以了。

--

※ 来源:·BBS 水木清华站 smth.org·[FROM: 162.105.39.72]


Re: WAP网站建站一问，急！！！ (转载)

 发信人: dumps (自我定位中...), 信区: XML
标 题: Re: WAP网站建站一问，急！！！ (转载)
发信站: BBS 水木清华站 (Thu Jun 8 13:36:38 2000)

我现在用的是Windows2000,
在IIS中用右键单击WebSite,选择 属性 --> HTTP头 --> 文件类型
添加即可

【 在 Rossini (阿木*Thinking in .Com) 的大作中提到: 】
∶ 请问再哪里修改，
∶ 我的机器市nt4+iis4，多谢。

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.60.167]


Re: WAP网站建站一问，急！！！ (转载)

 发信人: mony (beat NATO), 信区: XML
标 题: Re: WAP网站建站一问，急！！！ (转载)
发信站: BBS 水木清华站 (Thu Jun 8 14:43:26 2000)

【 在 duo (多多) 的大作中提到: 】
∶ 自己去下个网关吧，是免费的，编译好了后，把猫配好，就用自己的网关，
∶ 手机就可以浏览了。你的问题估计是手机的网关和你的WAP网站之间有点问题。
∶ 我们测试的方法就是在内部网上测试，弄台机器跑网关，配好猫，手机就可以
∶ 浏览了。不一定要用其他的网关的啊。

用自己的网关,那具体说怎么配置呢,手机是不是以类似拨号的方式与自己的网关通信
,那么在手机上接入号之类的怎么搞,猫又怎么搞呢?请讲的稍详细点,谢谢!?nbsp;

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.112.109.173]


Re: WAP网站建站一问，急！！！ (转载)

 发信人: takeiteasy (南方有嘉木), 信区: XML
标 题: Re: WAP网站建站一问，急！！！ (转载)
发信站: BBS 水木清华站 (Thu Jun 8 22:26:49 2000)

【 在 dumps (自我定位中...) 的大作中提到: 】
∶ 据说这些大公司的WAP Server都是做了手脚的,比如Motorola的手机
∶ 遇到Nokia Server会出一些怪问题,同样Nokia的手机在Motorola的
∶ WAP Server那里也不是太爽(这些都有待亲自考证)
∶ 用Java做的东东,显然比较慢,不过这个Toolkit应该是最好用的了

ft,呵呵，我们现在正在做，希望这些手机别乱来。呵呵。

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.67.180]
上一篇 返回上一页 回到目录 回到页首


WAP前景展望 (BM: inannan)

编号 | 类别 | 标题 | 编辑日期
1 | 文件 | WAP 2.0将会是什么？ inannan | 2001.05.28
2 | 文件 | WAP 还 可 以 生 存 多 久 inannan | 2001.05.28
3 | 文件 | 为WAP奏哀乐，为GPRS唱赞歌！ inannan | 2001.05.28
4 | 文件 | I-mode，大家知道这个东东吗 (转载) inannan | 2001.05.28
5 | 文件 | 移 动 电 话 的 操 作 系 统 之 争 inannan | 2001.05.28
返回上一页 回到上一级目录


WAP 2.0将会是什么？

 发信人: huabing (再硬的冰,我也要把你化了), 信区: XML
标 题: WAP 2.0将会是什么？
发信站: BBS 水木清华站 (Sat Aug 26 10:54:07 2000)

很多人不断谴责WAP，说它作为领导无线通信的新技术只是个拙劣的选择，这种态度好
像已经成为很多'有识之士'的共识。阴谋论认为几间大公司创建的这种专利移动技术标
准的梦想正在崩溃，原因是：1）它有可能是垃圾，和2）日本的i-Mode成功得多，狠狠
给了WAP一记打击。
    也许欧洲永远不会接受i-Mode在那里的完全复制，因为欧洲已经向WAP投入了很多时
间、努力和自尊。大胆的预测是，WAP2.0将会是两种技术的杂交体。这要感谢W3C在这一
进展上的影响和努力。
    W3C在很多方面推动或促进了互联网行业的标准化，并且解决了不少因非标准化而产
生的开发上的难题。它现在正与WAP FORUM一起共同工作，而WAP FORUM一直被人认为没
什么创建性。
目前的状况是：

    i-Mode在日本非常成功（用户数是所有WAP用户二倍有多）。成功的原因有：第一，
通过这种现代的移动服务，互联网上的创新可以通过移动电话出售给消费者。I-Mode使
用袖珍版的HTML在前，W3C紧跟在后，他们清楚地描述了'电话上的网络'这一概念的要领
。使用HTML使所有过程都更简单和更容易了。还有一个有利因素是，仅NTT DoCoMo一家
公司在做此事，太多的厨师不能一起煮出一锅好汤来。
    但人们对WAP协议的效果存疑。WAP1.1的发布使人们终于可以放心的是他们手上的东
西是基于统一标准的，别人也都如此。在此之前，配电话和配网关仿佛象买彩票一样不
知道结果--手机上会不会有东西看得见。当你发现i-Mode没有类似的麻烦的时候，你可
能会问，WAP有这么麻烦的价值吗？于是最近几个月就在两个阵营的拗手瓜和互相叫骂声
中浪费了。
    这个行业的一个优点是，如果你花太长时间在争辩上，竞争者就会很快将你取替。
WAP阵营和I-Mode阵营现在清醒过来，双方开始对话了。
    简单来说，WAP有品牌，i-Mode有用户。WAP绝对不是垃圾，它在处理连接问题上比
它的对手要好得多，而且无须在手机中加上特殊零件，但日本产品更容易、对用户更友
好、支持'随时在线'的连接，而且还有彩色，一句话，就是好。持这种观点的人已经犯
了一个错误，I-mode的某些优点如随时在线并不是CHTML的优点，彩色屏幕也只是手机设
计的更高境界并不由I-mode专有，而且，它现在还没有一个象WAP一样的较完整的体系。
双方的主要争执点在于标识语言本身和应用层的区别上。
    两者的交叉区是什么？一开始有人问这个问题，各种带不同前缀的HTML东西都窜了
出来：'你要一直用CHTML'；'不，你需要XHTML'；'用DHTML怎么样？''我们建议还是忘
了WAP,（而且WMLScript也是只死渡渡鸟）' 在电话上用Java如何？（再来一次循环：）
'Java真一傻瓜''它可以更小点儿/它的兼容性更好/它更有用/我喜欢它'……Java的确是
一种特别有用的语言，但这点以前也没能帮上什么忙。
    另一个问题是，新版本需不需要兼容已经存在的WAP协议？个人说来，我可能更喜欢
--将WML扔进垃圾桶。无可否认，它很快就会这样，只不知道现在的WAP协议制定者会不
会特别想保存颜面。
    安全性？WAP和I-mode各有所长但也都有不足。如果大家都想有一个好协议，安全性
问题自然会迎刀而解。
    那么，到底WAP 2.0会怎样？如果是标识语言，最好是在i-mode的基础上有进一步改
善而且再带上WML的优点，主要基于HTML；体系上还是以WAP为主。如此一来，人们会不
会开始买上网电话呢？
    一定要看《成功源于创意--NTT DOCOMO的成功之道》
     *接下来相关WAP和I-MODE相对抗的系列文章《WAP论坛CEO对本文观点的回复》、《
DOCOMO的抨击》更加有看头，千万别错过！

--

※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.214.46]
返回上一页 回到目录 回到页首 下一篇


WAP 还 可 以 生 存 多 久

 发信人: huabing (再硬的冰,我也要把你化了), 信区: XML
标 题: WAP 还 可 以 生 存 多 久
发信站: BBS 水木清华站 (Sun Aug 27 13:33:57 2000)

大部分支持上网的移动电话还没有配备带有文件系统的、典型意义上的操作系统。运行
在微浏览器下的操作系统已有雏形，象其他移动上网软件和产品一样，也在逐渐成熟的
道路上前进。
    上网移动终端操作系统的主宰分三个阵营：微软的CE、Symbian的EPOC，和PALM的P
ALM OS。在去年，诺基亚与PALM，爱立信与微软分别结成联盟，原本清晰的三个阵营出
现了交叉。
    早在1997年6月，Ericsson、Nokia、Phone.com和Motorola等四家公司就发起成立了
WAP论坛组织。1999年初，法国就在欧洲率先推出WAP信息服务。那个时候，WAP对中国大
多数互联网业内人士来说还是个比较陌生的词汇，不过从今年年初开始，WAP一下子火热
了起来，现在各大大小小ISP都在忙着开发基于WAP的应用。
    同时，由于前段时间互联网炒作的冷却，很多业内人士也开始对WAP的生存（标准自
身和在中国的应用前景）问题开始思索并提出了很多疑问。不可否认，WAP自身有其不足
，中国的市场又存在很多障碍。WAP究竟会如何发展应该说还是个未知数，但笔者还是想
通过几个方面的分析，让大家有更清晰的了解。
一、网络无线化的趋势不可逆转

     互联网的发展经历了十多年的发展，从狭窄的专业人员应用发展到广泛的民用和商
业应用。整个网络技术的发展一开始和通讯技术发展初期一样，基于有线途径。在10年
多的时间里，一直没有变化，其中有两方面的原因。
    从计算机技术来看，这跟数字化有关，在80年代，支持计算机数据传送的网络都是
数字线路，不同于电报电话网所使用的模拟线路。而同期的无线网络则完全是模拟的，
无法满足计算机通讯对高速度和高稳定性的要求。
    另一个方面，无线通讯技术在90年代以前受到发射技术、转发技术和地址控制技术
的制约、发展速度极其缓慢，尤其是象移动电话、传呼机等纯民用产品。到了80年代末
，由于上述技术的发展和卫星、半导体技术的发展，无线通讯才开始更广泛的应用于社
会生活。
    但是到了90年代，无线通讯技术本身已经成熟，各种电气产品的数字化也很快影响
了无线设备，于是出现了基于数字线路的GSM数字移动电话等一系列产品。同时，这些技
术也给无线网络的发展奠定了基础，出现了无线局域网、无线远程网。当然，这个时期
无线网络还是昂贵的系统，仅用于部分学术机构、特殊政府部门和某些财力雄厚的商业
实体。
    随着互联网爆发式的发展和普及，技术领域的目光自然而然地向无线应用扩展，这
是一个更广阔的空间，可以克服有线互联网的很多弊病。有线网络首先是用实体线路如
光纤、双绞线等进行联接，这就不可避免的带来了成本高、线路脆弱和扩容困难的问题
。随着互联网用户的急剧增加，这个问题也越来越突出。相比之下，无线网络则免去了
线路的限制，任何扩容也只要更换服务端或用户端的设备，在半导体技术飞速发展、成
本大幅度降低的今天，无疑非常方便。
    当然从技术角度，无线网络还远不成熟，抗干扰能力、传输速度等问题依然需要研
究人员付出巨大的努力。但是随着CDMA、GPRS、BLUETOOTH等技术的逐渐应用，无线网络
的通讯质量会在不长的时间里有很快的发展。同时，随着移动电话与Internet人口急速
增长，无线网络将拥有更多的支持用户。
    所以，网络无线化的趋势已不可逆转。
二、XML的发展与WML的关系

    应该说，推动互联网发展的功劳应该归于两项技术：TCP/IP和HTTP。前者解决了广
域网络地址定位的问题，而后者给使用者提供了良好的操作环境。
    HTML（Hypertext Markup Language）虽然不是第一种实用化的文档信息描述语言，
也不是最好的，但的的确确在互联网发展的初期立下了汗马功劳。这种语言通过一些标
记（TAG）标示元文本的各种属性（如字体、颜色、链接、图片等等），使互联网上的信
息传递摆脱了以前单调枯燥的TTY方式。
    不过HTML在以后的不断发展中，变得越来越复杂和臃肿，任何一种新的媒体表现形
式都需要新的HTML语句支持，使得浏览器制造商不断地忙于升级，疲于奔命。于是一种
新型标志语言（严格地说，应该是元语言meta-language）--XML（ Extensible Markup
Language， 当然，还有它和HTML共同的前身SGML，本文略）破茧而出，它继承了HTML
用文本标记描述文档的方法，同时吸收了OOP（Object Oriented Programming, 面向对
象的程序设计）模型自定义对象的特点，给文档编制者自己定义类型的能力。它使文档
描述语言跳出了教条的原始框架，转向既严格又灵活的新方向，把可扩展性、结构性及
可校验性引入了互联网标志语言。从目前的应用来看，HTML显然还是主流，但XML的出现
弥补了它的某些缺陷，很快就进入一种共存状态。同时越来越多的网站开始采用纯XML的
页面，Microsoft、Netscape、Adobe、Sun 和Xerox 也都宣布支持XML。
    XML最终取代HTML只是个时间问题。 WML（Wireless Markup Language）语言的设计
思想就是基于XML的，几乎具有XML的所有基本特点。只不过简化了有关复杂媒体的支持
部分，使其更精简，更适合于在移动电话上显示简单页面。相比之下，I-MODE的CHTML虽
然在目前应用更方便些，但对比支持设备和互联网文档描述语言的发展，明显处于比较
落后的地位。
    当然，WML也有很多缺陷，最主要的表现在极大地削弱了XML原来具有的可扩展性，
这对使用者是个很大的问题。将来新的媒体得到支持以后，用户只能更换设备，势必造
成资源的浪费。不过作为WAP协议制定者的WAP论坛，当然不会坐视问题继续存在，在新
的协议版本制定过程中，这都在考虑范围之内。
    所以我还可以说：基于XML的WML将在一段时间里是最合适的无线互联网页面描述语
言。
三、3G（第三代数字移动通信系统）对WAP的影响
    现在占主导地位的移动通信主要是以GSM和窄带CDMA为主要制式标准的第二代数字移
动通信系统（第一代为模拟通信），其主要业务集中于话音业务和部分低速的数据业务
。与１G、２G技术相比，３G技术最大的优势是高带宽、高速率，理论上其无线传输最高
速率达到2MB/S，较２G的9.6KB/S有了大幅度提高，当然眼下最快的GPRS也只能达到115
KB/S。不过由于与GPRS的分组无线交换可以使若干与CDMA或GSM共享同一个信道，网络连
接速度大大缩短，几乎可以"随时在线"。所以已经可以让更多的功能的实现成为可能，
比如多媒体、严格数据加密等大数据量的应用。

    同时，3G是无线通讯层的应用协议，对WAP本身没有构成任何威胁。从应用的角度讲
，反而有助于它的前进和推广，可以让WAP有更广泛的发展空间。当然，目前大力推广的
GPRS并不代表3G的全部。随着技术的发展无线网络的性能会有更大的提高，WAP本身也不
会停滞不前。它们只能是互相推动互相支持的关系。
预测和结论
    一项技术能否被广泛应用，并不仅仅取决于技术的领先水平和成熟程度，市场环境
的支持和时间因素可能更为重要。现行的一些核心技术如HTTP等本身也不是可以找到的
最好技术，但却占有广阔的市场。
    现在看来，WAP还算是目前最好的无线互联网应用协议，它会成为人类在无线互联网
上使用的第一个实用化协议。它所具有的优点和开创性思路会在很长一段时间影响无线
互联网的发展和建设模式。当然，客观地说，WAP设备本身的缺陷（电力不足、屏幕尺寸
有限、键盘较小、操作和输入不便等等）和目前更主要的是价格和服务内容的问题影响
了用户对它的热情。而且WAP现在虽然得到业界的广泛支持，但由于标准落后、可扩充性
差等原因，不满足于现状的企业已经开始推出其它的无线互联网技术。比如微软公司的
双模微型浏览器MME（Microsoft Mobile Explorer）。所以现有的WAP协议有可能在市场
还没有完全成熟的时候就悄然退出。
    但是我们也应该看到，WAP本身不会停滞在目前的水平上，它也会继续发展，自我演
进。而且在WAP的生存问题上，移动通讯设备生产商的眼光具有决定性的作用。终端用户
的习惯更多会受到市场产品的引导，而所应用的技术是否完善和成熟并不会对他们造成
很大影响。目前世界范围内无线通讯用户的数量在急剧增加，中国的速度更是快得让人
吃惊。这样一个庞大的市场至少给了WAP在用户基础上的保证，也可以让设备制造商有更
大的余地施加他们的影响力。
    所以，从笔者的眼光看来，WAP必然会在一段时间（3年以内）里牢牢地占领市场，
并且有可能在更长时间（或者5年以上）通过自身的发展继续存在。因为市场一旦成熟就
会产生惰性，标准的非革命性变化只能增加更多的成本，相比其好处也许是得不偿失的
。 WAP在市场的先入上占了绝对优势。
附录：WAP Forum 背景资料
    WAP Forum 1997年6月成立，发起者为爱立信、摩托罗拉、诺基亚和无线星球（Unw
ired Planet,也就是现在的Phone.com）。初始成员也就是发起的这四家公司。
    WAP Forum的目标是： １. 将互联网的内容和先进服务引入数字移动电话和其它无
线终端
                         ２. 设立一个能应用于不同无线网络技术的全球性的无线协
议规范
                         ３. 使内容和应用的创造能超越非常广泛的无线传输网络和
无线设备类型
                         ４.涵盖和拓展适用于任何地方的现有标准和技术
    WAP Forum 成立后发展迅速，到1998年5月7日WAP1.0标准正式公布时，WAP Forum的
成员已达37个，包括无线网络运营商、基础设施和终端制造商、智能卡制造商和以及信
息技术和软件公司等。到1999年，WAP Forum成员已经超过100个。2000年，WAP Forum的
成员数目翻了一番，仅在4月到6月这段时间内就增长了25％。到2000年6月中旬，WAP F
orum的成员已达500个之多。
    WAP论坛在引导无线网络应用方面发挥了重要作用，它制订了相关技术规范。这套开
放的全球标准鼓励软硬件厂商和应用系统厂商加强合作，携手开发高速、可靠和全面的
无线解决方案。
    WAP协议致力打破不同系统之间的隔阂，确保新产品能通用于现有各大无线网络，例
如最常见的CDMA和GSM标准，并保障不同类型无线设备之间的互操作性，方便用户随时上
网。WAP内容主要通过HTTP、SSL和TCP/IP等常用的标准通信协议传输，同时通用于各种
操作系统，如Palm OS、EPOC、Windows CE、FLEXOS、OS/9和JavaOS等。
   WAP Forum的长期目标是朝着建立统一的信息空间和共同的标准和技术而努力，使特
殊信息和服务能传输到移动无线终端。随着新的移动电话技术、网络协议和互联网标准
的发展，WAP Forum将继续扮演积极的角色，为这些新的技术和标准定形，使他们符合无
线数据市场的需要。WAP Forum将继续接纳新成员并为他们提供技术资源，使他们能找到
制定公开、相互合作的解决方案的最好途径让整个产业受益。WAP Forum将进一步完善它
的标准并发展新的标准，引导产业革新向新的令人鼓舞的方向发展。

--

※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.214.46]


为WAP奏哀乐，为GPRS唱赞歌！

 发信人: fhua (风华), 信区: XML
标 题: 为WAP奏哀乐，为GPRS唱赞歌！
发信站: BBS 水木清华站 (Mon Aug 14 17:27:46 2000)

新闻内容：
    WAP必死原因
如果移动电话只是用来接听电话，那么目前我们所使用的第二代GSM系统可以说是绰绰有
余，不过随着网际网络的出现，数据、网络信息的结合，想要无线上网、转帐、要享受
随时随地移动上网的乐趣，已面市的手机虽多，但眼前唯一选择，除了传输数率9.6Kbp
s慢速上网的WAP手机别无它途。这也成为最近WAP功能成为不少手机系统与制造商凌厉的
广告攻势炒作的重点。如果再有人把前景描绘得更好些：希望通过手机如普通电脑般上
WWW网站，打视像电话，甚至看看网上电影，按照现行WAP的速度你会认为他简直是痴人
说梦。其实这也并非天方夜谈，在技术上已经早就可以提供了，它就是新的移动上网明
星--GPRS。
    GPRS胜WAP之道
相比WAP架构，GPRS技术架设1个更宽、更快的网络环境，相比较于目前移动通讯WAP所提
供的9.6kbps传输速率，被冠上"二点五代"称号的GPRS数据传输速度每秒超过115 kbps，
对手机消费者来说，最大的好处是浏览网际网络将变得简单、快速而方便，即使比起现
有电话拨号上网的56kbps传输速度也更胜一筹。
更重要的一点的是它能WAP所不能：WAP手机上网还得要上特别为WAP手机所特设的站点，
不能如我们习惯的电脑上网方式访问我们想去的WWW站点；更不幸的是暂时WAP站点为数
不多，而且内容受先天技术缺陷的限制，单调枯燥，与我们习惯流览的网站的架构相差
很大；而GPRS就不同了，它除了速度高外，上网就如我们普通电脑上网上一样可以访问
WWW站点，可以说，GPRS手机宽带上网技术让你的手机在3C的世界里如虎添翼。不过，若
要升级到GPRS的高速移动上网境界，消费者还须再经历一次换机重创。
    奸商所为
综观移动电话市场大势，在强大的WAP广告宣传中，可以预计下半年将进入WAP手机百家
争鸣的局面，不过在移动通讯从第二代晋级到第三代过程中，将扮演阶段性重要任务的
GPRS才是今年的压轴好戏，而WAP将是昙花一现，死亡是它逃避不了的现实。其实GPRS技
术系统与方案已较早提出，但面市的GPRS手机却为数极少，这样不得不让人认为是手机
厂想多剥消费者一次皮，为了多作一笔WAP手机的生意，才放着让GPRS手机慢半拍推出。

    内部技术
在技术上，一些新的应用在以往的GSM上是不能用的，但采用GPRS后将成为可能，它具有
更有吸引力的无线Internet接入，从而为参与Internet的大发展敞开了大门。使用GPRS
时数据封装进每个分组并在网上发送。网络容量仅在需要时才分配，即在一个分组正在
发送的时间内。在分组完成发送后不再需要此容量时就立即释放，所以提供了即时连接
和高传输率，所以GPRS被认为是一种经济高效的分组数据技术。
另外GPRS所提供的数据速率取决于所采用的编码方案，在标准中有四种编码数据速率，
分别为每信道9.05、13.4、15.6和21.4kbit/s。由于能在一个频率上提供全部8个业务信
道，最大的数据吞吐量可高达每消费者171kbit/s，不过，由于信道编码和多时隙分配所
需的开销，更实际的最高吞吐量为115kbit/s，对于移动上网而言，这已是一个很理想的
数值了。此技术使2000年以后经营商和消费者的Internet接入起革命性变化。
    更受欢迎的计费标准
在技术提供商即电信业者眼中，GPRS可助其提供更多的利润，包括：瞬间上线、持续连
网(Always Connected, Always On-line)、快速传输、按量计价，以及随身网际网络(I
nternet on the go)等，这些都是GPRS被大力吹捧、标榜的特性。系统业者也表示，消
费者在使用GPRS服务时，可有多样化的费率方案及服务内容可供选择，并能让现有的WA
P服务发挥的更淋漓尽致。未来GPRS服务的收费方式将从传统以联机时间长短为单位，转
变为以数据传输量多寡、传输时段、资料重要性(传输先后顺序) 为计费基准，即使消费
者可长时间在线滞留但只付所有容量的费用，按照数据量的发送和接收来收费的能力可
使用户的使用费用大大降低。这是众多消费者所希望的收费标准。
    乐观的前景
GPRS"二点五代"移动通讯，它是通往第三代无线通讯的桥梁。主要运作原理是应用目前
GSM网络上的封包覆盖技术，提供更快速的数据传输，可与调制解调器专线相比较，甚至
有过之无不及(从56kbps到115kbps)，并且能为无线通讯消费者开启新的应用范围，如移
动的信用卡验证、远程任意数据的监测业务、远程访问公司档案以及网际网络浏览、电
玩游戏和虚拟教学等等。对消费者来说，GPRS可同时处理话音和数据来电，它的收发速
度并非建立在"联机时间"上，消费者可在Always On状态下更能享有高速和容易进入的网
络服务。当然，消费者向往已久的视频业务和带有即时画面的无线成像在移动网上也将
成为可能。它的一个较大的优势是能够充分利用现有的GSM网，鉴于GSM的覆盖很广，GP
RS将为Internet和其它分组网络的接入提供真正的全球性大宗市场。当然，随着GPRS的
风行WAP死亡也是不争的事实！

--
【
◎■■■■】〓〓〓〓〓〓〓〓〓〓>
  【

※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.66.188]


I-mode，大家知道这个东东吗 (转载)

 发信人: takeiteasy (南方有嘉木－我和我的梦擦肩而过), 信区: XML
标 题: I-mode，大家知道这个东东吗 (转载)
发信站: BBS 水木清华站 (Fri Aug 18 14:04:33 2000)

【 以下文字转载自 E_commerce 讨论区 】
【 原文由 caniggia 所发表 】
I-mode vs. WAP--谈无线互联网市场
虽然 WAP 被炒得很火，但在成本、流行度、易用性以及商业成功度方面，WAP 都不
及 I-mode。
----------------------------------------------------------------------------
----
移动通讯和互联网是现代社会的两朵奇葩，迅速改变着我们的生活和工作方式。曾
几何时，这两者是隔离的，人们使用手机进行语音通话，使用 PC 机和固定电话上网。
而如今这两者正在结合起来，为我们勾勒了一幅无线互联网的诱人前景。尤其是随着 2
.5G 和 3G 移动通讯技术的发展，无线传输的带宽将由现在的 9.6Kbps 提高到 144Kbp
s 以至 2Mbps，这将大大推动无线互联网的发展。
在 2.5G 和 3G 移动通讯技术还没有大规模推出的今天，一些国家的无线互联网技
术和市场已经迅速发展起来。其中的代表是日本的 I-mode 和欧洲的 WAP，它们形成了
二足鼎立的局面。
I-mode 和 WAP 的主要区别在于 I-mode 的内容是用 Compact HTML 写成的，因此
可以兼容现行的大部分网络内容；而 WAP 使用的是 WML，现有的网络内容必须转化为
WML 内容才能被 WAP 所使用。另外，I-mode 手机在技术上比 WAP 手机复杂，需要更高
的数据处理能力，但却更容易使用。
日本的 I-mode 已经取得了极大的成功，自从 I-mode 在 1999 年 2 月推出以来，
它已把日本由一个互联网的落后国家转变为世界上发展最快的互联网市场。NTT DoCoMo
的 I-mode 用户已经超过了 1000 万，并且仍然以每周 21 万的速度增长。I-mode 在
日本已经成为继 Walkman, Game Boy 和 PlayStation 之后的又一创新和流行趋势。
I-mode 何以如此成功？ 并不是因为 I-mode 的技术如何先进：实际上 NTT DoCoM
o 的网络速度很慢，并且由于用户过多而超负荷运行。I-mode 成功的原因在于它可以避
免不同公司间不同技术和服务标准的冲突。另外日本没有短消息服务，而日本的青年人
又追求时髦，热衷于尝试新事物，所以年轻人就直接转向 I-mode。更重要的是I-mode
有一种成功的商业模式和营销策略。NTT DoCoMo 有一个很好的商业模式，使得内容提供
商可以获利，因此日本有众多的 ICP 向 I-mode 提供内容和服务，丰富的内容和新颖的
服务又吸引了众多的用户。。
在成本、流行度、易用性以及商业成功度方面，WAP 都不及 I-mode。WAP 本可以在
去年夏天被采纳为欧洲的无线互联网标准，但是它现在的进展缓慢。WAP 和I-mode 是一
对竞争对手，NTT DoCoMo 正在努力把 I-mode 推向欧洲甚至推向全世界，欧洲和美国已
经出现了同时支持 WAP 和 I-mode 的网络门户。
但是，I-mode 要想取代 WAP 也非易事，因为 WAP 有诺基亚和爱立信等强有力的支
持者，并且 WAP 也在不断发展和完善，可以预见，二者的竞争终将进入白热化。最终很
可能二者会走向融合，或被更先进的技术取代，只是 WAP 的前景，不再是简单的一片大
好了。

--
曾经有一条便宜的内存摆在我面前，我没有珍惜，
等到涨价的时候才追悔莫及。尘世间最痛苦的事莫
过于此。如果上天能给我一个再来一次的机会，我
要对那个老板说，我要了！如果一定要给这个交易
加上一个数量，我希望是，一万条！?nbsp;

※ 来源:·BBS 水木清华站 smth.org·[FROM: bbs.ndc.neu.edu]


移 动 电 话 的 操 作 系 统 之 争

 发信人: huabing (再硬的冰,我也要把你化了), 信区: XML
标 题: 移 动 电 话 的 操 作 系 统 之 争
发信站: BBS 水木清华站 (Sat Aug 26 11:02:10 2000)

大部分支持上网的移动电话还没有配备带有文件系统的、典型意义上的操作系统。运行
在微浏览器下的操作系统已有雏形，象其他移动上网软件和产品一样，也在逐渐成熟的
道路上前进。
    上网移动终端操作系统的主宰分三个阵营：微软的CE、Symbian的EPOC，和PALM的P
ALM OS。在去年，诺基亚与PALM，爱立信与微软分别结成联盟，原本清晰的三个阵营出
现了交叉。
    主要的EPOC支持者有四家移动电话制造商：诺基亚、爱立信、摩托罗拉和松下，使
用EPOC操作系统的移动电话如爱立信的R320。这四家制造商生产的移动电话市场占有率
高达75%或以上，毫不惊讶他们开始曾试图阻止微软象控制PC操作系统和浏览器一样控制
移动电话的企图。1999年中，EPOC似乎控制了局势；但年尾的情况出现变化，令人迷惑
不解。微软开始绕过移动电话制造商直接与营运商打上交道，这一策略奏效了。
    微软先是买了美国一家重要营运商NEXTEL的20%股权；1999年10月，它又宣布与英国
电信合组合资公司，目的是要在新的移动终端上使用CE；同样地，它还使NTT DOCOMO向
其客户提供带有CE浏览器的移动电话。PALM的态度在1999年间也大幅转变。年初时，它
象是一颗谁都可以摘的红苹果---有一个相当不错的系统，而且无需支付任何专利费；自
4月起，它开始收取这一收费；1999年11月，它与诺基亚结成联盟。
    初期看上去似乎是SYMBIAN阵营与PALM合力对付微软，直到99年中，都是移动电话制
造商、SYMBIAN和其他大品牌、大产量的产品立于不败之地。这三个利益团体的优劣势可
用下表表示：
    SYMBIAN阵营的重要成员爱立信与微软的联盟申明使形势变得极不明朗。两家公司的
合作协议虽然仅限于Mobile Explorer浏览器，操作系统本身并非协议的一部分。然而，
怀疑论断的看法是，一旦微软成功地将自己的浏览器技术塞入爱立信的移动电话，那么
离操作系统也只有一步之遥了。爱立信的回应则是重申----EPOC的未来不会因此受任何
影响。
    微软的胜算恐怕在于它是否可以将自己的操作系统有效压缩到一个很小的体积，降
低耗电量，并在语音功能方面提供支持。无论如何，如果能够控制微浏览器技术对微软
已经很好了，它的产品很快就可以成为通用的用户界面。一些应用运行于浏览器(如支持
多种平台的JAVA环境)之下的操作系统则仿佛隐形人，至少，就算是别人的操作系统，也
不那么容易被大众发现和感激。不过，微软的'霸道'可不是浪得虚名，以它过去在有线
电视领域力取首席浏览器地位的所作所为来看，只要它想做，它可以买得起任何公司--
--它当时一口气买了美国七家与有线网络有关公司的股权。
    微软的Mobile Explorer基于一家名为STNC公司的产品，这家公司于1999年7月被微
软收购。ME支持WAP和HTML，可能会成为其他浏览器的替代品，如PHONE.COM的浏览器。

    极力推广WAP的利益团体中以营运商和移动电话制造商最为积极。主要的移动电话制
造商同时也是主要的系统供应商，如诺基亚、爱立信、摩托罗拉等，他们对营运商具有
很大的影响力。不过，逐渐有越来越多的营运商开始试图提出自己对移动电话的要求，
当中又以NTT DOCOMO和VODAFONE、法国电信等重量级的营运商为代表。就算如此，整体
上营运商在移动电话功能方面仍然受移动电话制造商左右，不同操作系统有各自的优缺
点，移动电话操作系统之争怕还是制造商圈子内的利益之争----为了将竞争对手抛开

--

※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.214.46]
上一篇 返回上一页 回到目录 回到页首


XML与电子商务 (BM: inannan)

编号 | 类别 | 标题 | 编辑日期
1 | 文件 | [范文][XML]XML — 电 子 商 务 应 用 的 veb | 2000.05.27
2 | 文件 | BizTalk新电子商务架构简介 inannan | 2001.05.25
3 | 文件 | 两个电子商务在企业内部的应用案例 inannan | 2001.05.30
返回上一页 回到上一级目录


[范文][XML]XML — 电 子 商 务 应 用 的 基 石 (转载)

 发信人: DDG (导弹驱逐舰~雾的季节), 信区: XML
标 题: [范文][XML]XML — 电 子 商 务 应 用 的 基 石 (转载)
发信站: BBS 水木清华站 (Thu Apr 6 13:30:19 2000)

【 以下文字转载自 New_board 讨论区 】
【 原文由 shunder 所发表 】
XML — 电 子 商 务 应 用 的 基 石
可延伸的标示语言XML，提供了使用者与电脑之间互动的桥梁，是电子商务的一大利
器。
张思源
电子商务存在於网际网路这个热门新媒体的特殊环境里，在网际网路旋风的袭卷之
下，电子商务是网际网路的重要商机来源之一，企业若是能善用电子商务应用，将会在
这革命性的潮流中掘取无限商机，甚至有可能成为第二个Amazon.com，或是网际网路业
的微软。
新一代「可延伸性标示语言」(Extensible Markup Language，简称XML)，将革命性
地改变以Web为基础的电子商业应用型态，因为XML对网页编辑上的可携性及平台独立性
、系统的相容性、资源的整合和物流管理等等的电子商业应用，提供了完整的解决方案
。
可 延 伸 的 标 示 语 言
XML取名叫做可以延伸的标示语言，主要是有别於HTML那种单一固定的语法，而要让
全球资讯网上制作页面时，有一个更具弹性、更容易添加新功能，而又不失统一标准的
语言格式。
严格说起来，XML本身不是一个单一的标示语言，它是一种元语言（meta-language
），可以被用来定义任何一种新的标示语言。像HTML之类的传统标示语言，是用来定义
某一类文件的格式，以便於展示或列印；而XML则是可以用来创造类别文件的格式定义，
也就是在XML之中创造出很多不同的标示语言，用来定义不同的文件类别。
其实，早就有这麽一个全世界标准的标示语言，可以用来定义某一类文件格式标志
，那就是SGML（电子通讯文件交换格式标准语言）。它是一个国际性标准（ISO 8879）
，用来形容和定义结构化的电子文件，在1980年代就制订了。不过，由於SGML太过於详
细和复杂，所以一直没有被广泛地采用。
从 HTML 到 XML
HTML实际是从SGML衍生出来的一种简单的标示语言，它受到Internet和全球资讯网
热潮的推波助澜，很快地就成为在网上制作页面的标准语言格式。XML也是从SGML所衍生
出来的简化格式，和它的堂兄HTML一样，其目的是要让全球资讯网页面的资讯，有一个
标准而又切实可行的简单标示语言，只不过它们兄弟俩的服务目标和手法不尽相同，HT
ML是单一的固定格式，而XML却是可以扩充的灵活格式；HTML是用来形容展示页面的方法
，而XML却是用来形容页面的内容。
比起它的前身SGML来，XML要简单和灵活好用很多，它把很多在SGML底层非常复杂的
语法结构隐藏起来，但却使整个结构非常灵活又容易扩充，要开发应用程式软体来处理
XML格式文件非常容易，因此用XML可以使软体系统间流畅的互通。
另一个XML比SGML强的地方是，它和HTML一样地继承了所有Web的功能，这使得XML特
别适合在网上传输和处理。
开 发 程 式 软 体 容 易 又 有 效 率
回想当初HTML所以盛行得这麽快，除了它本身简单易学以外，要开发程式工具去制
作含有HTML标志的文件，或欲展示HTML格式的文件都非常简单，也是HTML风行的重要因
素之一。XML的语法和HTML非常近似，要开发程式工具去处理含有XML标志的文件，或欲
转换成HTML格式的文件都非常简单，在Internet上也很容易找到相关的程式和工具。
不仅是开发处理XML程式软体很容易，当这种能处理XML文件格式的系统开发完成之
後，用它来展示XML格式的文件，也远比用它来展示相同功能，但用HTML格式所作的文件
要有效率得多。这是因为HTML原来不是用来做复杂文件处理的工作，如果硬要用HTML来
做那些不适合的工作，就会因为HTML不能胜任而影响执行的效率。
电 脑 系 统 之 间 沟 通 的 桥 梁
XML会成为电子商业应用之基石的最大原因，在於它可以容许双向的沟通。Web页面
的作者们可以自已制订和设计应用XML的文件格式，而不必再使用固定的HTML格式，就能
有比HTML更丰富的语法，和更多功能的标准语言，更重要的是它可以容许电脑系统之间
双向的沟通。
美国的专家说，由於XML提供了一个四海通行的方法来传送自我描述的资料，因此它
是将文件和结构化资料一起移动和沟通的最佳机制。
例如在企业之中的供应商供应链的管理、客户服务的支援、资源整合和物流管理等
的程式应用，通常会牵涉到很多不同的处理过程和步骤，文件须要转呈和会知很多单位
，而且文件之中的资料内容和结构又不尽相同，这些工作HTML根本就不能胜任。而XML却
提供了各种完整的解决方案和功能，包括资料传递、资料采撷、资料结构与资料呈现等
等，让设计流程将大为简化。XML可以让电子商业拥有更多的资源选择，并且与消费者或
供应商与合作夥伴之间维持更密切、更有效率的关系。
用HTML的页面要和资料库打交道时，都要经过复杂的转换手续，而资料欲在资料库
和资料库之间交换时，更是要大费周章。反观XML，由於它是结构化的资料，所以要储存
或是要在资料库和资料库之间交换时，都非常容易。目前就有人预测XML今後将会是资料
在资料库和资料库之间交换时的标准方式，而且已有厂商正在展示产品，并展现於不同
厂商的工具与储存库间的互通能力。
XML 前 景 一 片 光 明
当新科技不断冲击网际网路的发展之际，XML技术即将对电子商务有重大影响，XML
的人机互动式架构提供了使用者与电脑之间的互动交流，利用其可延伸性及自我描述特
性，电子通讯文件可以在企业间的应用程式中自动传输、处理及储存，不同厂商的电子
商品型录可以在同一个使用者介面同时呈现，资讯的搜寻变得更为精确快速，不同系统
间可以流畅的互通，不同网站之间的资料得以动态共享，强化了使用者与系统之间的聚
合性。
XML所带来的是一个全新的视野，一种对於整个电子商务架构在观念上的颠覆，而中
小企业也可以轻易享受电子商务的好处。电子商务的威力已开始发飙，在可预期的未来
，全球经济也一定会受到这种网上电子商务的强力震撼，在电子商务的旋风既将来临之
际，XML是一个不可忽视的新技术。
责任编辑：刘昌悯

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.49.215]
返回上一页 回到目录 回到页首 下一篇


BizTalk新电子商务架构简介

 发信人: veb (君), 信区: XML
标 题: BizTalk新电子商务架构简介
发信站: BBS 水木清华站 (Thu Apr 13 23:45:41 2000) WWW-POST

BizTalk新电子商务架构简介
整理:郁桦

BizTalk新电子商务架构将以跨平台整合的方式，简化网站架设及电子商务咨询交换的困
难，企图成为电子商务新标准。微软目前已着手进行多个核心方案，包括具有资料转换功
能的Microsoft BizTalk Server，并计划将BizTalk架构整合至其既有的电子商务品台，
MSN网站，Office ，BackOffice系列产品及Windows作业系统未来的版本中。
微软这项全球性的新发展方向，是以电子商务终端系统为主要对象，BizTalk以新的XML和
业界标准为基础，来界定一套技术语言，让业界可以透过网际网路，与上下游协力厂商及
合作伙伴间，进行跨平台，跨作业系统的咨询交换，促使电子商务甚至应用程式间整合。

针对BizTalk架构，微软董事长Bill Gates的说明是，到目前为止，企业要上网做生意，
一直还是相当困难的事，原因是缺乏单一的技术语言来说明企业的商务流程，而BizTalk
架构即是来提供跨平台或技术的单一软件语言。 微软目前已着手五项具体核心方案，来
支援BizTalk架构。包括联合独立软体合作伙伴（ISV）和制定业界标准组织，将BizTalk
架构延伸至既有的Windows DNA解决方案中，如金融业，制造业，医疗业等；微软也将以
BizTalk架构支援XML标准。
在加强微软既有点商务方面，包括将Microsoft Site Server 3.0 Commerce Edition产品
改版更新为适合中大型业界的Microsoft Commerce Server，并为小型企业发展电子商务
提供Small Business Commerce Services，使小型企业能够迅速建制网站，而全新的
Microsoft BizTalk Server，将提供改善业届在共享资料时所需要的工具，预计今年夏天
可推出beta版。而作业系统，Office ，BackOffice等应用程式，也将全力支援BizTalk架
构。
而对微软来说，BizTalk架构不只整合产品，也包括服务。微软日前收购大型网路购物比
较服务公司CompareNet，纳入其入口网站MSN旗下，未来更将推出Microsoft Passport，
也协助消费者安全而简便地购物。当然，这些建构都与BizTalk架构相辅相成。

本站点所刊文章版权，均归本站点所有。署名作者拥有其著作权。
未经允许，不得随意转载,违者必究！！
www.xml.org.cn

--
※ 修改:·veb 於 Apr 15 16:02:01 修改本文·[FROM: 202.112.99.209]
※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.112.99.209]


两个电子商务在企业内部的应用案例

 发信人: mvm (米兰~~屋檐下的木帏幕), 信区: XML
标 题: 两个电子商务在企业内部的应用案例
发信站: BBS 水木清华站 (Sun Nov 12 20:45:44 2000)

这两个案例都是听cisco的一个人演讲时听到的。
一个是cisco内部报销发票，另一个是FedEx安排员工行程，待我细细说来。
...
先说cisco的。
话说米国有一公司，名曰“思科”。
思科者，势盖寰宇之网路装备作坊也（呵呵，这样说话很别扭！）...
...
据那个cisco的人说，cisco内部报销发票都用电子商务的方式运作，
报销方式如下：
1）员工在米国外出消费都用信用卡，
2）回到公司后登陆Intranet，把消费记录从银行查出来，把需要
报销的项目Drag&Drop到公司的报销页面上，然后提交，
3）上司查看员工提交的报销项目并处理之：允许或否决
4）财会部门处理被批准的报销项目，根据消费记录直接从银行往
员工的帐号里价钱。
整个报销过程完全无纸话，据那个cisco 的人说，在美国的cisco
公司每天能够处理8000份报销单。我听乐觉得非常受感动，觉得
这个例子很好的说明乐电子商务是如何提高公司内部的运营效率的。
...
第二个例子是FedEx公司（即联邦快递）。
那个Cisco的人举例说，FedEx公司自己原来就有几千架飞机负责运货，
但原先没有实施电子商务的时候，这些飞机的利用率相对较低，
有时常常只运货不运人。并不是FedEx的员工不愿意搭自己公司的货机，
而是原来的处理手段实在太落后，如果员工需要搭机，需要打电话会
总公司查询这几千家飞机的运行情况，然后作出选择——这样太烦，
所以很多员工宁愿做航空公司的飞机。但FedEx后来搞乐一套系统，
能把这几千架飞机的状况反映在Extranet上，员工可以用Web方式
来查看，这套系统还能自动的帮员工安排行程，选择时间，以期达到
对公司货机的最大限度的利用——这样以来，员工就可以不用坐航空公司
的飞机乐，给公司节省乐很大一笔费用。

这两个例子都是我听来的，但觉得很不错，
从中我们可以受一些启发。广义的来说，这两个应用都是电子商务的应用，
他们都为公司节省乐金钱和时间，
而且，这两个应用的实现并不能算很容易，
那个cisco的报销系统，要做到完全无纸化，牵涉到银行、财务、上司、
员工四方，还要和多个系统打叫道，还是很复杂的。而那个FedEx的飞机
系统，对员工行程的最优化安排也是比较有技术含量的。
要实现这两个应用，什么corba、java、xml什么乱七八糟的技术说不定
都有用武之地。

--

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.120.7.59]
上一篇 返回上一页 回到目录 回到页首


Re: 谁先说说xml怎么用吧

 发信人: veb (君), 信区: XML
标 题: Re: 谁先说说xml怎么用吧
发信站: BBS 水木清华站 (Mon Apr 10 23:06:25 2000)

【 在 sylvan (睡觉&跑腿) 的大作中提到: 】
∶ 那就举个用的例子先~~

我的理解，主要有两个用法
1.信息发布//类试html，但是威力更为强大，
如同一内容再网上，手机，电视和声音上的信息发布
2.信息（数据）交换
企业，系统，应用之间的数据交换。
这是XML被更为看好的一个方面。

上述两个方面，XML标准（一般称为推荐）好象更注重在第一个方面
但是更多的公司和组织更看重他在第二个方面的巨大前景。

言而总之，XML是一种数据表示的方式。

--

Powered by eXtensible Markup Language

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.112.99.209]
返回上一页 回到目录 回到页首 下一篇


XML的实际应用

 发信人: tapebomb (枫树), 信区: XML
标 题: XML的实际应用
发信站: BBS 水木清华站 (Wed Apr 26 20:17:07 2000)

一、数据自动处理和多应用处理
信息发布技术
Presentation of Publication
信息交互的中介技术
Message-oriented Middleware
二、作为metalanguage,它成为了一种规范定义标准

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: softlab.nju.edu]


Re: 请问XML在机械行业的应用。

 发信人: knowbot (黄毛), 信区: XML
标 题: Re: 请问XML在机械行业的应用。
发信站: BBS 水木清华站 (Wed Dec 13 12:11:21 2000) WWW-POST

【 在 start (小雪) 的大作中提到: 】
∶ XML应用这么广泛， 请问在机械行业有应用么？
∶ 相关标准有吗？ 怎么能查到？
∶
∶ 谢谢！ //bow

NIST组织中专门有涉及产品制造的XML部分的研究项目，也有有关航空的XML标准尝试工作
（如DTD或schema定义等）,但标准似乎还没有，但机械行业过去在文档描述上一直曾用
SGML，浙大有有关研究成果，而且STEP也是机械产品数据交换的一个标准。总的趋势在向
XML发展。

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.112.134.170]


Re: 请教:关于使用xml+java开发web应用!

 发信人: flier (小海 //爱喝可乐^_^), 信区: XML
标 题: Re: 请教:关于使用xml+java开发web应用!
发信站: BBS 水木清华站 (Thu Dec 21 00:57:26 2000)

【 在 knowbot (黄毛) 的大作中提到: 】
∶ 【 在 alou (lou) 的大作中提到: 】
∶
∶ XML到数据库可能会有两种方式：（1）把XML文档作为一个单一对象进行存储（2）利用
∶ XML Parser,parse XML文档，再存回DB。目前的数据库两种方式都支持。
∶
∶ 所谓数据库厂商对XML的支持，无非是提供各自的一套XML处理工具（如PARSER，XSLT处理
∶ 等），其实自己也可以尝试做一些工具，并不困难。
∶
∶ 最新的发展有哪些？希望大家一起讨论
∶
我的看法是如果要在传统的DBMS数据库里面存储、检索XML
单纯使用数据库提供的XML分析工具是不够的，因为那样只能
针对普遍性的数据进行分析，比如SQL SERVER 2K就必须按照
他定义的schema处理数据，这实际上只是提供了传统的以表
为基本结构的DBMS数据与XML形式（只是形式而已）数据的一种映射机制罢了
其数据本质上还是关系型的，跟XML数据的最普遍的树状组织形式不符合

而将XML文档作为一个BLOB整体存储，对大多数情况也是不适用的
因为这将增加访问时的资源消耗（分析XML）或者限制访问时灵活度
（只允许整个XML文档一起访问），这在某些情况下可以容忍，
但不是一个有效的解决办法

就我的看法，折中的处理模式在目前的条件下比较合适
首先是对XML文档结构进行分析，从DTD或者schema中提取
元信息，这一步我认为必须有人的参与，也就是说人在工具
的辅助下提取XML文档中有效信息，并加以分类、分级
然后这些元数据依照传统方式保存在不同字段里，
整个XML文档保存在单独字段里，而访问是通过对元信息
的检索，过滤等操作，快速定位，取得XML文档片段信息

因此问题的关键应该在于如何提取元信息，以及提供
有效的工具辅助人来对元信息进行分析，这应该是我们
思考的地方

而tamino内部之处理机制，我想不可能有什么“绝招”吧
虽然他在数据库一级提供了一些方便的支持，
但是他对XML文档的处理还不是只能和我们一样半自动处理
我没有实际用过tamino，不知哪位大侠用过，能否说说
他大概是如何处理的？提供一些思路？

另外OO型数据库哪位大侠比较熟悉，能否讲一下这方面
OO型数据库有什么优势和值得借鉴的地方？

至于其他的诸如支持xql查询，输出xslt过滤过的数据
等等都好办，就算是SQL SERVER2K推崇的直接通过HTTP
方式访问数据库，在技术上实现都不是很困难的事情
--
. 生命的意义在于 /\ ____\ /\_ \ /\_\ .
. 希望 \ \ \___/_\/\ \ \/_/__ __ _ _★ .
. 工作 \ \ ____\\ \ \ /\ \ /'__`\ /\`'_\ .
. 爱你的人 \ \ \___/ \ \ \___\ \ \/\ __//\ \ \/ .
. 和你爱的人 \ \___\ \ \_____\ \__\ \____\ \ \_\ .
. …… \/___/ \/_____/\/__/\/____/ \/_/ @126.com .

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.114.32.15]
发信人: flier (小海 //爱喝可乐^_^), 信区: XML
标 题: Re: 请教:关于使用xml+java开发web应用!
发信站: BBS 水木清华站 (Sat Dec 23 12:59:26 2000)

【 在 xslt (xmldbmaker) 的大作中提到: 】
∶ 关系型是可以表示包括树型结构等形式的。
从数据结构角度上讲，的确是可以的
理论上关系型数据模式可以保存大多数
其他的结构数据，但是在实际开发中，
这样模型之间的转换需要的代价往往
是无法接受的 :(
∶ ~~~~~~~这个是目前最困难的地方。
hehe,我倒是觉得这个反而好解决，
目前的XQL功能比较单一，语法较简单
就目前的XQL来说，只要有一棵DOM树
什么问题都好解决，其中的内部优化
可以采用诸如分段解析保存中间数据的
方式进行提速，也是可以接受的

而这个DOM树如何建立保存我觉得才是大问题
甚至有些情况下不能用DOM模式必须用SAX
因为处理大于100K的XML文档时，DOM的代价
将直线上升，MS XML里面的说法是
For example, a 100 kilobyte (KB) document can occupy up to 1 megabyte (MB)
of memory using the DOM; the same document requires significantly less memor
y using SAX.
实际上就我以前使用MS XML 的经验也的确如此，
一个稍微大型一点的XML文档DOM树轻易就可以超过10M :(
如果是单独的应用程序里面还好商量
如果是在服务器端根本无法承受这样大的负荷
（起码偶是无法接受的，有1G内存的大侠例外，呵呵）
在这种情况下，等待XML引擎完整地建立这个树
根本不可能，也不现实

我现在的一种解决思路是综合SAX和DOM两者的思路
通过初期对XML文档预处理时提取有效元数据
将大型的XML文档切割，分成同等地位的局部块
局部使用DOM方式，整体使用SAX，涉及到全局检索的时候
通过给元数据建立外部索引解决

不过这些还只是构想而已，正在实施中，
先提出来，希望能给和我有一样苦恼的朋友
一些思路，也希望大家对之进行讨论
通过讨论找到其不足，完善之 :)
--
. 生命的意义在于 /\ ____\ /\_ \ /\_\ .
. 希望 \ \ \___/_\/\ \ \/_/__ __ _ _★ .
. 工作 \ \ ____\\ \ \ /\ \ /'__`\ /\`'_\ .
. 爱你的人 \ \ \___/ \ \ \___\ \ \/\ __//\ \ \/ .
. 和你爱的人 \ \___\ \ \_____\ \__\ \____\ \ \_\ .
. …… \/___/ \/_____/\/__/\/____/ \/_/ @126.com .

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.114.32.12]
上一篇 返回上一页 回到目录 回到页首


技术交流(你问我答) (BM: inannan)

编号 | 类别 | 标题 | 编辑日期
1 | 文件 | XML-FAQ veb | 2000.07.24
2 | 文件 | WAP-FAQ veb | 2000.06.02
3 | 文件 | NOKIA7110---FAQ JoyKiller | 2000.04.27
4 | 目录 | XML文件很大会影响性能？ (BM: takeiteasy) | 2001.04.20
5 | 目录 | XML与CORBA (BM: takeiteasy) | 2001.04.20
6 | 目录 | 为什么要用XML建设网站？ (BM: taketieasy) | 2001.04.20
7 | 文件 | 谁能告诉我XLink中不协调连接和多方向连?inannan | 2001.05.25
8 | 文件 | xml需要编译吗？ inannan | 2001.05.25
9 | 文件 | DTD之间转换的问题 inannan | 2001.05.25
10 | 目录 | 谁先说说xml怎么用吧 (BM: inannan) | 2001.05.25
11 | 文件 | Re: 这四个文件是什么关系？ inannan | 2001.05.25
12 | 文件 | Re: 谁知道哪有关于XML Schema的文档？谢 inannan | 2001.05.25
13 | 目录 | 与Nullgate大侠探讨 (BM: inannan) | 2001.05.25
14 | 文件 | Re: XML必须用于生成XML和HTML输出吗？ inannan | 2001.05.25
15 | 文件 | Re: WML文件怎么编译呢? inannan | 2001.05.25
16 | 目录 | wml不能显示中文？ (BM: inannan) | 2001.05.25
17 | 文件 | Re: 问个弱问题吧 inannan | 2001.05.25
18 | 文件 | Re: WML的问题，这里问可以吧 inannan | 2001.05.25
19 | 文件 | Re: WML的设备无关性 inannan | 2001.05.25
20 | 目录 | unix下，有XML解释么？ (BM: inannan) | 2001.05.25
21 | 文件 | xml打印 inannan | 2001.05.25
22 | 文件 | Re: up.sdk 4.0 无法浏览本地文件，奇怪?inannan | 2001.05.25
23 | 目录 | 可以将xml转换成pdf格式的文件吗? (BM: inannan) | 2001.05.25
24 | 文件 | Re: 请高手指教 inannan | 2001.05.25
25 | 文件 | Win98下用PWS能搭建Wap服务吗,怎样设置? inannan | 2001.05.26
26 | 文件 | Re: XPath里面能够使用正则表达式吗？ inannan | 2001.05.26
27 | 文件 | Re: document ::= prolog element Misc inannan | 2001.05.26
28 | 文件 | Re: 请问从技术角度讲，有没有可能做到这 inannan | 2001.05.27
29 | 文件 | 关于xml作为数据交换的迷惑 inannan | 2001.05.27
30 | 文件 | Re: Schema中允许用外部xml作名域吗 inannan | 2001.05.28
31 | 文件 | Re: 有人研究SOAP么？ (转载) inannan | 2001.05.28
32 | 文件 | Re: 怎样实现XML的动态分页？ inannan | 2001.05.28
33 | 文件 | Re: 在VC中如何使用MSXML PARSER ?? inannan | 2001.05.28
34 | 文件 | Re: XSL中如何实现循环语句？ inannan | 2001.05.30
35 | 文件 | Re: 装了ms xml sdk怎么打开也，傻问题 inannan | 2001.05.30
36 | 文件 | Re: 请问在程序中如何将gb码转换成unicod inannan | 2001.05.30
37 | 文件 | xml schemas 里的eltOnly是什么意思？？ inannan | 2001.05.30
38 | 文件 | Re: 请问表单提交的数据如何生成xml文档 inannan | 2001.05.30
39 | 文件 | Re: 关于属性类型为ID时的问题 inannan | 2001.05.30
40 | 文件 | Re: 关于参数实体引用的问题？ inannan | 2001.05.30
41 | 文件 | Re: 外部实体引用激发的问题？ inannan | 2001.05.30
42 | 文件 | Re: 问：这一段代码正确吗？ inannan | 2001.05.30
43 | 文件 | Re: 在包括#PCDATA的元素声明中遇到的问?inannan | 2001.05.30
44 | 文件 | Re: 请问现在的Parser对Xlink和xpointer?inannan | 2001.05.30
45 | 文件 | Re: RPC是什么东东？ (转载) inannan | 2001.05.30
46 | 文件 | Re: 最新的MSDN里可有关于XML的帮助？ inannan | 2001.05.30
47 | 文件 | Re: 紧急求救：DELPHI是否能够访问XML文?inannan | 2001.05.30
返回上一页 回到上一级目录


水木清华精华区_No Title

 Q： 用什么工具可以打开XML文档？
A： XML是文本文件。可以打开TXT文件的工具都可以打开XML文档。
Q： 用什么浏览器可以观看网页形式的XML文档？
A： IE5及以上版本。Netscape还不清楚。
另外，有些XML并不是用来在浏览器中显示的,而是用于数据交换.
Q： 为什么我看见的XML是源码？
A： XML需要CSS/XSL配合，否则使用缺省样式打开，为树结构的源码。
Q： 为什么我看不了中文？
A： 第一句请修改为如下所示的代码：
<?xml version="1.0" encoding="gb2312" ... ?>
Q： 哪里有使用XML书写的主页？
A： 有一个使用XML写的主页，http://xml.zixia.net(by veb)
Q: xml对服务器有什么要求吗?
A: 有一个要求,需要能够提供http服务.其他没有了.
Q: css,xsl怎么写?
A: 见初学者指南或版主主页.
Q: 如何在XSL中动态生成超链?
A: <A><xsl:attribute name="href"><xsl:value-of select="主页地址"/>
</xsl:attribute><xsl:value-of select="说明"/></A>
Q: 如何得到某个XML的XSL文件源码?
A: 先右键显示XML源码,找xml-stylesheet即可发现XSL地址,将该地址输入即可.

Q： <?收集中?>

返回上一页 回到目录 回到页首 下一篇


水木清华精华区_No Title

 Q:什么是WAP?
A:WAP stands for the Wireless Application Protocol and is the standard to
enable mobile phones and other wireless devices to access information and
services, especially over the Internet .

Q:什么是WML?
A:WML stands for the Wireless Markup Language. This is the language
understood by the microbrowser in mobile devices. Though it looks
similar to HTML, WML is a XML implementation.

Q:WML和HTML有哪些区别？
A:Though WML looks similar to HTML, technically they are very different.
As it would seem, WML is not a subset of HTML for microbrowsers. Instead,
WML is a standard defined in XML (eXtensible Markup Language).

Q:我怎样才可以浏览到WML页面？
A:You need a WAP-enabled mobile phone, like the Nokia 7110 or the Ericsson R320
to access WML pages. Desktop emulators for these phones are also available.


水木清华精华区_No Title

The purpose of this FAQ is to give answers to developers' questions especial
ly to those questions concerning the Nokia 7110. This document is subject to
change without notice.
7110 related questions
Q1. What are the general browser features of the Nokia 7110?
All mandatory features of WAP 1.1 are implemented in the Nokia 7110 includin
g:
WML 1.1
WMLS 1.1
Images (wbmp)
Localization
Use number
HTTP Basic authentication
The 'Use number' feature is a Nokia method of selecting a phone number from
a rendered WML deck, which offers some of the functionality of the WTAI stil
l not included in the specification. Push and cookies are not included in th
e WAP 1.1 specification and hence not implemented in the Nokia 7110.
Q2. What is the cache size and cache management policy in the Nokia 7110?
Cache size
The total cache size in the Nokia 7110 is 40 KB including cache meta data. T
he number of entries depends on the size of each entry. The Max Cache Entry
Size, i.e. the largest data size that can be cached is 1536 bytes.
Default cache storing time
Data are kept in the cache according to the HTTP caching rules. In case no c
aching controls have been defined, the data are cached for 1 day.
The Control of cache storing
The cache storing in the client can be controlled using HTTP headers or by h
aving HTTP-EQUIV meta tags in the WML content.
If both of the previous cache controls have been defined the HTTP headers ha
ve a higher priority.
Please note: If a URL is longer than 255 bytes the entry is NOT cached.
Q3. What is the maximum WML deck size?
The maximum item size is 1397 bytes binary. This is the maximum size both fo
r a WML deck and for an image. A WML deck and images are downloaded separate
ly.
Q4. What are the supported tags in the Nokia 7110?
DO
A
ANCHOR
TITLE
SELECT
INPUT
BR
IMAGE
TABLE
P
HEAD
Q5. What are the unsupported tags in the Nokia 7110?
FIELDSET
B
U
I
BIG
SMALL
EM
STRONG
Q6. What are the rendering limitations in the Nokia 7110?
Emphasis tags are not supported.
Links are always on their own line.
Images are always on their own line.
There is no support for alignment:
- images are always centered,
- text is always left justified.
Wrapping modes are not supported. Text is always wrapped.
Images cannot be links.
Input fields are always on their line.
Table management support: All the table elements in the Nokia 7110 are displ
ayed in a column. A Table such as:
1 2 3
A B Img
Will be displayed in the Nokia 7110 as follows:
1
2
3
A
B
Img
Please note: Images are centered in a horizontal plane.
Q7. Is the POST Method supported in the Nokia 7110?
Yes, it is.
Q8. Is the HTTP authentication supported?
The Nokia 7110 supports the basic HTTP authentication. For client identifica
tion the HTTP basic authentication is the only standard mechanism that has b
een mentioned in the WAP 1.1 specification.
Q9. Can the password be viewed on the Nokia 7110 display?
No, it cannot. Only asterisks will be displayed on the Nokia 7110 screen.
Q10. Does the Nokia 7110 have Java Virtual Machine or a similar system that
would enable running Java applets?
No, it does not. These have not been included in the WAP 1.1 specification.
Q11. Is it possible to enter a destination URL through a terminal menu?
Yes, it is. A user can enter a URL straight to bookmarks using the "Add book
marks" function.
In the Nokia 7110 it is not possible to enter a destination URL directly as
in a WWW browser. In order to go to a specific URL the user needs to follow
a link or to define the specific URL as a bookmark or as a home page. In add
ition to that developers can implement an application (e.g. as a Java Servle
t using the Nokia WAP Server) that asks the user to type a URL to an input f
ield, then passes that URL as a argument to the servlet which then fetches t
he information from the specified URL.
Q12. How does the Bookmark function operate?
The user can save URLs as bookmarks from the home page or by adding them man
ually after which the saved bookmarks can be accessed directly without first
going to the home page. The maximum amount of bookmarks that can be stored
is 15.
Q13. What are the network parameters? Are they stored on the phone or on the
SIM card?
The network parameters are stored on the phone, not on the SIM card.
Common parameters for all bearers:
- Homepage: URL
- WAP session type: Continuous/Temporary connection
- Connection security: WTLS on/off
CSD bearer:
- Dial-up number: Access point phone number
- IP-address: IP-address for WAP Gateway
- Authentication type: Normal (PAP) / Secure (CHAP)
- Data call type: Analogue/ISDN
- Data call speed: Defines the baud rate used for connection Auto (only on a
nalogue)/9600/14400
- User name: PPP-username
- Password: PPP-password
SMS bearer:
- Server number: SMSC phone number
- Service number: SMSC application number (WAP Gateway to use)
Q14. Does the Nokia 7110 support WTLS? If it does, at what level?
Yes, it does. The Nokia 7110 supports class 2 Server Authentication.
Q15. Does the Nokia 7110 user need to set security on?
In OTA settings you can specify if the Nokia 7110 should connect using a sec
ure or insecure port. The end-user can however edit the selection.
Q16. How do I know that a connection with the Nokia 7110 is secure?
A Secure Icon is displayed on the phone user interface when the connection i
s secure.
Q17. Is a CA delivered with the Nokia 7110?
No, it is not but CA certificates can be downloaded from a relevant web site
. A CA certificate is one content type among others and it can be downloaded
easily.
Q18. Does the Nokia 7110 support step-up certificates?
The WAP Forum has not yet defined step-up certificates.
Q19. How does the handset set up a WTLS session? How is this initiated, i.e.
how does the handset make the decision that a WTLS session is required?
The browser settings indicate whether WTLS should be used or not. If securit
y is required from a service provider, the WAP gateway must deny any connect
ions on unsecured channels or at least deny requests for sensitive content v
ia unsecured channels.
Q20. Can I read my e-mails with the Nokia 7110?
The Nokia 7110 itself doesn't offer this functionality but it is possible to
create a service which will enable use of the mail system through WAP. Ther
e are already mail systems available that support WAP.
Q21. Does the Nokia 7110 allow one to input an '@' or "/" characters in the
input field?
Yes, it does. Pressing * will give you a list of special characters such as
"@", "/", "~", etc.
Q22. Can I assign tasks and labels to the buttons?
You can only assign the 'prev' task to the right-hand button. The label to i
t will be taken from the language settings. For example, in the case of Engl
ish 'Back' is displayed in the label. If there is no page in the history sta
ck no 'Back' button is displayed although it has been defined in the WML dec
k.
Q23. Can I create animations or scrolling text?
Yes, you can by using the timer event.
Q24. Can I offer precompiled WMLpages?
The WML page can be in a compiled form already in the origin server. It howe
ver needs to go through the WAP gateway because there the http request/respo
nses are converted into the WAP request/responses and reversed. The transfer
is more efficient and no time is needed for encoding in the WAP Gateway whe
n the pages are already compiled. A WAP Gateway may also cache the compiled
pages and thus reduce the encoding overhead. Note however that the share of
dynamic WML pages should be much higher in WAP than in WWW.
Q25. What is the maximum length for a username?
The maximum length is 32 characters.
Q26. What is the maximum length for a password?
The maximum length is 20 characters.
Q27. Where can I get the Nokia 7110?
Please contact your local authorized Nokia dealer or local Nokia Sales Offic
e. (You will find Nokia Business Group Addresses at www.nokia.com/inbrief/co
ntact/index.html. Note: the business group is Nokia Mobile Phones.)
Q28. Will there be Nokia 7100 series phones for other standards?
The Nokia 7110 is for GSM900/1800 networks. Nokia has also introduced the No
kia 7160 for TDMA networks and the Nokia 7190 for GSM1900 networks.
Miscellaneous
Q1. What are the WAP MIME types?
The most common WAP MIME types are listed below.
Content MIME Type Extension
WML Source text/vnd.wap.wml wml
Compiled WML application/vnd.wap.wmlc wmlc
WMLScript source text/vnd.wap.wmls wmls
Compiled WML Script application/vnd.wap.wmlscriptc wmlsc
Wireless bitmap image/vnd.wap.wbmp wbmp
To be able to offer WML services on your Web server, configure the Web serve
r to support the above MIME types.
Q2. How to cnnect to the Nokia WAP Server using the Nokia WAP Toolkit?
To connect to the Nokia WAP Server using the Nokia WAP Toolkit, configure th
e Nokia WAP Toolkit as follows:
Use the WAP Gateway
Use Connectionless mode port 9200 or Continuous mode port 9201
You can then:
Access the WAP Server's local files via the file servlet (The root directory
is wap_root under the installation directory). http://file/index.wml
Access the servlets in the WAP Server, e.g. a sample servlet "Hello World" h
ttp://helloworld/
Access some other WML pages located in a different Web server via the http-s
ervlet. http://WEBSERVER/yourfile.wml
Please read the Copyright License Terms.
BY INSTALLING THE SOFTWARE YOU AGREE TO THE COPYRIGHT LICENSE TERMS.


XML文件很大会影响性能？ (BM: takeiteasy)

编号 | 类别 | 标题 | 编辑日期
1 | 文件 | xml文件很大会影响性能吗？ takeiteasy | 2001.04.20
2 | 文件 | Re: xml文件很大会影响性能吗？ takeiteasy | 2001.04.20
3 | 文件 | Re: xml文件很大会影响性能吗？ takeiteasy | 2001.04.20
4 | 文件 | Re: xml文件很大会影响性能吗？ takeiteasy | 2001.04.20
5 | 文件 | Re: xml文件很大会影响性能吗？ takeiteasy | 2001.04.20
6 | 文件 | Re: xml文件很大会影响性能吗？ takeiteasy | 2001.04.20
7 | 文件 | Re: xml文件很大会影响性能吗？ takeiteasy | 2001.04.20
8 | 文件 | Re: xml文件很大会影响性能吗？ takeiteasy | 2001.04.20
9 | 文件 | Re: xml文件很大会影响性能吗？ takeiteasy | 2001.04.20
10 | 文件 | Re: xml文件很大会影响性能吗？ takeiteasy | 2001.04.20
11 | 文件 | Re: xml文件很大会影响性能吗？ takeiteasy | 2001.04.20
12 | 文件 | Re: xml文件很大会影响性能吗？ takeiteasy | 2001.04.20
13 | 文件 | Re: xml文件很大会影响性能吗？ takeiteasy | 2001.04.20
14 | 文件 | Re: xml文件很大会影响性能吗？ takeiteasy | 2001.04.20
15 | 文件 | Re: xml文件很大会影响性能吗？ takeiteasy | 2001.04.20
16 | 文件 | Re: xml文件很大会影响性能吗？ takeiteasy | 2001.04.20
17 | 文件 | Re: xml文件很大会影响性能吗？ takeiteasy | 2001.04.20
18 | 文件 | Re: xml文件很大会影响性能吗？ takeiteasy | 2001.04.20
19 | 文件 | Re: xml文件很大会影响性能吗？ takeiteasy | 2001.04.20
20 | 文件 | Re: xml文件很大会影响性能吗？ takeiteasy | 2001.04.20
21 | 文件 | Re: xml文件很大会影响性能吗？ takeiteasy | 2001.04.20
22 | 文件 | Re: xml文件很大会影响性能吗？ takeiteasy | 2001.04.20
23 | 文件 | Re: xml文件很大会影响性能吗？ takeiteasy | 2001.04.20
24 | 文件 | Re: xml文件很大会影响性能吗？ takeiteasy | 2001.04.20
25 | 文件 | Re: xml文件很大会影响性能吗？ takeiteasy | 2001.04.20
返回上一页 回到上一级目录


xml文件很大会影响性能吗？

 发信人: ddddd (老狼), 信区: XML
标 题: xml文件很大会影响性能吗？
发信站: BBS 水木清华站 (Sat May 27 11:42:06 2000)

假定做一个个人信息的信息系统，存放自己的一些私人资料，
譬如收支啦，购买的书籍啦等等。一般的做法是用access或
vfp等desktop database。

其实xml对数据的结构和关系支持的很好啊，我这些信息放入
一个xml文件里也未尝不可。但是这个文件有可能很大。
对性能的影响有多少啊。

另外，有象sql一样强大的xml查询语言吗？我能方便地查到
我需要的数据吗？我指复杂的查询：譬如：分组，join， union
等类似database中的高级功能。

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.114.7.125]
返回上一页 回到目录 回到页首 下一篇


Re: xml文件很大会影响性能吗？

 发信人: veb (君), 信区: XML
标 题: Re: xml文件很大会影响性能吗？
发信站: BBS 水木清华站 (Sat May 27 12:07:57 2000)

【 在 ddddd (老狼) 的大作中提到: 】
∶ 假定做一个个人信息的信息系统，存放自己的一些私人资料，
∶ 譬如收支啦，购买的书籍啦等等。一般的做法是用access或
∶ vfp等desktop database。
∶ 其实xml对数据的结构和关系支持的很好啊，我这些信息放入
∶ 一个xml文件里也未尝不可。但是这个文件有可能很大。
∶ 对性能的影响有多少啊。
∶ 另外，有象sql一样强大的xml查询语言吗？我能方便地查到
∶ 我需要的数据吗？我指复杂的查询：譬如：分组，join， union
∶ 等类似database中的高级功能。

现阶段这恐怕不是一个明智的选择。
--

Powered by eXtensible Markup Language

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.112.99.209]


Re: xml文件很大会影响性能吗？

 发信人: lewin (lee), 信区: XML
标 题: Re: xml文件很大会影响性能吗？
发信站: BBS 水木清华站 (Sat May 27 12:42:14 2000)

XSL的Pattern对查询有很好
的支持。几乎可以实现sql的全部功能

。
注意：XML文件存储的是高度结构化的树状信息，对
数据的表达能力要强于RDBMS中的table.
【 在 veb (君) 的大作中提到: 】
∶ XML-QL
∶ XQL
∶ 都没有成为标准， 而且其中有很多技术性的东西有待解决。
∶ 由于在你的应用中，以查询为主，这是数据库的强项，现在还是xml的弱项。

--
.....夜那麽长,足够 我把每一盏灯都 点 亮..........

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.204.7.234]


Re: xml文件很大会影响性能吗？

 发信人: lewin (lee), 信区: XML
标 题: Re: xml文件很大会影响性能吗？
发信站: BBS 水木清华站 (Sat May 27 17:45:42 2000)

难道目前的主流数据库不支持XML吗？
另外，树型结构不是一个简单的结构，一些复杂
的关系，均可通过树型结构来表达。我以为
XML文件比Table强很多，这会带来处理上相应
的很多方便之处。
我并未强调好处，XML相对于HTML类似于Newton相对于
Galileo,是一次革命，但是不是彻底的革命，真正的
Einstein还没有出现。这源于web计算的先天缺陷。
我以为，XML的技术本质在于提高了客户端的计算比例。

【 在 veb (君) 的大作中提到: 】
∶ ~~~~~~~~~~~~~~~~~~~~~真的？那些
∶ “笨蛋”数据库厂商还研究什么，还不赶紧炒作：我的数据库支持XML!
∶ 现实社会的信息和数据库中的数据都不是简单的树形结构。
∶ 既要看到XML的优势，又要看到其不足，
∶ 对待XML,java,辩证的看法太重要了。
∶ 盲目强调好处或坏处，都是很危险的。
∶ 希望能给大家一点启发。
∶ 也欢迎指正 : )

--
.....夜那麽长,足够 我把每一盏灯都 点 亮..........

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.204.7.234]


Re: xml文件很大会影响性能吗？

 发信人: scaner (当我想起你的时候), 信区: XML
标 题: Re: xml文件很大会影响性能吗？
发信站: BBS 水木清华站 (Sat May 27 18:09:30 2000)

呵呵，我觉得如果要提供查询功能，那么实现起来
怎么也不比直接用odbc简单了。开销方面就更不用比较了。
Office2000就是高度集成的产品，真要是哪坏了
谁都没有办法，用的人不照样是很多。
反正我的个人数据，都是放在PostgreSQL里面的，也没有
觉得麻烦到哪去呀。
【 在 ddddd (老狼) 的大作中提到: 】
∶ 这位老兄高见。不过这样处理可以节省开销吗。对于大系统
∶ 我当然倾向你的方案。
∶ 对于这种小应用，多层结构复杂了些。就把数据放在xml文件里面，
∶ 有个xml parser就可以了。万一parser坏了，直接用notepad也行。
∶ 如果是access或vfp，odbc坏掉一般人就没辙了。

--
I forget, I forgive

※ 来源:·BBS 水木清华站 smth.org·[FROM: 210.76.97.249]


Re: xml文件很大会影响性能吗？

 发信人: is (别理我，烦着喃), 信区: XML
标 题: Re: xml文件很大会影响性能吗？
发信站: BBS 水木清华站 (Sun May 28 17:58:13 2000)

我觉得parse xml是相对复杂的过程，
而生成xml所花费的代价更本不值一提。

【 在 lanyjie (收复台湾) 的大作中提到: 】
∶ 作为开放的标准
∶ xml可能成为应用软件之间进行交流的esperanto[世界语]
∶ 甚至也是容易为人所理解和阅读的[哇! 真的是世界语偶]
∶ 也许目前有着历史背景和应用优化的关系数据库在效率方面占据优势
∶ 但是随着XML应用的扩大, 传统的数据库在和其它应用通讯时
∶ 需要一个翻译成XML的过程, 着必然使它的优势大打折扣

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 210.76.97.249]


Re: xml文件很大会影响性能吗？

 发信人: veb (君), 信区: XML
标 题: Re: xml文件很大会影响性能吗？
发信站: BBS 水木清华站 (Sun May 28 18:06:16 2000)

【 在 is (别理我，烦着喃) 的大作中提到: 】
∶ 标 题: Re: xml文件很大会影响性能吗？
∶ 发信站: BBS 水木清华站 (Sun May 28 17:58:13 2000)
∶
∶ 我觉得parse xml是相对复杂的过程，
∶ 而生成xml所花费的代价更本不值一提。

//nod 相差一个数量级(？)
∶
∶ 【 在 lanyjie (收复台湾) 的大作中提到: 】
∶ : 作为开放的标准
∶ : xml可能成为应用软件之间进行交流的esperanto[世界语]
∶ : 甚至也是容易为人所理解和阅读的[哇! 真的是世界语偶]
∶ : 也许目前有着历史背景和应用优化的关系数据库在效率方面占据优势
∶ : 但是随着XML应用的扩大, 传统的数据库在和其它应用通讯时
∶ : 需要一个翻译成XML的过程, 着必然使它的优势大打折扣
∶
∶
∶ --
∶ ※ 来源:·BBS 水木清华站 smth.org·[FROM: 210.76.97.249]

--

Powered by eXtensible Markup Language

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.112.99.209]


Re: xml文件很大会影响性能吗？

 发信人: lanyjie (收复台湾), 信区: XML
标 题: Re: xml文件很大会影响性能吗？
发信站: BBS 水木清华站 (Sun May 28 23:29:19 2000)

【 在 is (别理我，烦着喃) 的大作中提到: 】
∶ 我觉得parse xml是相对复杂的过程，
不敢苟同你的观点
实际上，XML的设计使得PARSE成为易于实现而且有效率
至少认为这个速度比从外部媒介上读取XML文档要快的多
何况目前XML还是起步阶段，肯定还有很大的效率优化空间

∶ 而生成xml所花费的代价更本不值一提。
可以把代价的含义讲明白一点吗？
如果前叙事实成立，从反映时间的角度讲
二者之间的差距应该不会很大。

--
※ 修改:·lanyjie 於 May 28 23:35:43 修改本文·[FROM: 162.105.40.80]
※ 修改:·lanyjie 於 May 29 08:46:40 修改本文·[FROM: 162.105.40.80]
※ 来源:·BBS 水木清华站 smth.org·[FROM: 162.105.40.80]


Re: xml文件很大会影响性能吗？

 发信人: lanyjie (收复台湾), 信区: XML
标 题: Re: xml文件很大会影响性能吗？
发信站: BBS 水木清华站 (Sun May 28 23:32:03 2000)

【 在 veb (君) 的大作中提到: 】
∶ schema 是使得xml挑战dbms的第一步。
∶ 最简单的例子是类型,value="123"到底是
∶ char* ch = "123"
∶ 还是int i = 123
可是我不明白您举的这个例子的目的
因为同样的问题在设计传统数据库时不也存在吗？

∶ 否则排序等出问题。（如123 and 1 and 1111排序）

∶ 另外，（题外话）数据库中的索引太重要了，
其实索引也可以用XML来实现的啊
关键是标准还没有建立

∶ XML查询效率没有他怎么办？

--
※ 修改:·lanyjie 於 May 29 08:52:40 修改本文·[FROM: 162.105.40.80]
※ 来源:·BBS 水木清华站 smth.org·[FROM: 162.105.40.80]


Re: xml文件很大会影响性能吗？

 发信人: scaner (当我想起你的时候), 信区: XML
标 题: Re: xml文件很大会影响性能吗？
发信站: BBS 水木清华站 (Mon May 29 08:50:40 2000)

应该是拿生成XML和解析XML的工作量对比呀。
很简单的例子，只要一个简单的流，就可以方便的
构造XML,问题要解析起来，怎么也没有那么方便把。
真如你所说的那么简单，为什么解析XML的库一个
比一个大难？

【 在 lanyjie (收复台湾) 的大作中提到: 】
∶ 不敢苟同你的观点
∶ 实际上，XML的设计使得PARSE成为易于实现而且有效率
∶ 至少认为这个速度比从外部媒介上读取XML文档要快的多
∶ 何况目前XML还是起步阶段，肯定还有很大的效率优化空间
∶ 可以把代价的含义讲明白一点吗？
∶ 如果前叙事实成立，从反映时间的角度讲
∶ 二者之间的差距应该不会很大。

--
I forget, I forgive

※ 来源:·BBS 水木清华站 smth.org·[FROM: 210.76.97.249]


Re: xml文件很大会影响性能吗？

 发信人: lanyjie (收复台湾), 信区: XML
标 题: Re: xml文件很大会影响性能吗？
发信站: BBS 水木清华站 (Mon May 29 09:01:51 2000)

【 在 scaner (当我想起你的时候) 的大作中提到: 】
∶ 应该是拿生成XML和解析XML的工作量对比呀。
∶ 很简单的例子，只要一个简单的流，就可以方便的
首先这个方便来自你或你的同伴对XML的了解，否则你不
会轻松构造出规范的XML

∶ 构造XML,问题要解析起来，怎么也没有那么方便把。
解析都是由解吸器完成的，又不是你做的 //grin
如果象VEB讲的那样，XML对数据库的挑战旧有SCHEME
那里将提供简单的高级概念和操作，你不需要管解析是怎么回事

∶ 真如你所说的那么简单，为什么解析XML的库一个
∶ 比一个大难？

--
※ 修改:·lanyjie 於 May 29 09:07:00 修改本文·[FROM: 162.105.40.80]
※ 修改:·lanyjie 於 May 29 09:57:57 修改本文·[FROM: 162.105.40.80]
※ 来源:·BBS 水木清华站 smth.org·[FROM: 162.105.40.80]


Re: xml文件很大会影响性能吗？

 发信人: veb (君), 信区: XML
标 题: Re: xml文件很大会影响性能吗？
发信站: BBS 水木清华站 (Mon May 29 12:07:59 2000)

【 在 lanyjie (收复台湾) 的大作中提到: 】
∶ 不敢苟同你的观点
∶ 实际上，XML的设计使得PARSE成为易于实现而且有效率
∶ 至少认为这个速度比从外部媒介上读取XML文档要快的多
真的？那Parse的时候不需要先读进来？？？
依愚见，Parse XML(well formed),support namespace,
especilly check valide(DTD),还是具有相当复杂度的。
这是从技术上说，从时间上说这个代价也很大，
XML标准讲XML使得Parse很容易，（相对C++,java parse,况且编译技术确实非常成熟）
但是并没有说过能快到比读文本(我这里没有算读入时间）还快，
我想怎么也得5:1吧 ^_^

∶ 何况目前XML还是起步阶段，肯定还有很大的效率优化空间
∶ 可以把代价的含义讲明白一点吗？
∶ 如果前叙事实成立，从反映时间的角度讲
∶ 二者之间的差距应该不会很大。

--

Powered by eXtensible Markup Language

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.112.99.209]


Re: xml文件很大会影响性能吗？

 发信人: veb (君), 信区: XML
标 题: Re: xml文件很大会影响性能吗？
发信站: BBS 水木清华站 (Mon May 29 12:11:58 2000)

【 在 lanyjie (收复台湾) 的大作中提到: 】
∶ 可是我不明白您举的这个例子的目的
∶ 因为同样的问题在设计传统数据库时不也存在吗？
classical db have soulve this problem in the very beginning.
when you develop db,you shoule define the data type.
Have XML soulve this problem.(before Schema)????

∶ 其实索引也可以用XML来实现的啊
Now is "xiaolv",not "shixian". ^_^
∶ 关键是标准还没有建立

--

Powered by eXtensible Markup Language

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.112.99.209]


Re: xml文件很大会影响性能吗？

 发信人: lanyjie (收复台湾), 信区: XML
标 题: Re: xml文件很大会影响性能吗？
发信站: BBS 水木清华站 (Mon May 29 12:51:13 2000)

【 在 veb (君) 的大作中提到: 】
∶ 真的？那Parse的时候不需要先读进来？？？
∶ 依愚见，Parse XML(well formed),support namespace,
老兄太谦虚了，呵呵，我就惭愧了

∶ especilly check valide(DTD),还是具有相当复杂度的。
∶ 这是从技术上说，从时间上说这个代价也很大，
∶ XML标准讲XML使得Parse很容易，（相对C++,java parse,况且编译技术确实非常成熟）
∶ 但是并没有说过能快到比读文本(我这里没有算读入时间）还快，
∶ 我想怎么也得5:1吧 ^_^

恩，你的意思我明白的，
可是我也没有做过比较测试，没有数据
所以先按照你的5：1来估算

现在假如从DISK读数据的时间消耗是10（相对前面的时间耗费而言）
现代操作系统可以让读数据和处理并行
所以如果在上面的假定下面让PARSER全力进行，也只能够消耗50%CPU
而从反映时间看，就和从DISK读数据的时间相当了

当然我们没有考虑缓冲的，这是上面讨论的致命弱点:(
但是我们下面将看到，着并不是XML的指明弱点：
如果用DOM而不是SAX，一次解析即得到TREE在内存，可以复用。关键是内存！
--
※ 修改:·lanyjie 於 May 29 15:12:27 修改本文·[FROM: 162.105.40.80]
※ 来源:·BBS 水木清华站 smth.org·[FROM: 162.105.40.80]


Re: xml文件很大会影响性能吗？

 发信人: lanyjie (收复台湾), 信区: XML
标 题: Re: xml文件很大会影响性能吗？
发信站: BBS 水木清华站 (Mon May 29 12:54:33 2000)

【 在 veb (君) 的大作中提到: 】
∶ classical db have soulve this problem in the very beginning.
∶ when you develop db,you shoule define the data type.
∶ Have XML soulve this problem.(before Schema)????
Frankly, no.
But that can't stop us from discussing the possibility
*_^
∶ Now is "xiaolv",not "shixian". ^_^
I mean if we shixian Index with xml,
we can have xiaolv
∶)

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 162.105.40.80]


Re: xml文件很大会影响性能吗？

 发信人: veb (君), 信区: XML
标 题: Re: xml文件很大会影响性能吗？
发信站: BBS 水木清华站 (Mon May 29 18:02:51 2000)

【 在 lanyjie (收复台湾) 的大作中提到: 】
∶ 老兄太谦虚了，呵呵，我就惭愧了
∶ 恩，你的意思我明白的，
∶ 可是我也没有做过比较测试，没有数据
∶ 所以先按照你的5：1来估算
∶ 现在假如从DISK读数据的时间消耗是10（相对前面的时间耗费而言）
∶ 现代操作系统可以让读数据和处理并行
∶ 所以如果在上面的假定下面让PARSER全力进行，也只能够消耗50%CPU
∶ 而从反映时间看，就和从DISK读数据的时间相当了

不能同意，看来lanyjie当年操作系统的分数一定不低。
但是现在LAN的网络速度一般>1M/s(这次没有写错吧），
你能在1 second解析1M 的XML?
如果考虑从软盘度曲，你的分析基本还是可以接受的。

∶ 当然我们没有考虑缓冲的，这是上面讨论的致命弱点:(
∶ 但是我们下面将看到，着并不是XML的指明弱点：
∶ 如果用DOM而不是SAX，一次解析即得到TREE在内存，可以复用。关键是内存！

--

Powered by eXtensible Markup Language

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.112.99.209]


Re: xml文件很大会影响性能吗？

 发信人: lanyjie (收复台湾), 信区: XML
标 题: Re: xml文件很大会影响性能吗？
发信站: BBS 水木清华站 (Mon May 29 18:53:45 2000)

【 在 veb (君) 的大作中提到: 】
∶ 不能同意，看来lanyjie当年操作系统的分数一定不低。
faint!一点纵所周至的常识啊，西西, 斑竹过奖了，
实在是受之有愧啊

∶ 但是现在LAN的网络速度一般>1M/s(这次没有写错吧），
agree
＞10M or even more
with isdn, you can expect 100M/s or more
∶ 你能在1 second解析1M 的XML?
∶ 如果考虑从软盘度曲，你的分析基本还是可以接受的。
if we can apply the analysis to hard disk, it is already enough
coz net is not a way to store, right?

--
※ 修改:·lanyjie 於 May 29 20:01:28 修改本文·[FROM: 162.105.40.80]
※ 修改:·lanyjie 於 May 29 20:05:52 修改本文·[FROM: 162.105.40.80]
※ 来源:·BBS 水木清华站 smth.org·[FROM: 162.105.40.80]


Re: xml文件很大会影响性能吗？

 发信人: veb (君), 信区: XML
标 题: Re: xml文件很大会影响性能吗？
发信站: BBS 水木清华站 (Mon May 29 22:06:41 2000)

【 在 lanyjie (收复台湾) 的大作中提到: 】
∶ faint!一点纵所周至的常识啊，西西, 斑竹过奖了，
∶ 实在是受之有愧啊
∶ agree
∶ with isdn, you can expect 100M/s or more
∶ if we can apply the analysis to hard disk, it is already enough

一般IDE硬盘如昆腾十代5400转
fireball 1ct08，速度是257Mbits/s
fireball lct10，速度是294Mbits/s
本人刚刚买的7200转的速度应该更为可怕吧！嚯嚯

∶ coz net is not a way to store, right?

--

Powered by eXtensible Markup Language

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.112.99.209]


Re: xml文件很大会影响性能吗？

 发信人: lanyjie (收复台湾), 信区: XML
标 题: Re: xml文件很大会影响性能吗？
发信站: BBS 水木清华站 (Mon May 29 23:58:23 2000)

转速和实际的读盘速度不是一个概念吧

【 在 veb (君) 的大作中提到: 】
∶ 一般IDE硬盘如昆腾十代5400转
∶ fireball 1ct08，速度是257Mbits/s
∶ fireball lct10，速度是294Mbits/s
∶ 本人刚刚买的7200转的速度应该更为可怕吧！嚯嚯

其实这个问题仅仅从效率讨论是不完整的
而应该注意我们牺牲一些效率后获得了什么

随着硬件的速度飞速提升
软件界也相应的有一个牺牲效率换取其他
更加宝贵的资源的发展趋势

的确，我们关心的不仅仅是效率

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 162.105.40.80]


Re: xml文件很大会影响性能吗？

 发信人: veb (君), 信区: XML
标 题: Re: xml文件很大会影响性能吗？
发信站: BBS 水木清华站 (Tue May 30 11:01:43 2000)

【 在 lanyjie (收复台湾) 的大作中提到: 】
∶ 转速和实际的读盘速度不是一个概念吧

已经考虑过了。呵呵。否则要加倍了 ^_^

∶ 其实这个问题仅仅从效率讨论是不完整的
∶ 而应该注意我们牺牲一些效率后获得了什么
∶ 随着硬件的速度飞速提升
∶ 软件界也相应的有一个牺牲效率换取其他
∶ 更加宝贵的资源的发展趋势
∶ 的确，我们关心的不仅仅是效率
//nod
软件的速度跟硬件比，本来就没有意义。
而Parer:read 在20:1 - 5:1都是完全可以接受的。

--

Powered by eXtensible Markup Language

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.112.99.209]


Re: xml文件很大会影响性能吗？

 发信人: jakielee (jakielee), 信区: XML
标 题: Re: xml文件很大会影响性能吗？
发信站: BBS 水木清华站 (Thu Jun 1 09:10:32 2000)

看你怎么处理xml文档
用tree drive还是event drive

【 在 ddddd (老狼) 的大作中提到: 】
∶ 假定做一个个人信息的信息系统，存放自己的一些私人资料，
∶ 譬如收支啦，购买的书籍啦等等。一般的做法是用access或
∶ vfp等desktop database。
∶ 其实xml对数据的结构和关系支持的很好啊，我这些信息放入
∶ 一个xml文件里也未尝不可。但是这个文件有可能很大。
∶ 对性能的影响有多少啊。
∶ 另外，有象sql一样强大的xml查询语言吗？我能方便地查到
∶ 我需要的数据吗？我指复杂的查询：譬如：分组，join， union
∶ 等类似database中的高级功能。

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 210.33.16.192]


Re: xml文件很大会影响性能吗？

 发信人: sirwolf (sir), 信区: XML
标 题: Re: xml文件很大会影响性能吗？
发信站: BBS 水木清华站 (Sun Oct 29 16:16:55 2000)

XML文件的内容每一条信息的长度并不相等，
并且没有任何索引，虽然如果XML文件很大的
话， 虽然其表达能力很强，但是就查找等数据
操纵能力显然不如RDBMS强大， 当然如果
你有足够的内存能够存储几十甚至上百
或更多的记录，那么你的速度或许会有优势
但是文件读入内存的时间恐怕会使这种
优势大打折扣。。
我想XML的最大的优势还是使网络的智能化，
主要是动态的需要经常刷新的信息。
数据库方面的工作最好还是由RDBMS来做
比较好，二者应该结合，无非排斥，
不能为新而新

【 在 lewin (lee) 的大作中提到: 】
∶ XSL的Pattern对查询有很好
∶ 的支持。几乎可以实现sql的全部功能
∶ 。
∶ 注意：XML文件存储的是高度结构化的树状信息，对
∶ 数据的表达能力要强于RDBMS中的table.

--

※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.86.214]


Re: xml文件很大会影响性能吗？

 发信人: xiaozhenqing (萧萧), 信区: XML
标 题: Re: xml文件很大会影响性能吗？
发信站: BBS 水木清华站 (Sun Oct 29 20:01:39 2000)

是不是应该让他二者结合呢？取其长处呢？？
XML和数据库的结合也许会有一个美妙的前景 。但是怎么来做呢？？？
我不知道现在的数据库对XML的支持是个什么概念？
他支持到什么程度？？？有那位知道望告之？谢谢 。

【 在 sirwolf (sir) 的大作中提到: 】
∶ XML文件的内容每一条信息的长度并不相等，
∶ 并且没有任何索引，虽然如果XML文件很大的
∶ 话， 虽然其表达能力很强，但是就查找等数据
∶ 操纵能力显然不如RDBMS强大， 当然如果
∶ 你有足够的内存能够存储几十甚至上百
∶ 或更多的记录，那么你的速度或许会有优势
∶ 但是文件读入内存的时间恐怕会使这种
∶ 优势大打折扣。。
∶ 我想XML的最大的优势还是使网络的智能化，
∶ 主要是动态的需要经常刷新的信息。
∶ 数据库方面的工作最好还是由RDBMS来做
∶ ...................

--

※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.82.119]


Re: xml文件很大会影响性能吗？

 发信人: xiaozhenqing (萧萧), 信区: XML
标 题: Re: xml文件很大会影响性能吗？
发信站: BBS 水木清华站 (Sun Oct 29 20:03:22 2000)

不知道 ORACLE 8。0。5 是否支持XML 。听说ORACLE8I 支持XML 。
谁知道？？
【 在 sirwolf (sir) 的大作中提到: 】
∶ XML文件的内容每一条信息的长度并不相等，
∶ 并且没有任何索引，虽然如果XML文件很大的
∶ 话， 虽然其表达能力很强，但是就查找等数据
∶ 操纵能力显然不如RDBMS强大， 当然如果
∶ 你有足够的内存能够存储几十甚至上百
∶ 或更多的记录，那么你的速度或许会有优势
∶ 但是文件读入内存的时间恐怕会使这种
∶ 优势大打折扣。。
∶ 我想XML的最大的优势还是使网络的智能化，
∶ 主要是动态的需要经常刷新的信息。
∶ 数据库方面的工作最好还是由RDBMS来做
∶ ...................

--

※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.82.119]


Re: xml文件很大会影响性能吗？

 发信人: Jobs (温少), 信区: XML
标 题: Re: xml文件很大会影响性能吗？
发信站: BBS 水木清华站 (Sun Oct 29 22:56:31 2000)

MS SQL Server 2000全面支持XML，能通过URL直接访问数据库，
我当时看了就呆了，觉得神奇得不得了。你看看MS SQL 2000的Books Online
就可以了……

【 在 xiaozhenqing (萧萧) 的大作中提到: 】
∶ 不知道 ORACLE 8。0。5 是否支持XML 。听说ORACLE8I 支持XML 。
∶ 谁知道？？

--

※ 来源:·BBS 水木清华站 smth.org·[FROM: 210.39.3.50]
上一篇 返回上一页 回到目录 回到页首


XML与CORBA (BM: takeiteasy)

编号 | 类别 | 标题 | 编辑日期
1 | 文件 | XMl与CORBA takeiteasy | 2001.04.20
2 | 文件 | Re: XMl与CORBA takeiteasy | 2001.04.20
3 | 文件 | Re: XMl与CORBA takeiteasy | 2001.04.20
4 | 文件 | Re: XMl与CORBA takeiteasy | 2001.04.20
5 | 文件 | Re: XMl与CORBA takeiteasy | 2001.04.20
返回上一页 回到上一级目录


XMl与CORBA

 发信人: knowbot (黄毛), 信区: XML
标 题: XMl与CORBA
发信站: BBS 水木清华站 (Wed Nov 1 09:28:11 2000) WWW-POST

CORBA是作为互操作的一个标准体系结构，可能更强调对远程方法的调用；
XML则是数据交换和信息共享的一个标准，是关于数据的标准；
两者应该是一种互补的关系，尽管SOAP+XML在Internet上可能有比CORBA+XML更好的特点
，但大量基于CORABA的应用的存在，SOAP未必占多大便宜（国外尤其如此）。况且对传统
应用CORBA的优势是显尔易见的。
EJB对CORBA的冲击可能会更大一些。

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.112.134.170]
返回上一页 回到目录 回到页首 下一篇


Re: XMl与CORBA

 发信人: holly (有些已经离去, 有些永远不会来), 信区: XML
标 题: Re: XMl与CORBA
发信站: BBS 水木清华站 (Wed Nov 1 09:53:09 2000)

【 在 knowbot (黄毛) 的大作中提到: 】
∶ CORBA是作为互操作的一个标准体系结构，可能更强调对远程方法的调用；
∶ XML则是数据交换和信息共享的一个标准，是关于数据的标准；
∶ 两者应该是一种互补的关系，尽管SOAP+XML在Internet上可能有比CORBA+XML更好的特点
∶ ，但大量基于CORABA的应用的存在，SOAP未必占多大便宜（国外尤其如此）。况且对传统
∶ 应用CORBA的优势是显尔易见的。
∶ EJB对CORBA的冲击可能会更大一些。
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
这个是互补的而不是对立的...使用 RMI-IIOP + Java2IDL 就是一个完整的
集成了...呵呵

--
那悲歌总会在梦中清醒, 诉说一点哀伤过的往事
那看似漫不在乎转过身的, 是风干泪眼后萧瑟的影子

九月的事早已埋藏在风雪之中
为何我听到你胸口的热血汹涌

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.120.13.24]


Re: XMl与CORBA

 发信人: zixia (Do you zixia!?), 信区: XML
标 题: Re: XMl与CORBA
发信站: BBS 水木清华站 (Sun Nov 5 23:35:20 2000)

nod.

不过区别在于,人家只是在需要用 Java 的地方用 Java,

而我们? hehe...

知道吗?清华的破烂垃圾选科系统要用 EJB 来实现 ...

哪里需要 EJB 的特性了?

性能本来就烂...

【 在 knowbot (黄毛) 的大作中提到: 】
∶ 【 在 zixia (Do you zixia!?) 的大作中提到: 】
∶
∶ Internet是趋势，XML就是在这个背景下成长起来的。不过我的感觉是java不能低估。很
∶ 多传统应用的Internet版左上角都有一杯可口的咖啡。

--
正确的说法是什么呢？ NT=No Thanks, WWW=World Wide Wait
Do you zixia!?[=S [=Mhttp://zixia.net (Powered by GNU/Linux)[=S
    Linux，RedHat发行 或 Linux，TLC发行。如果嫌长也可以说RedHat或TLC。
    说RedHat、TLC就别提Linux，要提Linux的名字就得说成Linux，RedHat发行。
    在这方面Debian和Slackware作的好，在政治上正确！
Linux和自由软件是观念上的革命，它不是商业活动！[题未明: http://www.zixia.net[m[32m][m[u[23;0H

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.112.45.49]


Re: XMl与CORBA

 发信人: shinewu (MusiCat), 信区: XML
标 题: Re: XMl与CORBA
发信站: BBS 水木清华站 (Mon Nov 6 14:45:29 2000)

【 在 Nullgate (空门·民工·VIV LA GNU·失业中) 的大作中提到: 】
∶ 拜托，EJB啊，浪费资源，需要用这么重的东西么，
∶ 还不如用点servlet
只有用EJB才能方便的实现分布式逻辑亚
也许学校将来会把选可系统扩展到多台服务器呢?
servlet只是web portal
最关键的还是应用逻辑
而应用逻辑中现在的瓶颈似乎是在数据库操作上而不是数据处理的程序
有谁对j2ee的数据库操作部分有心得可以贡献出来大家学习一下嘛
BTW:
现在对数据库了解得太少
真希望有高人多指点一下
--
Music makes me lost.

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.205.0.215]


Re: XMl与CORBA

 发信人: zixia (Do you zixia!?), 信区: XML
标 题: Re: XMl与CORBA
发信站: BBS 水木清华站 (Tue Nov 7 01:37:16 2000)

EJB 有个特性可以 Cache 数据库的操作结果呢，

却是确可以大幅度提高性能...

可是。。。

选课系统，完全实时啊...

知道吗？我们的选课系(Oracle的pL/SQL中）统判断一个 Bool 变量的时候是酱紫的：

if var='是' then ... end if;

//laugh 用了ejb不知道又成了什么样子呢.....

【 在 shinewu (MusiCat) 的大作中提到: 】
∶ 只有用EJB才能方便的实现分布式逻辑亚
∶ 也许学校将来会把选可系统扩展到多台服务器呢?
∶ servlet只是web portal
∶ 最关键的还是应用逻辑
∶ 而应用逻辑中现在的瓶颈似乎是在数据库操作上而不是数据处理的程序
∶ 有谁对j2ee的数据库操作部分有心得可以贡献出来大家学习一下嘛
∶ BTW:
∶ 现在对数据库了解得太少
∶ 真希望有高人多指点一下

--
正确的说法是什么呢？ NT=No Thanks, WWW=World Wide Wait
Do you zixia!?[=S [=Mhttp://zixia.net (Powered by GNU/Linux)[=S
    Linux，RedHat发行 或 Linux，TLC发行。如果嫌长也可以说RedHat或TLC。
    说RedHat、TLC就别提Linux，要提Linux的名字就得说成Linux，RedHat发行。
    在这方面Debian和Slackware作的好，在政治上正确！
Linux和自由软件是观念上的革命，它不是商业活动！[题未明: http://www.zixia.net[m[32m][m[u[23;0H

※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.167.50]
上一篇 返回上一页 回到目录 回到页首


为什么要用XML建设网站？ (BM: taketieasy)

编号 | 类别 | 标题 | 编辑日期
1 | 文件 | 为什么要用XML建设网站（空） takeiteasy | 2001.04.20
2 | 文件 | Re: 为什么要用XML建设网站（空） takeiteasy | 2001.04.20
3 | 文件 | Re: 为什么要用XML建设网站（空） takeiteasy | 2001.04.20
4 | 文件 | Re: 为什么要用XML建设网站（空） takeiteasy | 2001.04.20
5 | 文件 | Re: 为什么要用XML建设网站（空） takeiteasy | 2001.04.20
6 | 文件 | Re: 为什么要用XML建设网站（空） takeiteasy | 2001.04.20
7 | 文件 | Re: 为什么要用XML建设网站（空） takeiteasy | 2001.04.20
8 | 文件 | Re: 为什么要用XML建设网站（空） takeiteasy | 2001.04.20
9 | 文件 | Re: 为什么要用XML建设网站（空） takeiteasy | 2001.04.20
10 | 文件 | Re: 为什么要用XML建设网站（空） takeiteasy | 2001.04.20
11 | 文件 | Re: 为什么要用XML建设网站（空） takeiteasy | 2001.04.20
12 | 文件 | Re: 为什么要用XML建设网站（空） takeiteasy | 2001.04.20
13 | 文件 | Re: 为什么要用XML建设网站（空） takeiteasy | 2001.04.20
14 | 文件 | Re: 为什么要用XML建设网站（空） takeiteasy | 2001.04.20
15 | 文件 | Re: 为什么要用XML建设网站（空） takeiteasy | 2001.04.20
16 | 文件 | Re: 为什么要用XML建设网站（空） takeiteasy | 2001.04.20
17 | 文件 | Re: 为什么要用XML建设网站（空） takeiteasy | 2001.04.20
18 | 文件 | Re: 为什么要用XML建设网站（空） takeiteasy | 2001.04.20
19 | 文件 | Re: 为什么要用XML建设网站（空） takeiteasy | 2001.04.20
20 | 文件 | Re: 为什么要用XML建设网站（空） takeiteasy | 2001.04.20
21 | 文件 | Re: 为什么要用XML建设网站（空） takeiteasy | 2001.04.20
22 | 文件 | Re: 为什么要用XML建设网站（空） takeiteasy | 2001.04.20
23 | 文件 | Re: 为什么要用XML建设网站（空） takeiteasy | 2001.04.20
24 | 文件 | Re: 为什么要用XML建设网站（空） takeiteasy | 2001.04.20
返回上一页 回到上一级目录


为什么要用XML建设网站（空）

 发信人: veb (君), 信区: XML
标 题: 为什么要用XML建设网站（空）
发信站: BBS 水木清华站 (Sat Jun 3 10:50:02 2000)

--

Powered by eXtensible Markup Language

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.112.99.209]
返回上一页 回到目录 回到页首 下一篇


Re: 为什么要用XML建设网站（空）

 发信人: lanyjie (收复台湾), 信区: XML
标 题: Re: 为什么要用XML建设网站（空）
发信站: BBS 水木清华站 (Sat Jun 3 17:52:31 2000)

数据的客户端处理
在不同的媒介上显示
支持不同的应用

需要网络客户端协调多种不同类型数据库的应用；

力图将比例可观的处理工作从服务器端分布于客户端的应用；

要求客户端将同一数据以不同的形式展现给不同的使用者的应用；

--
※ 修改:·veb 於 Jun 3 22:42:55 修改本文·[FROM: 202.112.99.209]
※ 来源:·BBS 水木清华站 smth.org·[FROM: 162.105.40.80]


Re: 为什么要用XML建设网站（空）

 发信人: veb (君), 信区: XML
标 题: Re: 为什么要用XML建设网站（空）
发信站: BBS 水木清华站 (Sat Jun 3 22:44:55 2000)

【 在 lanyjie (收复台湾) 的大作中提到: 】
∶ 数据的客户端处理
∶ 在不同的媒介上显示
∶ 支持不同的应用
∶ 需要网络客户端协调多种不同类型数据库的应用；
∶ 力图将比例可观的处理工作从服务器端分布于客户端的应用；
∶ 要求客户端将同一数据以不同的形式展现给不同的使用者的应用；

那DHTML怎么样？不能作到吗？
（先自己跟自己抬抬杠）

--

Powered by eXtensible Markup Language

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.112.99.209]


Re: 为什么要用XML建设网站（空）

 发信人: lanyjie (收复台湾), 信区: XML
标 题: Re: 为什么要用XML建设网站（空）
发信站: BBS 水木清华站 (Sun Jun 4 10:34:27 2000)

呵呵，这几天都在看那个APPLIED XML
就照自己的粗浅理解说一点看法吧：
DHTML作为HTML的增强（？）
应该和XML是互补关系，他们的目的和功能是很不同的
所以不会是竞争关系或替代关系

【 在 veb (君) 的大作中提到: 】
∶ 那DHTML怎么样？不能作到吗？
理论上讲，作到也是可能的，因为我们知道从信息的角度讲
传统的网页把内容结构形式混同，那么还是可能把内容信息
从里面吸取出来的，但是这种吸取过程无法一般化，也不那么容易作到
SIMPLE，UNIFORM是XML的好处的一个方面。
而这个分离又使同样的内容可以和任意多的形式来展现（XSL）
html是其一种展现形式，互补大概包括这层意思把
dhtml 提供了互动手段，也有DIV之类的来达到动态改变显示内容的目的
但是归跟到底，XML之前它还是走HTML的思路。
随着XML出现，可以通过数据岛来和DHTML交互（也许还有别的形式吧？）
∶ （先自己跟自己抬抬杠）

XML简单（我认为从学习难度讲也许比DHML还容易）却灵活，又不失一致性
实在是一个平凡的奇迹！它就是我们在结构化信息交互方面的首选。
在某些条件限制下，它几乎就是唯一的选择。呵呵，仅供商榷

--
※ 修改:·lanyjie 於 Jun 4 10:35:09 修改本文·[FROM: 162.105.40.80]
※ 修改:·lanyjie 於 Jun 4 10:38:49 修改本文·[FROM: 162.105.40.80]
※ 修改:·lanyjie 於 Jun 4 10:43:36 修改本文·[FROM: 162.105.40.80]
※ 来源:·BBS 水木清华站 smth.org·[FROM: 162.105.40.80]


Re: 为什么要用XML建设网站（空）

 发信人: lanyjie (收复台湾), 信区: XML
标 题: Re: 为什么要用XML建设网站（空）
发信站: BBS 水木清华站 (Sun Jun 4 10:42:38 2000)

抬杠就是学问
跟自己抬杠尤其难得

呵呵
：）

VEB 君这是治学有方啊！

【 在 veb (君) 的大作中提到: 】
∶ 那DHTML怎么样？不能作到吗？
∶ （先自己跟自己抬抬杠）

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 162.105.40.80]


Re: 为什么要用XML建设网站（空）

 发信人: veb (君), 信区: XML
标 题: Re: 为什么要用XML建设网站（空）
发信站: BBS 水木清华站 (Sun Jun 4 12:37:14 2000)

【 在 lanyjie (收复台湾) 的大作中提到: 】
∶ 抬杠就是学问
∶ 跟自己抬杠尤其难得
∶ 呵呵
∶ ：）
∶ VEB 君这是治学有方啊！

那里那里，你的第一篇回文多次强调客户端
我认为DHTML就是在这上面动了脑筋。

--

Powered by eXtensible Markup Language

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.112.99.209]


Re: 为什么要用XML建设网站（空）

 发信人: veb (君), 信区: XML
标 题: Re: 为什么要用XML建设网站（空）
发信站: BBS 水木清华站 (Sun Jun 4 12:40:50 2000)

【 在 veb (君) 的大作中提到: 】

语义表达是XML的一个很大的特点和优势。
网站建设有非常需要，而html，dhtml,asp（越说越远）都不能解决这个问题。

--

Powered by eXtensible Markup Language

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.112.99.209]


Re: 为什么要用XML建设网站（空）

 发信人: lanyjie (收复台湾), 信区: XML
标 题: Re: 为什么要用XML建设网站（空）
发信站: BBS 水木清华站 (Sun Jun 4 14:17:46 2000)

呵呵，是我误会了你的题目意思了
我看到说做网站
主要想到的是客户段
关于服务器这边，想听听大家的高见
呵呵

【 在 veb (君) 的大作中提到: 】
∶ 那里那里，你的第一篇回文多次强调客户端
∶ 我认为DHTML就是在这上面动了脑筋。

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 162.105.40.80]


Re: 为什么要用XML建设网站（空）

 发信人: flier (小海 //爱喝可乐^_^), 信区: XML
标 题: Re: 为什么要用XML建设网站（空）
发信站: BBS 水木清华站 (Sun Jun 4 14:24:24 2000)

【 在 veb (君) 的大作中提到: 】
我觉得在目前的情况下，XML对一个网站最大的用处
在于作为一种数据载体以及作为一种有效的数据交换媒介
前面有篇文章里面介绍的WDDX非常有意思，应该是一个发展方向
虽然现在xml发展这么快，但是对项目实际有较大帮助的
往往是一些比较“古老”的技术 :)
--
. 生命的意义在于 /\ ____\ /\_ \ /\_\ .
. 工作、 \ \ \___/_\/\ \ \/_/__ __ _ _★ .
. 希望、 \ \ ____\\ \ \ /\ \ /'__`\ /\`'_\ .
. 爱你的人、 \ \ \___/ \ \ \___\ \ \/\ __//\ \ \/ .
. 和你爱的人 \ \___\ \ \_____\ \__\ \____\ \ \_\ .
. …… \/___/ \/_____/\/__/\/____/ \/_/ @126.com .

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.114.32.13]


Re: 为什么要用XML建设网站（空）

 发信人: veb (君), 信区: XML
标 题: Re: 为什么要用XML建设网站（空）
发信站: BBS 水木清华站 (Sun Jun 4 14:25:06 2000)

【 在 lanyjie (收复台湾) 的大作中提到: 】
∶ 呵呵，是我误会了你的题目意思了
∶ 我看到说做网站
∶ 主要想到的是客户段
∶ 关于服务器这边，想听听大家的高见
∶ 呵呵

是挺容易误会的。
更进一步的误解是认为用XML编网页。(完成现在HTML干的)
呵呵。

--

Powered by eXtensible Markup Language

※ 修改:·veb 於 Jun 4 14:29:48 修改本文·[FROM: 202.112.99.209]
※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.112.99.209]


Re: 为什么要用XML建设网站（空）

 发信人: veb (君), 信区: XML
标 题: Re: 为什么要用XML建设网站（空）
发信站: BBS 水木清华站 (Sun Jun 4 14:28:51 2000)

【 在 flier (小海 //爱喝可乐^_^) 的大作中提到: 】
∶ 我觉得在目前的情况下，XML对一个网站最大的用处
∶ 在于作为一种数据载体以及作为一种有效的数据交换媒介
∶ 前面有篇文章里面介绍的WDDX非常有意思，应该是一个发展方向
∶ 虽然现在xml发展这么快，但是对项目实际有较大帮助的
∶ 往往是一些比较“古老”的技术 :)

//nod
也可以把XML看成一种古老的技术。可以吗？
从ASCII到二进制又到了ASCII.
但是从桌面到了网络。
--

Powered by eXtensible Markup Language

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.112.99.209]


Re: 为什么要用XML建设网站（空）

 发信人: veb (君), 信区: XML
标 题: Re: 为什么要用XML建设网站（空）
发信站: BBS 水木清华站 (Sun Jun 4 14:34:16 2000)

【 在 flier (小海 //爱喝可乐^_^) 的大作中提到: 】
∶ 我觉得在目前的情况下，XML对一个网站最大的用处
∶ 在于作为一种数据载体以及作为一种有效的数据交换媒介
~~~~~~~~~ ~~~~~~~~
That's great!
∶ 前面有篇文章里面介绍的WDDX非常有意思，应该是一个发展方向
∶ 虽然现在xml发展这么快，但是对项目实际有较大帮助的
∶ 往往是一些比较“古老”的技术 :)

--

Powered by eXtensible Markup Language

※ 修改:·veb 於 Jun 4 14:34:47 修改本文·[FROM: 202.112.99.209]
※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.112.99.209]


Re: 为什么要用XML建设网站（空）

 发信人: veb (君), 信区: XML
标 题: Re: 为什么要用XML建设网站（空）
发信站: BBS 水木清华站 (Sun Jun 4 15:01:53 2000)

【 在 flier (小海 //爱喝可乐^_^) 的大作中提到: 】
∶ 我觉得在目前的情况下，XML对一个网站最大的用处
∶ 在于作为一种数据载体以及作为一种有效的数据交换媒介
∶ 前面有篇文章里面介绍的WDDX非常有意思，应该是一个发展方向
∶ 虽然现在xml发展这么快，但是对项目实际有较大帮助的
∶ 往往是一些比较“古老”的技术 :)

不知道着片文章的是什么时候写的。
如果小海兄对之有兴趣，可以看看比之更加有前途的SOAP,
(该标准由MS提出，已被W3C接受，有可能成为和XML一样的推荐（标准）

BTW:XSLT等许多重要标准也是以MS为主提出，
//不要因为对MS的偏见把XML也否定了。呵呵
--

Powered by eXtensible Markup Language

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.112.99.209]


Re: 为什么要用XML建设网站（空）

 发信人: duo (多多), 信区: XML
标 题: Re: 为什么要用XML建设网站（空）
发信站: BBS 水木清华站 (Sun Jun 4 15:25:06 2000)

【 在 veb (君) 的大作中提到: 】
∶ 不知道着片文章的是什么时候写的。
∶ 如果小海兄对之有兴趣，可以看看比之更加有前途的SOAP,
∶ (该标准由MS提出，已被W3C接受，有可能成为和XML一样的推荐（标准）
∶ BTW:XSLT等许多重要标准也是以MS为主提出，
∶ //不要因为对MS的偏见把XML也否定了。呵呵
nod
我想说说服务器端，使用php3的话，XML设计的是比较灵活的，XSL我也是用
PHP3写的，可以检测一下客户端浏览器的类型，在给出特定的xsl显示格式。
看起来好象蛮强大的，不知道用php3+xml搞大一点的东东会怎么样。

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.119.9.40]


Re: 为什么要用XML建设网站（空）

 发信人: flier (小海 //爱喝可乐^_^), 信区: XML
标 题: Re: 为什么要用XML建设网站（空）
发信站: BBS 水木清华站 (Sun Jun 4 15:39:27 2000)

【 在 veb (君) 的大作中提到: 】
∶ 不知道着片文章的是什么时候写的。
的确有点年代了，呵呵
∶ 如果小海兄对之有兴趣，可以看看比之更加有前途的SOAP,
∶ (该标准由MS提出，已被W3C接受，有可能成为和XML一样的推荐（标准）
这样啊，如果成了标准那偶也没有办法了，只有跟进了 :)

刚刚看了一下soap，发现好像和wddx很多观点是重合的
不过提出的是MS，就不一样了，呵呵
∶ BTW:XSLT等许多重要标准也是以MS为主提出，
∶ //不要因为对MS的偏见把XML也否定了。呵呵
呵呵，受教了

不过我个人还是很喜欢MS的 :)

平台无关性，语言无关性的数据交换手段是大势所趋
无论是wddx还是soap都是时代的产物，
就像你所说，转回来又到ascii模式了，
其实想一下某些新技术还不都是这样的
历史的重演啊，Let's go，转行去学历史啊，呵呵
--
. 生命的意义在于 /\ ____\ /\_ \ /\_\ .
. 工作、 \ \ \___/_\/\ \ \/_/__ __ _ _★ .
. 希望、 \ \ ____\\ \ \ /\ \ /'__`\ /\`'_\ .
. 爱你的人、 \ \ \___/ \ \ \___\ \ \/\ __//\ \ \/ .
. 和你爱的人 \ \___\ \ \_____\ \__\ \____\ \ \_\ .
. …… \/___/ \/_____/\/__/\/____/ \/_/ @126.com .

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.114.39.245]


Re: 为什么要用XML建设网站（空）

 发信人: flier (小海 //爱喝可乐^_^), 信区: XML
标 题: Re: 为什么要用XML建设网站（空）
发信站: BBS 水木清华站 (Sun Jun 4 15:43:58 2000)

【 在 duo (多多) 的大作中提到: 】
∶ nod
∶ 我想说说服务器端，使用php3的话，XML设计的是比较灵活的，XSL我也是用
∶ PHP3写的，可以检测一下客户端浏览器的类型，在给出特定的xsl显示格式。
∶ 看起来好象蛮强大的，不知道用php3+xml搞大一点的东东会怎么样。
效率成问题的说:(
虽然有zend优化，毕竟还是解释性脚本语言

而且PHP目前对OOP的支持实在有限，
而写一些大型应用OOP是必须的:(

因此偶才对语言无关性的数据交换感兴趣的说 :)
如果能在php中实现分布式计算支持就更爽了
--
. 生命的意义在于 /\ ____\ /\_ \ /\_\ .
. 工作、 \ \ \___/_\/\ \ \/_/__ __ _ _★ .
. 希望、 \ \ ____\\ \ \ /\ \ /'__`\ /\`'_\ .
. 爱你的人、 \ \ \___/ \ \ \___\ \ \/\ __//\ \ \/ .
. 和你爱的人 \ \___\ \ \_____\ \__\ \____\ \ \_\ .
. …… \/___/ \/_____/\/__/\/____/ \/_/ @126.com .

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.114.39.245]


Re: 为什么要用XML建设网站（空）

 发信人: duo (多多), 信区: XML
标 题: Re: 为什么要用XML建设网站（空）
发信站: BBS 水木清华站 (Sun Jun 4 15:55:44 2000)

∶效率成问题的说:(
∶然有zend优化，毕竟还是解释性脚本语言
∶而且PHP目前对OOP的支持实在有限，
∶而写一些大型应用OOP是必须的:(
呵呵，如果PHP3不方便的话，可以调用其他的啊，perl，c++
∶因此偶才对语言无关性的数据交换感兴趣的说 :)

如果不能赚钱的话，不知道可有数据给交换的啊 :)

∶如果能在php中实现分布式计算支持就更爽了
呵呵，

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.119.9.40]


Re: 为什么要用XML建设网站（空）

 发信人: veb (君), 信区: XML
标 题: Re: 为什么要用XML建设网站（空）
发信站: BBS 水木清华站 (Sun Jun 4 15:59:19 2000)

【 在 flier (小海 //爱喝可乐^_^) 的大作中提到: 】
∶ 的确有点年代了，呵呵
∶ 这样啊，如果成了标准那偶也没有办法了，只有跟进了 :)
∶ 刚刚看了一下soap，发现好像和wddx很多观点是重合的
∶ 不过提出的是MS，就不一样了，呵呵
∶ 呵呵，受教了
∶ 不过我个人还是很喜欢MS的 :)
//... 微软天天见
∶ 平台无关性，语言无关性的数据交换手段是大势所趋
∶ 无论是wddx还是soap都是时代的产物，
∶ 就像你所说，转回来又到ascii模式了，
∶ 其实想一下某些新技术还不都是这样的

//nod
∶ 历史的重演啊，Let's go，转行去学历史啊，呵呵

读史可以什么来着？（可以聪明？）

Powered by eXtensible Markup Language
※ 修改:·veb 於 Jun 4 16:00:31 修改本文·[FROM: 202.112.99.209]
※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.112.99.209]


Re: 为什么要用XML建设网站（空）

 发信人: flier (小海 //爱喝可乐^_^), 信区: XML
标 题: Re: 为什么要用XML建设网站（空）
发信站: BBS 水木清华站 (Sun Jun 4 16:33:04 2000)

【 在 duo (多多) 的大作中提到: 】
∶ 呵呵，如果PHP3不方便的话，可以调用其他的啊，perl，c++
∶ 如果不能赚钱的话，不知道可有数据给交换的啊 :)
∶ 呵呵，
说到分布式计算，顺便问一下，如果要让PHP提供分布式计算支持
在哪个层次上比较合适？是做成一个独立的模块加载？还是干脆
对语言进行增强（这样的代价好像很大的说）？
在功能上应该向哪些方向努力？

btw:偶刚刚放了一些MS的东东在FTP上，ftp://ftp.lib.pku.edu.cn/incoming/xmlsdk :)
--
. 生命的意义在于 /\ ____\ /\_ \ /\_\ .
. 工作、 \ \ \___/_\/\ \ \/_/__ __ _ _★ .
. 希望、 \ \ ____\\ \ \ /\ \ /'__`\ /\`'_\ .
. 爱你的人、 \ \ \___/ \ \ \___\ \ \/\ __//\ \ \/ .
. 和你爱的人 \ \___\ \ \_____\ \__\ \____\ \ \_\ .
. …… \/___/ \/_____/\/__/\/____/ \/_/ @126.com .

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.114.39.245]


Re: 为什么要用XML建设网站（空）

 发信人: lanyjie (收复台湾), 信区: XML
标 题: Re: 为什么要用XML建设网站（空）
发信站: BBS 水木清华站 (Sun Jun 4 17:06:09 2000)

【 在 veb (君) 的大作中提到: 】
∶ 不知道着片文章的是什么时候写的。
∶ 如果小海兄对之有兴趣，可以看看比之更加有前途的SOAP,
∶ (该标准由MS提出，已被W3C接受，有可能成为和XML一样的推荐（标准）
∶ BTW:XSLT等许多重要标准也是以MS为主提出，
∶ //不要因为对MS的偏见把XML也否定了。呵呵

XML牵头人到底是谁啊？SUN，IBM都支持的说

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 162.105.40.80]


Re: 为什么要用XML建设网站（空）

 发信人: flier (小海 //爱喝可乐^_^), 信区: XML
标 题: Re: 为什么要用XML建设网站（空）
发信站: BBS 水木清华站 (Mon Jun 5 01:31:00 2000)

【 在 veb (君) 的大作中提到: 】
∶ 不知道着片文章的是什么时候写的。
∶ 如果小海兄对之有兴趣，可以看看比之更加有前途的SOAP,
∶ (该标准由MS提出，已被W3C接受，有可能成为和XML一样的推荐（标准）
∶ BTW:XSLT等许多重要标准也是以MS为主提出，
∶ //不要因为对MS的偏见把XML也否定了。呵呵
刚刚把soap大概看了一下，发现soap对于wddx来说
的确更加强大，也的确是发展方向
不过我觉得在目前wddx还是有其利用价值的

首先，soap需要在服务器级提供支持才能完全发挥优势
不然与WDDX相比并没有很大优势
（是这样吧，但愿我没有理解错误 :)，他对现有http进行了
有益的改造，加入了一些诸如MethodName,MessageType的东东
这虽然增强了其功能，也使他无法马上得到所有服务器的良好支持
而wddx是完全基于xml 1.0，在大多数情况下都可以得到很好的支持

其次，soap的强大也导致其复杂性，考虑东东多了就无法保证其简捷
而wddx则是非常非常简单，呵呵，dtd中核心定义就50-60行
稍微懂一点dtd就可以看懂，符合KISS法则 :)

另外，虽然wddx没有提供对象的支持，但是他可以使用结构、
数据集(Dataset)、binary，然后稍微用类包装一下也可以凑合用
何况数据交换中大量出现的一般是简单的数据类型

最后，偶只找到了wddx的sdk和详细说明，对如何使用soap还一窍不通
呵呵，所以只好在这里给wddx说好话，以后万一soap一统天下
再转过去不迟，呵呵

废话一篇，希望对大家有帮助 :)

btw:soap好像和http是bind在一起的，而wddx是以xml方式使用的
并不一定要用http的说，比如可以用文件方法传递 ：）
不知soap是否有这方面的解决办法？没仔细看的说……
--
. 生命的意义在于 /\ ____\ /\_ \ /\_\ .
. 工作、 \ \ \___/_\/\ \ \/_/__ __ _ _★ .
. 希望、 \ \ ____\\ \ \ /\ \ /'__`\ /\`'_\ .
. 爱你的人、 \ \ \___/ \ \ \___\ \ \/\ __//\ \ \/ .
. 和你爱的人 \ \___\ \ \_____\ \__\ \____\ \ \_\ .
. …… \/___/ \/_____/\/__/\/____/ \/_/ @126.com .

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.114.32.15]


Re: 为什么要用XML建设网站（空）

 发信人: lanyjie (收复台湾), 信区: XML
标 题: Re: 为什么要用XML建设网站（空）
发信站: BBS 水木清华站 (Mon Jun 5 12:26:10 2000)

谁吧肥皂的文档
铁上来好吗?
thx.

【 在 flier (小海 //爱喝可乐^_^) 的大作中提到: 】
∶ 刚刚把soap大概看了一下，发现soap对于wddx来说
∶ 的确更加强大，也的确是发展方向
∶ 不过我觉得在目前wddx还是有其利用价值的
∶ 首先，soap需要在服务器级提供支持才能完全发挥优势
∶ 不然与WDDX相比并没有很大优势
∶ （是这样吧，但愿我没有理解错误 :)，他对现有http进行了
∶ 有益的改造，加入了一些诸如MethodName,MessageType的东东
∶ 这虽然增强了其功能，也使他无法马上得到所有服务器的良好支持
∶ 而wddx是完全基于xml 1.0，在大多数情况下都可以得到很好的支持
∶ 其次，soap的强大也导致其复杂性，考虑东东多了就无法保证其简捷
∶ 而wddx则是非常非常简单，呵呵，dtd中核心定义就50-60行
∶ 稍微懂一点dtd就可以看懂，符合KISS法则 :)
∶ 另外，虽然wddx没有提供对象的支持，但是他可以使用结构、
∶ 数据集(Dataset)、binary，然后稍微用类包装一下也可以凑合用
∶ 何况数据交换中大量出现的一般是简单的数据类型
∶ 最后，偶只找到了wddx的sdk和详细说明，对如何使用soap还一窍不通
∶ 呵呵，所以只好在这里给wddx说好话，以后万一soap一统天下
∶ 再转过去不迟，呵呵
∶ 废话一篇，希望对大家有帮助 :)
∶ btw:soap好像和http是bind在一起的，而wddx是以xml方式使用的
∶ 并不一定要用http的说，比如可以用文件方法传递 ：）
∶ 不知soap是否有这方面的解决办法？没仔细看的说……

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 162.105.40.80]


Re: 为什么要用XML建设网站（空）

 发信人: veb (君), 信区: XML
标 题: Re: 为什么要用XML建设网站（空）
发信站: BBS 水木清华站 (Mon Jun 5 12:46:10 2000)

【 在 lanyjie (收复台湾) 的大作中提到: 】
∶ 谁吧肥皂的文档
∶ 铁上来好吗?
∶ thx.

匆匆的贴在rdb上了
//见XML半进站URL

--

Powered by eXtensible Markup Language

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.112.99.209]


Re: 为什么要用XML建设网站（空）

 发信人: duo (多多), 信区: XML
标 题: Re: 为什么要用XML建设网站（空）
发信站: BBS 水木清华站 (Tue Jun 6 21:45:42 2000)

可惜自己没有这方面的需求，所以没搞过。
【 在 flier (小海 //爱喝可乐^_^) 的大作中提到: 】
∶ 说到分布式计算，顺便问一下，如果要让PHP提供分布式计算支持
∶ 在哪个层次上比较合适？是做成一个独立的模块加载？还是干脆
∶ 对语言进行增强（这样的代价好像很大的说）？
∶ 在功能上应该向哪些方向努力？
∶ btw:偶刚刚放了一些MS的东东在FTP上，ftp://ftp.lib.pku.edu.cn/incoming/xmlsdk :)

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.119.6.172]
上一篇 返回上一页 回到目录 回到页首


谁能告诉我XLink中不协调连接和多方向连接是怎么回事

 发信人: yangxuu (据说江西出美女), 信区: XML
标 题: 谁能告诉我XLink中不协调连接和多方向连接是怎么回事
发信站: BBS 水木清华站 (Fri Apr 7 10:15:58 2000)

书上说，通过不是某个连接所指向的资源所描述的连接，称为
不协调连接；将几个文档在一个连接里结合到一起，而且可以在任意
资源之间来回移动，称为多方向连接。是不是说，如果多连接的描述
是在一个没有URL的文档里（这样该文档就不是某个连接所指向的资源了）
那么就是不协调连接；而多方向连接里，本身描述连接的文档有一个URL,
也可被别的文档连接。是不是怎么回事，请高手指点，另外，尽量少用
术语，我是初学的，很土的说。再次感谢！

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: keg.cs.tsinghua]
发信人: marc (Parser), 信区: XML
标 题: Re: 谁能告诉我XLink中不协调连接和多方向连接是怎么?nbsp;
发信站: BBS 水木清华站 (Fri Apr 7 14:22:05 2000)

我不知道你说的协调英文是那个词，在最新的XLINK的草案中我
没看出那个是你说的这个东西。
XLINK和URL关系不大，XPOINT是用来描述资源的位置的。
【 在 yangxuu (据说江西出美女) 的大作中提到: 】
∶ 书上说，通过不是某个连接所指向的资源所描述的连接，称为
∶ 不协调连接；将几个文档在一个连接里结合到一起，而且可以在任意
∶ 资源之间来回移动，称为多方向连接。是不是说，如果多连接的描述
∶ 是在一个没有URL的文档里（这样该文档就不是某个连接所指向的资源了）
∶ 那么就是不协调连接；而多方向连接里，本身描述连接的文档有一个URL,
∶ 也可被别的文档连接。是不是怎么回事，请高手指点，另外，尽量少用
∶ 术语，我是初学的，很土的说。再次感谢！

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 162.105.170.65]
发信人: yangxuu (据说江西出美女), 信区: XML
标 题: Re: 谁能告诉我XLink中不协调连接和多方向连接是怎么?nbsp;
发信站: BBS 水木清华站 (Fri Apr 7 15:00:46 2000)

【 在 marc (Parser) 的大作中提到: 】
∶ 我不知道你说的协调英文是那个词，在最新的XLINK的草案中我
∶ 没看出那个是你说的这个东西。
∶ XLINK和URL关系不大，XPOINT是用来描述资源的位置的。

sorry,不协调连接估计是译者生造出来的,书上原文大致是这样的:
XLink分为
Simple Link(也就是Html中的连接方式)
Extended Link
Extended Link 分为
out-of-line link(这里译者翻为不协调连接)
Multidirectional link(这里译为多方向连接)
由于没有实际经验,所以我不能理解Extended link中的两个概念,
烦请帮忙解释一下,谢谢!(最好能配以例子,光概念很难理解)

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.136.36]
发信人: marc (Parser), 信区: XML
标 题: Re: 谁能告诉我XLink中不协调连接和多方向连接是怎么?nbsp;
发信站: BBS 水木清华站 (Fri Apr 7 17:45:39 2000)

out-of-line link是指link中没有local的resouce,链接的端点都是别处的。
比如：
<book xmlns:xlink="http://www.w3.org/1999/xlink"
xlink:type="extended">
<author xlink:type="locator" xlink:href="author.xml"/>
<content xlink:type="locator" xlink:href="content.xml"/>
</book>
如果是in-line的呢：
<book xmlns:xlink="http://www.w3.org/1999/xlink"
xlink:type="extended">
<author xlink:type="resorce">
marc born on XX/XX/xx.....
</author>
<content xlink:type="locator" xlink:href="content.xml"/>
</book>
上面author的数据就在author里面，所以是in-line的link.
不知道说清楚了没有。

多向链应该和arc的定义有关，定义链接穿越的规则。

【 在 yangxuu (据说江西出美女) 的大作中提到: 】
∶ sorry,不协调连接估计是译者生造出来的,书上原文大致是这样的:
∶ XLink分为
∶ Simple Link(也就是Html中的连接方式)
∶ Extended Link
∶ Extended Link 分为
∶ out-of-line link(这里译者翻为不协调连接)
∶ Multidirectional link(这里译为多方向连接)
∶ 由于没有实际经验,所以我不能理解Extended link中的两个概念,
∶ 烦请帮忙解释一下,谢谢!(最好能配以例子,光概念很难理解)

--
※ 修改:·marc 於 Apr 7 17:50:29 修改本文·[FROM: 162.105.170.65]
※ 来源:·BBS 水木清华站 smth.org·[FROM: 162.105.170.65]
发信人: yangxuu (据说江西出美女), 信区: XML
标 题: Re: 谁能告诉我XLink中不协调连接和多方向连接是怎么?nbsp;
发信站: BBS 水木清华站 (Fri Apr 7 19:43:00 2000)

我这么理解,请marc看理解得对不对:
out-of-line link 中的连接端点是一个xml文件,
或者说是有确定的url的文件;而in-of-line link所连接
的对象实际上就在当前连接元素里,也就是说,如果in-of-line link
被激活,它不是去调进一个新的文件,而是显示该连接元素的内容.
感谢marc的帮助!

【 在 marc (Parser) 的大作中提到: 】
∶ out-of-line link是指link中没有local的resouce,链接的端点都是别处的。
∶ 比如：
∶ <book xmlns:xlink="http://www.w3.org/1999/xlink"
∶ xlink:type="extended">
∶ <author xlink:type="locator" xlink:href="author.xml"/>
∶ <content xlink:type="locator" xlink:href="content.xml"/>
∶ </book>
∶ 如果是in-line的呢：
∶ <book xmlns:xlink="http://www.w3.org/1999/xlink"
∶ xlink:type="extended">
∶ <author xlink:type="resorce">
∶ marc born on XX/XX/xx.....
∶ </author>
∶ <content xlink:type="locator" xlink:href="content.xml"/>
∶ </book>
∶ 上面author的数据就在author里面，所以是in-line的link.
∶ 不知道说清楚了没有。
∶ 多向链应该和arc的定义有关，定义链接穿越的规则。

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.136.36]


问一个低级问题。

 发信人: repent (梦该醒), 信区: XML
标 题: 问一个低级问题。
发信站: BBS 水木清华站 (Fri Apr 7 18:11:02 2000)

xml需要编译吗？（解释性语言？）
怎样才能浏览一个xml文件？
谢谢指教！

--
爱就一个字 我只说一次
你知道我哦只会用行动表示
承诺一辈子 守住了坚持
付出永远不会太迟
爱就一个字 我只说一次
恐怕听见的人勾起了相思

※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.144.145]
发信人: marc (Parser), 信区: XML
标 题: Re: 问一个低级问题。
发信站: BBS 水木清华站 (Fri Apr 7 18:34:49 2000)

【 在 repent (梦该醒) 的大作中提到: 】
∶ xml需要编译吗？（解释性语言？）
xml不是编程语言，是描述语言，这点和html一样，不要编译需要分析器
∶ 怎样才能浏览一个xml文件？
xml+样式单 就可以浏览，样式可以是css或xsl,在ie5中如果没有样式，ie5
有一个缺省的样式可以浏览树形结构。

∶ 谢谢指教！

不谢

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 162.105.170.65]
发信人: starw (☆★永恒の孤星★☆), 信区: XML
标 题: Re: 问一个低级问题。
发信站: BBS 水木清华站 (Fri Apr 7 18:40:13 2000)

可以看这个例子
http://www.ipc.dhs.org/test.xml
浏览器得支持xml啊，比如IE5

【 在 repent (梦该醒) 的大作中提到: 】
∶ xml需要编译吗？（解释性语言？）
∶ 怎样才能浏览一个xml文件？
∶ 谢谢指教！

--
山居且喜远纷华，俯仰乾坤野性赊。
千载勋名身外影，百岁荣辱镜中花。

金樽潦倒秋将暮，蕙径萧瑟日且斜。
闻道五湖烟境好，何缘蓑笠钓汀沙。

※ 来源:·BBS 水木清华站 smth.org·[FROM: ftp.xjtu.edu.cn]
发信人: waikok (筝), 信区: XML
标 题: Re: 问一个低级问题。
发信站: BBS 水木清华站 (Sat Apr 8 03:11:23 2000)

【 在 marc (Parser) 的大作中提到: 】
∶ xml不是编程语言，是描述语言，这点和html一样，不要编译需要分析器
∶ xml+样式单 就可以浏览，样式可以是css或xsl,在ie5中如果没有样式，ie5
∶ 有一个缺省的样式可以浏览树形结构。
∶ 不谢

那么浏览器是怎么显示的呢？
是不是将.xml下载到客户端，同时将.css或.xsl的解释器也下载下来，
然后运行.xls画出叶面呢？

不好意思我完全不懂，可能说的不着边际。请指教。
--
任是无情也动人。

※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.136.52]


请问DTD之间转换的问题.

 发信人: yangxuu (据说江西出美女), 信区: XML
标 题: 请问DTD之间转换的问题.
发信站: BBS 水木清华站 (Sun Apr 9 12:36:33 2000)

上次发的时候说的不确切,这里再表述一遍.
就是这个意思,XML文档里的元素(或者说标志)可以由我们在
DTD里声明,并指明属性和嵌套规则,既然是这样,那么对于表述
同种类型的信息(比如公司货单信息),不同的公司可能都制定了一套
自己的DTD来描述这些信息,其中的元素及其属性和嵌套规则肯定不会
完全一样,那么两者之间的信息交换可能就需要一个转换器,把基于
一种DTD的文档,通过这个转换器映射到另外一个DTD的文档,请问该
如何实现这样一种转换机制?不知道哪位大虾做过这个?

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.136.36]
发信人: yangxuu (据说江西出美女), 信区: XML
标 题: Re: 请问DTD之间转换的问题.
发信站: BBS 水木清华站 (Sun Apr 9 14:52:47 2000)

【 在 yangxuu (据说江西出美女) 的大作中提到: 】
∶ 上次发的时候说的不确切,这里再表述一遍.
∶ 就是这个意思,XML文档里的元素(或者说标志)可以由我们在
∶ DTD里声明,并指明属性和嵌套规则,既然是这样,那么对于表述
∶ 同种类型的信息(比如公司货单信息),不同的公司可能都制定了一套
∶ 自己的DTD来描述这些信息,其中的元素及其属性和嵌套规则肯定不会
∶ 完全一样,那么两者之间的信息交换可能就需要一个转换器,把基于
∶ 一种DTD的文档,通过这个转换器映射到另外一个DTD的文档,请问该
∶ 如何实现这样一种转换机制?不知道哪位大虾做过这个?
对不起,我土,我已经知道XSLT就是干这个的,可能没表述清楚,
所以大虾都不知道我说什么东东,现在想问问哪有完整一点的XSLT的例子呀?

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.136.36]
发信人: alou (lou), 信区: XML
标 题: Re: 请问DTD之间转换的问题.
发信站: BBS 水木清华站 (Mon Apr 10 09:52:15 2000)

【 在 yangxuu (据说江西出美女) 的大作中提到: 】
∶ 对不起,我土,我已经知道XSLT就是干这个的,可能没表述清楚,
∶ 所以大虾都不知道我说什么东东,现在想问问哪有完整一点的XSLT的例子呀?
DTD与XML的格式大不相同，XSLT也能处理吗？

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.112.101.154]
发信人: yangxuu (据说江西出美女), 信区: XML
标 题: Re: 请问DTD之间转换的问题.
发信站: BBS 水木清华站 (Mon Apr 10 09:58:50 2000)

【 在 alou (lou) 的大作中提到: 】
∶ DTD与XML的格式大不相同，XSLT也能处理吗？
我觉得应该可以的，虽然我现在还没有看到类似的例子，
但从xml转化成html的思想来看，同样也应该能用xslt把
某个DTD格式的xml文档转换成另外一个DTD格式的xml文档。

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: keg.cs.tsinghua]
发信人: maht (Trill-TimeKiller), 信区: XML
标 题: Re: 请问DTD之间转换的问题.
发信站: BBS 水木清华站 (Mon Apr 10 11:10:50 2000)

【 在 yangxuu (据说江西出美女) 的大作中提到: 】
∶ 对不起,我土,我已经知道XSLT就是干这个的,可能没表述清楚,
∶ 所以大虾都不知道我说什么东东,现在想问问哪有完整一点的XSLT的例子呀?

这是一个sample:
把一个自己写的 XML 文件,转换成XHTML
需要一个 XSLP Processor 来处理
总的就是 hello.xml + hello.xsl ---> hello.html
(这是Cocoon带的例子, parser 是 OpenXML, XSLP Processor是kvisco.com的)
----
<?xml version="1.0"?>

<!-- Written by Stefano Mazzocchi "stefano@apache.org" -->

<xsl:stylesheet xmlns:xsl="">http://www.w3.org/XSL/Transform/1.0">

<xsl:template match="page">
<xsl:processing-instruction name="cocoon-format">type="text/html"</xsl:processing-instruction>
<html>
<head>
<title>
<xsl:value-of select="title"/>
</title>
</head>
<body bgcolor="#ffffff">
<xsl:apply-templates/>
</body>
</html>
</xsl:template>

<xsl:template match="title">
<h1 align="center">
<xsl:apply-templates/>
</h1>
</xsl:template>

<xsl:template match="paragraph">
<p align="center">
<i>
<xsl:apply-templates/>
</i>
</p>
</xsl:template>

</xsl:stylesheet>
---
--
什么时候发了，要把微软给买了，不过没想好有什么用，
或许给解散了，为人类作点贡献。

※ 来源:·BBS 水木清华站 smth.org·[FROM: czhou.math.tsin]


谁先说说xml怎么用吧 (BM: inannan)

编号 | 类别 | 标题 | 编辑日期
1 | 文件 | 谁先说说xml怎么用吧 inannan | 2001.05.25
2 | 文件 | Re: 谁先说说xml怎么用吧 inannan | 2001.05.25
3 | 文件 | Re: 谁先说说xml怎么用吧 inannan | 2001.05.25
4 | 文件 | Re: 谁先说说xml怎么用吧 inannan | 2001.05.25
5 | 文件 | Re: 谁先说说xml怎么用吧 inannan | 2001.05.25
6 | 文件 | Re: 谁先说说xml怎么用吧 inannan | 2001.05.25
7 | 文件 | Re: 谁先说说xml怎么用吧 inannan | 2001.05.25
8 | 文件 | Re: 谁先说说xml怎么用吧 inannan | 2001.05.25
9 | 文件 | Re: 谁先说说xml怎么用吧 inannan | 2001.05.25
10 | 文件 | Re: 谁先说说xml怎么用吧 inannan | 2001.05.25
11 | 文件 | Re: 谁先说说xml怎么用吧 inannan | 2001.05.25
12 | 文件 | Re: 谁先说说xml怎么用吧 inannan | 2001.05.25
13 | 文件 | Re: 谁先说说xml怎么用吧 inannan | 2001.05.25
14 | 文件 | Re: 谁先说说xml怎么用吧 inannan | 2001.05.25
15 | 文件 | Re: 谁先说说xml怎么用吧 inannan | 2001.05.25
返回上一页 回到上一级目录


谁先说说xml怎么用吧

 发信人: yanglc (魂归燕园~~别理我，烦着呢), 信区: XML
标 题: 谁先说说xml怎么用吧
发信站: BBS 水木清华站 (Mon Apr 10 22:27:11 2000)

把精华区的例子输进去，ie5照原样显示，只是换了点颜色。
xml该怎么看啊？总得有点新鲜的东西才有兴趣开始学啊。
--
http://www2.cs.uestc.edu.cn/~yanglc

※ 来源:·BBS 水木清华站 smth.org·[FROM: 162.105.22.132]
返回上一页 回到目录 回到页首 下一篇


Re: 谁先说说xml怎么用吧

 发信人: Nullgate (空门大师~~Powered by Perl), 信区: XML
标 题: Re: 谁先说说xml怎么用吧
发信站: BBS 水木清华站 (Mon Apr 10 22:57:07 2000)

拜托，XML不是专门拿来看的
【 在 yanglc (魂归燕园~~别理我，烦着呢) 的大作中提到: 】
∶ 把精华区的例子输进去，ie5照原样显示，只是换了点颜色。
∶ xml该怎么看啊？总得有点新鲜的东西才有兴趣开始学啊。

--
Perl资源： http://166.111.160.5/nullgate/perl/
神秘代理： telnet 166.111.160.214 9999

※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.160.216]


Re: 谁先说说xml怎么用吧

 发信人: veb (君), 信区: XML
标 题: Re: 谁先说说xml怎么用吧
发信站: BBS 水木清华站 (Mon Apr 10 22:58:01 2000)

【 在 yanglc (魂归燕园~~别理我，烦着呢) 的大作中提到: 】
∶ 把精华区的例子输进去，ie5照原样显示，只是换了点颜色。
∶ xml该怎么看啊？总得有点新鲜的东西才有兴趣开始学啊。

还没有加css和xsl,hehe，

再等一等//一两天~~~~~

--

Powered by eXtensible Markup Language

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.112.99.209]


Re: 谁先说说xml怎么用吧

 发信人: sylvan (睡觉&跑腿), 信区: XML
标 题: Re: 谁先说说xml怎么用吧
发信站: BBS 水木清华站 (Mon Apr 10 22:58:26 2000)

那就举个用的例子先~~
【 在 Nullgate (空门大师~~Powered by Perl) 的大作中提到: 】
∶ 拜托，XML不是专门拿来看的

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.163.236]


Re: 谁先说说xml怎么用吧

 发信人: veb (君), 信区: XML
标 题: Re: 谁先说说xml怎么用吧
发信站: BBS 水木清华站 (Mon Apr 10 23:06:25 2000)

【 在 sylvan (睡觉&跑腿) 的大作中提到: 】
∶ 那就举个用的例子先~~

我的理解，主要有两个用法
1.信息发布//类试html，但是威力更为强大，
如同一内容再网上，手机，电视和声音上的信息发布
2.信息（数据）交换
企业，系统，应用之间的数据交换。
这是XML被更为看好的一个方面。

上述两个方面，XML标准（一般称为推荐）好象更注重在第一个方面
但是更多的公司和组织更看重他在第二个方面的巨大前景。

言而总之，XML是一种数据表示的方式。

--

Powered by eXtensible Markup Language

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.112.99.209]


Re: 谁先说说xml怎么用吧

 发信人: veb (君), 信区: XML
标 题: Re: 谁先说说xml怎么用吧
发信站: BBS 水木清华站 (Mon Apr 10 23:10:40 2000)

【 在 sylvan (睡觉&跑腿) 的大作中提到: 】
∶ 那就举个用的例子先~~

再说两个身边的例子把，通俗点的
1.xml+xsl 完成类似html的功能
2.各种编辑器中的统一数据表示
正好对应上文中我认为的两大应用领域。

请大家指正

--

Powered by eXtensible Markup Language

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.112.99.209]


Re: 谁先说说xml怎么用吧

 发信人: yangxuu (据说江西出美女), 信区: XML
标 题: Re: 谁先说说xml怎么用吧
发信站: BBS 水木清华站 (Tue Apr 11 09:44:38 2000)

【 在 yanglc (魂归燕园~~别理我，烦着呢) 的大作中提到: 】
∶ 把精华区的例子输进去，ie5照原样显示，只是换了点颜色。
∶ xml该怎么看啊？总得有点新鲜的东西才有兴趣开始学啊。
我给你可看的例子把,是xml+xsl的例子,可以在ie5里打开看
(记住, ie4看不了),在xml联盟的网站上有,如果你不愿去的话,
就把下面代码拷下来把.
1 stock-sorter.xml
2 simple.xsl
3 complex.xsl(如果想看看好的效果,只要把stock-sorter.xml中
的simple.xsl用complex.xsl来替换).
直接用ie5打开stock-sorter.xml即可 .
1.stock-sorter.xml:
<?xml:stylesheet type="text/xsl" href="simple.xsl"?>
<portfolio xmlns="x-schema:portfolio-schema.xml">
<description>Technology Stock Index</description>
<date>1999-08-13T15:56:00</date>
<stock>
<symbol>AOL</symbol>
<name>america online inc</name>
<price>92.250</price>
<change>-1.125</change>
<percent>-1.20</percent>
<volume>4.99</volume>
</stock>
<stock>
<symbol>CSCO</symbol>
<name>cisco sys inc</name>
<price>50.688</price>
<change>-1.688</change>
<percent>-3.22</percent>
<volume>18.23</volume>
</stock>
<stock>
<symbol>DELL</symbol>
<name>dell computer corp</name>
<price>53.000</price>
<change>-3.063</change>
<percent>-5.46</percent>
<volume>32.95</volume>
</stock>
<stock>
<symbol>GSTRF</symbol>
<name>globalstar telecommun ltd</name>
<price>10.063</price>
<change>-0.063</change>
<percent>-0.62</percent>
<volume>0.49</volume>
</stock>
<stock>
<symbol>NUE</symbol>
<name>nucor corp</name>
<price>44.000</price>
<change>+0.375</change>
<percent>+0.86</percent>
<volume>0.14</volume>
</stock>
<stock>
<symbol>PMTC</symbol>
<name>parametric technology</name>
<price>9.188</price>
<change>-0.438</change>
<percent>-4.55</percent>
<volume>3.90</volume>
</stock>
<stock>
<symbol>PSFT</symbol>
<name>peoplesoft inc</name>
<price>18.875</price>
<change>-4.250</change>
<percent>-18.38</percent>
<volume>20.33</volume>
</stock>
<stock>
<symbol>QWST</symbol>
<name>qwest communications intl inc</name>
<price>30.000</price>
<change>-1.750</change>
<percent>-5.51</percent>
<volume>1.78</volume>
</stock>
<stock>
<symbol>RTRSY</symbol>
<name>reuters group plc adr</name>
<price>46.375</price>
<change>+0.250</change>
<percent>+0.54</percent>
<volume>0.24</volume>
</stock>
<stock>
<symbol>SLB</symbol>
<name>schlumberger ltd</name>
<price>44.500</price>
<change>-1.688</change>
<percent>-3.65</percent>
<volume>3.23</volume>
</stock>
<stock>
<symbol>SCH</symbol>
<name>schwab charles corp new</name>
<price>41.813</price>
<change>+1.875</change>
<percent>+4.69</percent>
<volume>1.23</volume>
</stock>
<stock>
<symbol>SBH</symbol>
<name>smithkline beecham plc ord sh</name>
<price>53.750</price>
<change>+1.875</change>
<percent>+3.61</percent>
<volume>0.90</volume>
</stock>
<stock>
<symbol>WIND</symbol>
<name>wind river systems</name>
<price>35.813</price>
<change>-3.563</change>
<percent>-9.05</percent>
<volume>0.29</volume>
</stock>
<stock>
<symbol>YHOO</symbol>
<name>yahoo! inc</name>
<price>109.938</price>
<change>-4.500</change>
<percent>-3.93</percent>
<volume>6.48</volume>
</stock>
</portfolio>

2. simple.xsl
<?xml version="1.0"?>
<HTML xmlns:xsl="">http://www.w3.org/TR/WD-xsl">
<BODY STYLE="font-family:Arial, helvetica, sans-serif; font-size:9.5pt;
background-color:#FEEEEE">
<xsl:for-each select="portfolio/stock">
<DIV STYLE="background-color:teal; color:white; padding:4px">
<SPAN STYLE="font-weight:bold; color:white">
<xsl:value-of select="name"/></SPAN>
- <xsl:value-of select="price"/>
</DIV>
<DIV STYLE="margin-left:10px; margin-bottom:1em; font-size:9pt">
<xsl:value-of select="description"/>
<SPAN STYLE="font-style:italic">
(change:<xsl:value-of select="change"/> )
</SPAN>
</DIV>
</xsl:for-each>
</BODY>
</HTML>

3. complex.xsl
<?xml version="1.0"?>

<!-- Note that this stylesheet relies on the XMLDocument and XSLDocument properties and thus
only works when browsing XML -->

<xsl:stylesheet xmlns:xsl="">http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">
<HTML>
<HEAD>
<STYLE>
BODY {margin:0}
.bg {font:8pt Verdana; background-color:purple; color:white}
H1 {font:bold 14pt Verdana; width:100%; margin-top:1em}
.row {font:8pt Verdana; border-bottom:1px solid #CC88CC}
.header {font:bold 9pt Verdana; cursor:hand; padding:2px; border:2px outset gray}
.up {background-color:#DDFFDD;}
.down {background-color:#FFDDDD;}
</STYLE>
</HEAD>

<SCRIPT><xsl:comment><![CDATA[
function sort(field)
{
sortField.value = field;
<!-- set cursor to watch here? -->
listing.innerHTML = source.documentElement.transformNode(stylesheet);
}
]]></xsl:comment></SCRIPT>

<SCRIPT for="window" event="onload"><xsl:comment><![CDATA[
stylesheet = document.XSLDocument;
source = document.XMLDocument;
sortField = document.XSLDocument.selectSingleNode("//@order-by");
]]></xsl:comment></SCRIPT>

<BODY>
<TABLE width="100%" cellspacing="0">
<TR>
<TD class="bg"/>
<TD class="bg">
<H1><xsl:value-of select="portfolio/description"/>
for <xsl:apply-templates select="portfolio/date"/></H1>
<DIV>Average change: <B><xsl:eval>averageChange(this)</xsl:eval></B></DIV>
<DIV>Total volume: <B><xsl:eval>totalVolume(this)</xsl:eval></B></DIV>
</TD>
</TR>
<TR>
<TD class="bg" width="120" valign="top">
<P>Click on the column headers to sort by that field.</P>
<P>Demonstration of custom formatting of data typed values and
local reapplication of the stylesheet.</P>
<P>Stocks losing more than 5% indicated in red. Stocks gaining
value indicated in green.</P>
</TD>
<TD class="bg" valign="top">
<DIV id="listing"><xsl:apply-templates match="portfolio"/></DIV>
</TD>
</TR>
</TABLE>
</BODY>
</HTML>
</xsl:template>

<xsl:template match="portfolio">
<TABLE STYLE="background-color:white">
<THEAD>
<TD width="200"><DIV class="header" onClick="sort('name')">Company</DIV></TD>
<TD width="80"><DIV class="header" onClick="sort('symbol')">Symbol</DIV></TD>
<TD width="80"><DIV class="header" onClick="sort('price')">Price</DIV></TD>
<TD width="80"><DIV class="header" onClick="sort('change')">Change</DIV></TD>
<TD width="80"><DIV class="header" onClick="sort('percent')">%Change</DIV></TD>
<TD width="80"><DIV class="header" onClick="sort('volume')">Volume</DIV></TD>
</THEAD>
<xsl:for-each select="stock" order-by="symbol">
<TR>
<xsl:for-each select="change">
<xsl:if expr="this.nodeTypedValue &gt; 0">
<xsl:attribute name="class">up</xsl:attribute>
</xsl:if>
</xsl:for-each>
<xsl:for-each select="percent">
<xsl:if expr="this.nodeTypedValue &lt; -5">
<xsl:attribute name="class">down</xsl:attribute>
</xsl:if>
</xsl:for-each>
<TD><DIV class="row"><xsl:value-of select="name"/></DIV></TD>
<TD><DIV class="row"><xsl:value-of select="symbol"/></DIV></TD>
<TD><DIV class="row" STYLE="text-align:right"><xsl:apply-templates select="price"/></DIV></TD>
<TD><DIV class="row" STYLE="text-align:right"><xsl:apply-templates select="change"/></DIV></TD>
<TD><DIV class="row" STYLE="text-align:right"><xsl:apply-templates select="percent"/></DIV></TD>
<TD><DIV class="row" STYLE="text-align:right"><xsl:apply-templates select="volume"/></DIV></TD>
</TR>
</xsl:for-each>
</TABLE>
</xsl:template>

<xsl:template match="date">
<xsl:eval>formatDate(this.nodeTypedValue, "MMMM dd',' yyyy")</xsl:eval>
at <xsl:eval>formatTime(this.nodeTypedValue, "hh:mm tt")</xsl:eval>
</xsl:template>

<xsl:template match="price | change">
<xsl:eval>formatNumber(this.nodeTypedValue, "$0.00")</xsl:eval>
</xsl:template>

<xsl:template match="percent">
<xsl:if expr="this.nodeTypedValue &gt; 0">+</xsl:if>
<xsl:eval>formatNumber(this.nodeTypedValue, "0.0")</xsl:eval>%
</xsl:template>

<xsl:template match="volume">
<xsl:eval>formatNumber(this.nodeTypedValue * 1000000, "#,###,###")</xsl:eval>
</xsl:template>

<xsl:script><![CDATA[
function totalVolume(node)
{
total = 0;
volumes = node.selectNodes("/portfolio/stock/volume");
for (v = volumes.nextNode(); v; v = volumes.nextNode())
total += v.nodeTypedValue;
return formatNumber(total, "#") + " million shares";
}

function averageChange(node)
{
total = 0;
percents = node.selectNodes("/portfolio/stock/percent");
count = percents.length;
for (p = percents.nextNode(); p; p = percents.nextNode())
total += p.nodeTypedValue;
return formatNumber(total/count, "#.0") + "%";
}
]]></xsl:script>
</xsl:stylesheet>

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.136.36]


Re: 谁先说说xml怎么用吧

 发信人: littlesweet (小甜甜), 信区: XML
标 题: Re: 谁先说说xml怎么用吧
发信站: BBS 水木清华站 (Tue Apr 11 11:19:21 2000)

好像少了一个portfolio-schema.xml文件
看不成
【 在 yangxuu (据说江西出美女) 的大作中提到: 】
∶ 我给你可看的例子把,是xml+xsl的例子,可以在ie5里打开看
∶ (记住, ie4看不了),在xml联盟的网站上有,如果你不愿去的话,
∶ 就把下面代码拷下来把.
∶ 1 stock-sorter.xml
∶ 2 simple.xsl
∶ 3 complex.xsl(如果想看看好的效果,只要把stock-sorter.xml中
∶ 的simple.xsl用complex.xsl来替换).
∶ 直接用ie5打开stock-sorter.xml即可 .
∶ 1.stock-sorter.xml:
∶ <?xml:stylesheet type="text/xsl" href="simple.xsl"?>
∶ <portfolio xmlns="x-schema:portfolio-schema.xml">
∶ <description>Technology Stock Index</description>
∶ <date>1999-08-13T15:56:00</date>
∶ <stock>
∶ <symbol>AOL</symbol>
∶ <name>america online inc</name>
∶ <price>92.250</price>
∶ <change>-1.125</change>
∶ <percent>-1.20</percent>
∶ <volume>4.99</volume>
∶ </stock>
∶ <stock>
∶ <symbol>CSCO</symbol>
∶ <name>cisco sys inc</name>
∶ <price>50.688</price>
∶ <change>-1.688</change>
∶ <percent>-3.22</percent>
∶ <volume>18.23</volume>
∶ </stock>
∶ <stock>
∶ <symbol>DELL</symbol>
∶ <name>dell computer corp</name>
∶ <price>53.000</price>
∶ <change>-3.063</change>
∶ <percent>-5.46</percent>
∶ <volume>32.95</volume>
∶ </stock>
∶ <stock>
∶ <symbol>GSTRF</symbol>
∶ <name>globalstar telecommun ltd</name>
∶ <price>10.063</price>
∶ <change>-0.063</change>
∶ <percent>-0.62</percent>
∶ <volume>0.49</volume>
∶ </stock>
∶ <stock>
∶ <symbol>NUE</symbol>
∶ <name>nucor corp</name>
∶ <price>44.000</price>
∶ <change>+0.375</change>
∶ <percent>+0.86</percent>
∶ <volume>0.14</volume>
∶ </stock>
∶ <stock>
∶ <symbol>PMTC</symbol>
∶ <name>parametric technology</name>
∶ <price>9.188</price>
∶ <change>-0.438</change>
∶ <percent>-4.55</percent>
∶ <volume>3.90</volume>
∶ </stock>
∶ <stock>
∶ <symbol>PSFT</symbol>
∶ <name>peoplesoft inc</name>
∶ <price>18.875</price>
∶ <change>-4.250</change>
∶ <percent>-18.38</percent>
∶ <volume>20.33</volume>
∶ </stock>
∶ <stock>
∶ <symbol>QWST</symbol>
∶ <name>qwest communications intl inc</name>
∶ <price>30.000</price>
∶ <change>-1.750</change>
∶ <percent>-5.51</percent>
∶ <volume>1.78</volume>
∶ </stock>
∶ <stock>
∶ <symbol>RTRSY</symbol>
∶ <name>reuters group plc adr</name>
∶ <price>46.375</price>
∶ <change>+0.250</change>
∶ <percent>+0.54</percent>
∶ <volume>0.24</volume>
∶ </stock>
∶ <stock>
∶ <symbol>SLB</symbol>
∶ <name>schlumberger ltd</name>
∶ <price>44.500</price>
∶ <change>-1.688</change>
∶ <percent>-3.65</percent>
∶ <volume>3.23</volume>
∶ </stock>
∶ <stock>
∶ <symbol>SCH</symbol>
∶ <name>schwab charles corp new</name>
∶ <price>41.813</price>
∶ <change>+1.875</change>
∶ <percent>+4.69</percent>
∶ <volume>1.23</volume>
∶ </stock>
∶ <stock>
∶ <symbol>SBH</symbol>
∶ <name>smithkline beecham plc ord sh</name>
∶ <price>53.750</price>
∶ <change>+1.875</change>
∶ <percent>+3.61</percent>
∶ <volume>0.90</volume>
∶ </stock>
∶ <stock>
∶ <symbol>WIND</symbol>
∶ <name>wind river systems</name>
∶ <price>35.813</price>
∶ <change>-3.563</change>
∶ <percent>-9.05</percent>
∶ <volume>0.29</volume>
∶ </stock>
∶ <stock>
∶ <symbol>YHOO</symbol>
∶ <name>yahoo! inc</name>
∶ <price>109.938</price>
∶ <change>-4.500</change>
∶ <percent>-3.93</percent>
∶ <volume>6.48</volume>
∶ </stock>
∶ </portfolio>
∶ 2. simple.xsl
∶ <?xml version="1.0"?>
∶ <HTML xmlns:xsl="">http://www.w3.org/TR/WD-xsl">
∶ <BODY STYLE="font-family:Arial, helvetica, sans-serif; font-size:9.5pt;
∶ background-color:#FEEEEE">
∶ <xsl:for-each select="portfolio/stock">
∶ <DIV STYLE="background-color:teal; color:white; padding:4px">
∶ <SPAN STYLE="font-weight:bold; color:white">
∶ <xsl:value-of select="name"/></SPAN>
∶ - <xsl:value-of select="price"/>
∶ </DIV>
∶ <DIV STYLE="margin-left:10px; margin-bottom:1em; font-size:9pt">
∶ <xsl:value-of select="description"/>
∶ <SPAN STYLE="font-style:italic">
∶ (change:<xsl:value-of select="change"/> )
∶ </SPAN>
∶ </DIV>
∶ </xsl:for-each>
∶ </BODY>
∶ </HTML>
∶ 3. complex.xsl
∶ <?xml version="1.0"?>
∶ <!-- Note that this stylesheet relies on the XMLDocument and XSLDocument properties and thus
∶ only works when browsing XML -->
∶ <xsl:stylesheet xmlns:xsl="">http://www.w3.org/TR/WD-xsl">
∶ <xsl:template match="/">
∶ <HTML>
∶ <HEAD>
∶ <STYLE>
∶ BODY {margin:0}
∶ .bg {font:8pt Verdana; background-color:purple; color:white}
∶ H1 {font:bold 14pt Verdana; width:100%; margin-top:1em}
∶ .row {font:8pt Verdana; border-bottom:1px solid #CC88CC}
∶ .header {font:bold 9pt Verdana; cursor:hand; padding:2px; border:2px outset gray}
∶ .up {background-color:#DDFFDD;}
∶ .down {background-color:#FFDDDD;}
∶ </STYLE>
∶ </HEAD>
∶ <SCRIPT><xsl:comment><![CDATA[
∶ function sort(field)
∶ {
∶ sortField.value = field;
∶ <!-- set cursor to watch here? -->
∶ listing.innerHTML = source.documentElement.transformNode(stylesheet);
∶ }
∶ ]]></xsl:comment></SCRIPT>
∶ <SCRIPT for="window" event="onload"><xsl:comment><![CDATA[
∶ stylesheet = document.XSLDocument;
∶ source = document.XMLDocument;
∶ sortField = document.XSLDocument.selectSingleNode("//@order-by");
∶ ]]></xsl:comment></SCRIPT>
∶ <BODY>
∶ <TABLE width="100%" cellspacing="0">
∶ <TR>
∶ <TD class="bg"/>
∶ <TD class="bg">
∶ <H1><xsl:value-of select="portfolio/description"/>
∶ for <xsl:apply-templates select="portfolio/date"/></H1>
∶ <DIV>Average change: <B><xsl:eval>averageChange(this)</xsl:eval></B></DIV>
∶ <DIV>Total volume: <B><xsl:eval>totalVolume(this)</xsl:eval></B></DIV>
∶ </TD>
∶ </TR>
∶ <TR>
∶ <TD class="bg" width="120" valign="top">
∶ <P>Click on the column headers to sort by that field.</P>
∶ <P>Demonstration of custom formatting of data typed values and
∶ local reapplication of the stylesheet.</P>
∶ <P>Stocks losing more than 5% indicated in red. Stocks gaining
∶ value indicated in green.</P>
∶ </TD>
∶ <TD class="bg" valign="top">
∶ <DIV id="listing"><xsl:apply-templates match="portfolio"/></DIV>
∶ </TD>
∶ </TR>
∶ </TABLE>
∶ </BODY>
∶ </HTML>
∶ </xsl:template>
∶ <xsl:template match="portfolio">
∶ <TABLE STYLE="background-color:white">
∶ <THEAD>
∶ <TD width="200"><DIV class="header" onClick="sort('name')">Company</DIV></TD>
∶ <TD width="80"><DIV class="header" onClick="sort('symbol')">Symbol</DIV></TD>
∶ <TD width="80"><DIV class="header" onClick="sort('price')">Price</DIV></TD>
∶ <TD width="80"><DIV class="header" onClick="sort('change')">Change</DIV></TD>
∶ <TD width="80"><DIV class="header" onClick="sort('percent')">%Change</DIV></TD>
∶ <TD width="80"><DIV class="header" onClick="sort('volume')">Volume</DIV></TD>
∶ </THEAD>
∶ <xsl:for-each select="stock" order-by="symbol">
∶ <TR>
∶ <xsl:for-each select="change">
∶ <xsl:if expr="this.nodeTypedValue &gt; 0">
∶ <xsl:attribute name="class">up</xsl:attribute>
∶ </xsl:if>
∶ </xsl:for-each>
∶ <xsl:for-each select="percent">
∶ <xsl:if expr="this.nodeTypedValue &lt; -5">
∶ <xsl:attribute name="class">down</xsl:attribute>
∶ </xsl:if>
∶ </xsl:for-each>
∶ <TD><DIV class="row"><xsl:value-of select="name"/></DIV></TD>
∶ <TD><DIV class="row"><xsl:value-of select="symbol"/></DIV></TD>
∶ <TD><DIV class="row" STYLE="text-align:right"><xsl:apply-templates select="price"/></DIV></TD>
∶ <TD><DIV class="row" STYLE="text-align:right"><xsl:apply-templates select="change"/></DIV></TD>
∶ <TD><DIV class="row" STYLE="text-align:right"><xsl:apply-templates select="percent"/></DIV></TD>
∶ <TD><DIV class="row" STYLE="text-align:right"><xsl:apply-templates select="volume"/></DIV></TD>
∶ </TR>
∶ </xsl:for-each>
∶ </TABLE>
∶ </xsl:template>
∶ <xsl:template match="date">
∶ <xsl:eval>formatDate(this.nodeTypedValue, "MMMM dd',' yyyy")</xsl:eval>
∶ at <xsl:eval>formatTime(this.nodeTypedValue, "hh:mm tt")</xsl:eval>
∶ </xsl:template>
∶ <xsl:template match="price | change">
∶ <xsl:eval>formatNumber(this.nodeTypedValue, "$0.00")</xsl:eval>
∶ </xsl:template>
∶ <xsl:template match="percent">
∶ <xsl:if expr="this.nodeTypedValue &gt; 0">+</xsl:if>
∶ <xsl:eval>formatNumber(this.nodeTypedValue, "0.0")</xsl:eval>%
∶ </xsl:template>
∶ <xsl:template match="volume">
∶ <xsl:eval>formatNumber(this.nodeTypedValue * 1000000, "#,###,###")</xsl:eval>
∶ </xsl:template>
∶ <xsl:script><![CDATA[
∶ function totalVolume(node)
∶ {
∶ total = 0;
∶ volumes = node.selectNodes("/portfolio/stock/volume");
∶ for (v = volumes.nextNode(); v; v = volumes.nextNode())
∶ total += v.nodeTypedValue;
∶ return formatNumber(total, "#") + " million shares";
∶ }
∶ function averageChange(node)
∶ {
∶ total = 0;
∶ percents = node.selectNodes("/portfolio/stock/percent");
∶ count = percents.length;
∶ for (p = percents.nextNode(); p; p = percents.nextNode())
∶ total += p.nodeTypedValue;
∶ return formatNumber(total/count, "#.0") + "%";
∶ }
∶ ]]></xsl:script>
∶ </xsl:stylesheet>

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.117.114.61]


Re: 谁先说说xml怎么用吧

 发信人: starw (☆★永恒の孤星★☆), 信区: XML
标 题: Re: 谁先说说xml怎么用吧
发信站: BBS 水木清华站 (Tue Apr 11 18:41:59 2000)

前面给过这个例子了,难道都没看?
www.ipc.dhs.org/test.xml

【 在 yangxuu (据说江西出美女) 的大作中提到: 】
∶ 我给你可看的例子把,是xml+xsl的例子,可以在ie5里打开看
∶ (记住, ie4看不了),在xml联盟的网站上有,如果你不愿去的话,
∶ 就把下面代码拷下来把.
∶ 1 stock-sorter.xml
∶ 2 simple.xsl
∶ 3 complex.xsl(如果想看看好的效果,只要把stock-sorter.xml中
∶ 的simple.xsl用complex.xsl来替换).
∶ 直接用ie5打开stock-sorter.xml即可 .
∶ 1.stock-sorter.xml:
∶ <?xml:stylesheet type="text/xsl" href="simple.xsl"?>
∶ <portfolio xmlns="x-schema:portfolio-schema.xml">
∶ <description>Technology Stock Index</description>
∶ <date>1999-08-13T15:56:00</date>
∶ <stock>
∶ <symbol>AOL</symbol>
∶ <name>america online inc</name>
∶ <price>92.250</price>
∶ <change>-1.125</change>
∶ <percent>-1.20</percent>
∶ <volume>4.99</volume>
∶ </stock>
∶ <stock>
∶ <symbol>CSCO</symbol>
∶ <name>cisco sys inc</name>
∶ <price>50.688</price>
∶ <change>-1.688</change>
∶ <percent>-3.22</percent>
∶ <volume>18.23</volume>
∶ </stock>
∶ <stock>
∶ <symbol>DELL</symbol>
∶ <name>dell computer corp</name>
∶ <price>53.000</price>
∶ <change>-3.063</change>
∶ <percent>-5.46</percent>
∶ <volume>32.95</volume>
∶ </stock>
∶ <stock>
∶ <symbol>GSTRF</symbol>
∶ <name>globalstar telecommun ltd</name>
∶ <price>10.063</price>
∶ <change>-0.063</change>
∶ <percent>-0.62</percent>
∶ <volume>0.49</volume>
∶ </stock>
∶ <stock>
∶ <symbol>NUE</symbol>
∶ <name>nucor corp</name>
∶ <price>44.000</price>
∶ <change>+0.375</change>
∶ <percent>+0.86</percent>
∶ <volume>0.14</volume>
∶ </stock>
∶ <stock>
∶ <symbol>PMTC</symbol>
∶ <name>parametric technology</name>
∶ <price>9.188</price>
∶ <change>-0.438</change>
∶ <percent>-4.55</percent>
∶ <volume>3.90</volume>
∶ </stock>
∶ <stock>
∶ <symbol>PSFT</symbol>
∶ <name>peoplesoft inc</name>
∶ <price>18.875</price>
∶ <change>-4.250</change>
∶ <percent>-18.38</percent>
∶ <volume>20.33</volume>
∶ </stock>
∶ <stock>
∶ <symbol>QWST</symbol>
∶ <name>qwest communications intl inc</name>
∶ <price>30.000</price>
∶ <change>-1.750</change>
∶ <percent>-5.51</percent>
∶ <volume>1.78</volume>
∶ </stock>
∶ <stock>
∶ <symbol>RTRSY</symbol>
∶ <name>reuters group plc adr</name>
∶ <price>46.375</price>
∶ <change>+0.250</change>
∶ <percent>+0.54</percent>
∶ <volume>0.24</volume>
∶ </stock>
∶ <stock>
∶ <symbol>SLB</symbol>
∶ <name>schlumberger ltd</name>
∶ <price>44.500</price>
∶ <change>-1.688</change>
∶ <percent>-3.65</percent>
∶ <volume>3.23</volume>
∶ </stock>
∶ <stock>
∶ <symbol>SCH</symbol>
∶ <name>schwab charles corp new</name>
∶ <price>41.813</price>
∶ <change>+1.875</change>
∶ <percent>+4.69</percent>
∶ <volume>1.23</volume>
∶ </stock>
∶ <stock>
∶ <symbol>SBH</symbol>
∶ <name>smithkline beecham plc ord sh</name>
∶ <price>53.750</price>
∶ <change>+1.875</change>
∶ <percent>+3.61</percent>
∶ <volume>0.90</volume>
∶ </stock>
∶ <stock>
∶ <symbol>WIND</symbol>
∶ <name>wind river systems</name>
∶ <price>35.813</price>
∶ <change>-3.563</change>
∶ <percent>-9.05</percent>
∶ <volume>0.29</volume>
∶ </stock>
∶ <stock>
∶ <symbol>YHOO</symbol>
∶ <name>yahoo! inc</name>
∶ <price>109.938</price>
∶ <change>-4.500</change>
∶ <percent>-3.93</percent>
∶ <volume>6.48</volume>
∶ </stock>
∶ </portfolio>
∶ 2. simple.xsl
∶ <?xml version="1.0"?>
∶ <HTML xmlns:xsl="">http://www.w3.org/TR/WD-xsl">
∶ <BODY STYLE="font-family:Arial, helvetica, sans-serif; font-size:9.5pt;
∶ background-color:#FEEEEE">
∶ <xsl:for-each select="portfolio/stock">
∶ <DIV STYLE="background-color:teal; color:white; padding:4px">
∶ <SPAN STYLE="font-weight:bold; color:white">
∶ <xsl:value-of select="name"/></SPAN>
∶ - <xsl:value-of select="price"/>
∶ </DIV>
∶ <DIV STYLE="margin-left:10px; margin-bottom:1em; font-size:9pt">
∶ <xsl:value-of select="description"/>
∶ <SPAN STYLE="font-style:italic">
∶ (change:<xsl:value-of select="change"/> )
∶ </SPAN>
∶ </DIV>
∶ </xsl:for-each>
∶ </BODY>
∶ </HTML>
∶ 3. complex.xsl
∶ <?xml version="1.0"?>
∶ <!-- Note that this stylesheet relies on the XMLDocument and XSLDocument properties and thus
∶ only works when browsing XML -->
∶ <xsl:stylesheet xmlns:xsl="">http://www.w3.org/TR/WD-xsl">
∶ <xsl:template match="/">
∶ <HTML>
∶ <HEAD>
∶ <STYLE>
∶ BODY {margin:0}
∶ .bg {font:8pt Verdana; background-color:purple; color:white}
∶ H1 {font:bold 14pt Verdana; width:100%; margin-top:1em}
∶ .row {font:8pt Verdana; border-bottom:1px solid #CC88CC}
∶ .header {font:bold 9pt Verdana; cursor:hand; padding:2px; border:2px outset gray}
∶ .up {background-color:#DDFFDD;}
∶ .down {background-color:#FFDDDD;}
∶ </STYLE>
∶ </HEAD>
∶ <SCRIPT><xsl:comment><![CDATA[
∶ function sort(field)
∶ {
∶ sortField.value = field;
∶ <!-- set cursor to watch here? -->
∶ listing.innerHTML = source.documentElement.transformNode(stylesheet);
∶ }
∶ ]]></xsl:comment></SCRIPT>
∶ <SCRIPT for="window" event="onload"><xsl:comment><![CDATA[
∶ stylesheet = document.XSLDocument;
∶ source = document.XMLDocument;
∶ sortField = document.XSLDocument.selectSingleNode("//@order-by");
∶ ]]></xsl:comment></SCRIPT>
∶ <BODY>
∶ <TABLE width="100%" cellspacing="0">
∶ <TR>
∶ <TD class="bg"/>
∶ <TD class="bg">
∶ <H1><xsl:value-of select="portfolio/description"/>
∶ for <xsl:apply-templates select="portfolio/date"/></H1>
∶ <DIV>Average change: <B><xsl:eval>averageChange(this)</xsl:eval></B></DIV>
∶ <DIV>Total volume: <B><xsl:eval>totalVolume(this)</xsl:eval></B></DIV>
∶ </TD>
∶ </TR>
∶ <TR>
∶ <TD class="bg" width="120" valign="top">
∶ <P>Click on the column headers to sort by that field.</P>
∶ <P>Demonstration of custom formatting of data typed values and
∶ local reapplication of the stylesheet.</P>
∶ <P>Stocks losing more than 5% indicated in red. Stocks gaining
∶ value indicated in green.</P>
∶ </TD>
∶ <TD class="bg" valign="top">
∶ <DIV id="listing"><xsl:apply-templates match="portfolio"/></DIV>
∶ </TD>
∶ </TR>
∶ </TABLE>
∶ </BODY>
∶ </HTML>
∶ </xsl:template>
∶ <xsl:template match="portfolio">
∶ <TABLE STYLE="background-color:white">
∶ <THEAD>
∶ <TD width="200"><DIV class="header" onClick="sort('name')">Company</DIV></TD>
∶ <TD width="80"><DIV class="header" onClick="sort('symbol')">Symbol</DIV></TD>
∶ <TD width="80"><DIV class="header" onClick="sort('price')">Price</DIV></TD>
∶ <TD width="80"><DIV class="header" onClick="sort('change')">Change</DIV></TD>
∶ <TD width="80"><DIV class="header" onClick="sort('percent')">%Change</DIV></TD>
∶ <TD width="80"><DIV class="header" onClick="sort('volume')">Volume</DIV></TD>
∶ </THEAD>
∶ <xsl:for-each select="stock" order-by="symbol">
∶ <TR>
∶ <xsl:for-each select="change">
∶ <xsl:if expr="this.nodeTypedValue &gt; 0">
∶ <xsl:attribute name="class">up</xsl:attribute>
∶ </xsl:if>
∶ </xsl:for-each>
∶ <xsl:for-each select="percent">
∶ <xsl:if expr="this.nodeTypedValue &lt; -5">
∶ <xsl:attribute name="class">down</xsl:attribute>
∶ </xsl:if>
∶ </xsl:for-each>
∶ <TD><DIV class="row"><xsl:value-of select="name"/></DIV></TD>
∶ <TD><DIV class="row"><xsl:value-of select="symbol"/></DIV></TD>
∶ <TD><DIV class="row" STYLE="text-align:right"><xsl:apply-templates select="price"/></DIV></TD>
∶ <TD><DIV class="row" STYLE="text-align:right"><xsl:apply-templates select="change"/></DIV></TD>
∶ <TD><DIV class="row" STYLE="text-align:right"><xsl:apply-templates select="percent"/></DIV></TD>
∶ <TD><DIV class="row" STYLE="text-align:right"><xsl:apply-templates select="volume"/></DIV></TD>
∶ </TR>
∶ </xsl:for-each>
∶ </TABLE>
∶ </xsl:template>
∶ <xsl:template match="date">
∶ <xsl:eval>formatDate(this.nodeTypedValue, "MMMM dd',' yyyy")</xsl:eval>
∶ at <xsl:eval>formatTime(this.nodeTypedValue, "hh:mm tt")</xsl:eval>
∶ </xsl:template>
∶ <xsl:template match="price | change">
∶ <xsl:eval>formatNumber(this.nodeTypedValue, "$0.00")</xsl:eval>
∶ </xsl:template>
∶ <xsl:template match="percent">
∶ <xsl:if expr="this.nodeTypedValue &gt; 0">+</xsl:if>
∶ <xsl:eval>formatNumber(this.nodeTypedValue, "0.0")</xsl:eval>%
∶ </xsl:template>
∶ <xsl:template match="volume">
∶ <xsl:eval>formatNumber(this.nodeTypedValue * 1000000, "#,###,###")</xsl:eval>
∶ </xsl:template>
∶ <xsl:script><![CDATA[
∶ function totalVolume(node)
∶ {
∶ total = 0;
∶ volumes = node.selectNodes("/portfolio/stock/volume");
∶ for (v = volumes.nextNode(); v; v = volumes.nextNode())
∶ total += v.nodeTypedValue;
∶ return formatNumber(total, "#") + " million shares";
∶ }
∶ function averageChange(node)
∶ {
∶ total = 0;
∶ percents = node.selectNodes("/portfolio/stock/percent");
∶ count = percents.length;
∶ for (p = percents.nextNode(); p; p = percents.nextNode())
∶ total += p.nodeTypedValue;
∶ return formatNumber(total/count, "#.0") + "%";
∶ }
∶ ]]></xsl:script>
∶ </xsl:stylesheet>

--
山居且喜远纷华，俯仰乾坤野性赊。
千载勋名身外影，百岁荣辱镜中花。

金樽潦倒秋将暮，蕙径萧瑟日且斜。
闻道五湖烟境好，何缘蓑笠钓汀沙。

※ 来源:·BBS 水木清华站 smth.org·[FROM: 162.105.16.253]


Re: 谁先说说xml怎么用吧

 发信人: yanglc (魂归燕园~~别理我，烦着呢), 信区: XML
标 题: Re: 谁先说说xml怎么用吧
发信站: BBS 水木清华站 (Tue Apr 11 20:46:42 2000)

是不错的说，特别是那个排序。
现在就开始学xml:)
【 在 starw (☆★永恒の孤星★☆) 的大作中提到: 】
∶ 前面给过这个例子了,难道都没看?
∶ www.ipc.dhs.org/test.xml

--
http://www2.cs.uestc.edu.cn/~yanglc

※ 来源:·BBS 水木清华站 smth.org·[FROM: 162.105.22.143]


Re: 谁先说说xml怎么用吧

 发信人: veb (君), 信区: XML
标 题: Re: 谁先说说xml怎么用吧
发信站: BBS 水木清华站 (Tue Apr 11 20:52:12 2000)

【 在 egg (鸡蛋) 的大作中提到: 】
∶ 看完了这个例子怎么觉得这么辛苦啊……
∶ 看来xml不是给普通用户看的

别，
您看精华区的例子怎么样，^_^
//偶的目的就是不让大家知难而退。

--

Powered by eXtensible Markup Language

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.112.99.209]


Re: 谁先说说xml怎么用吧

 发信人: yangxuu (据说江西出美女), 信区: XML
标 题: Re: 谁先说说xml怎么用吧
发信站: BBS 水木清华站 (Tue Apr 11 22:21:50 2000)

【 在 yanglc (魂归燕园~~别理我，烦着呢) 的大作中提到: 】
∶ 怎么不行啊？出错。
∶ 无法显示 XML 页。
∶ 使用 XSL 样式表无法查看 XML 输入。请更正错误然后单击 刷新按钮，或以后重试。
∶ --------------------------------------------------------------------------------
∶ 只有默认的名称空间可以有空 URI。处理资源 'file://C:\yang\simple.xsl' 时出错。第 2 行，位置: 20
∶ <HTML xmlns:xsl="">">http://www.w3.org/TR/WD-xsl">
∶ -------------------^
真是罪过罪过，我原本是想让大家到xml联盟网站去下的，怕有些人偷懒，
所以贴出源码，结果把portfolio-schema.xml给漏了，请把下面代码加入到
文件名为portfolio-schema.xml的文件中：
<?xml version="1.0" ?>
<Schema xmlns="urn:schemas-microsoft-com:xml-data"
xmlns:dt="urn:schemas-microsoft-com:datatypes">

<ElementType name="date" dt:type="dateTime"/>
<ElementType name="description"/>

<ElementType name="symbol"/>
<ElementType name="name"/>
<ElementType name="price" dt:type="fixed.14.4"/>
<ElementType name="change" dt:type="fixed.14.4"/>
<ElementType name="percent" dt:type="fixed.14.4"/>
<ElementType name="volume" dt:type="fixed.14.4"/>

<ElementType name="portfolio" content="eltOnly">
<group minOccurs="0" maxOccurs="1">
<element type="description" />
</group>
<group minOccurs="0" maxOccurs="1">
<element type="date" />
</group>
<group minOccurs="1" maxOccurs="1">
<element type="stock" />
</group>
</ElementType>

<ElementType name="stock" content="eltOnly">
<element type="symbol" />
<element type="name" />
<element type="price" />
<element type="change" />
<element type="percent" />
<element type="volume" />
</ElementType>

</Schema>

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.136.36]


Re: 谁先说说xml怎么用吧

 发信人: littlesweet (小甜甜), 信区: XML
标 题: Re: 谁先说说xml怎么用吧
发信站: BBS 水木清华站 (Tue Apr 11 23:14:08 2000)

还是不行啊，说网页出错，
开始一部分是对的，后面不对。
【 在 yangxuu (据说江西出美女) 的大作中提到: 】
∶ 真是罪过罪过，我原本是想让大家到xml联盟网站去下的，怕有些人偷懒，
∶ 所以贴出源码，结果把portfolio-schema.xml给漏了，请把下面代码加入到
∶ 文件名为portfolio-schema.xml的文件中：
∶ <?xml version="1.0" ?>
∶ <Schema xmlns="urn:schemas-microsoft-com:xml-data"
∶ xmlns:dt="urn:schemas-microsoft-com:datatypes">
∶ <ElementType name="date" dt:type="dateTime"/>
∶ <ElementType name="description"/>
∶ <ElementType name="symbol"/>
∶ <ElementType name="name"/>
∶ <ElementType name="price" dt:type="fixed.14.4"/>
∶ <ElementType name="change" dt:type="fixed.14.4"/>
∶ <ElementType name="percent" dt:type="fixed.14.4"/>
∶ <ElementType name="volume" dt:type="fixed.14.4"/>
∶ <ElementType name="portfolio" content="eltOnly">
∶ <group minOccurs="0" maxOccurs="1">
∶ <element type="description" />
∶ </group>
∶ <group minOccurs="0" maxOccurs="1">
∶ <element type="date" />
∶ </group>
∶ <group minOccurs="1" maxOccurs="1">
∶ <element type="stock" />
∶ </group>
∶ </ElementType>
∶ <ElementType name="stock" content="eltOnly">
∶ <element type="symbol" />
∶ <element type="name" />
∶ <element type="price" />
∶ <element type="change" />
∶ <element type="percent" />
∶ <element type="volume" />
∶ </ElementType>
∶ </Schema>

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.117.114.61]


Re: 谁先说说xml怎么用吧

 发信人: huahua (摇摆你的幽默), 信区: XML
标 题: Re: 谁先说说xml怎么用吧
发信站: BBS 水木清华站 (Thu Apr 13 18:24:38 2000)

【 在 yangxuu (据说江西出美女) 的大作中提到: 】
∶ 真是罪过罪过，我原本是想让大家到xml联盟网站去下的，怕有些人偷懒，
∶ 所以贴出源码，结果把portfolio-schema.xml给漏了，请把下面代码加入到
∶ 文件名为portfolio-schema.xml的文件中：
∶ <?xml version="1.0" ?>
∶ <Schema xmlns="urn:schemas-microsoft-com:xml-data"
∶.........
∶ <group minOccurs="1" maxOccurs="1">
????
为什么是“1”，而不是“*”
觉得在这里应该是“*”?nbsp;
大家说那？
一个portfolio里好像是有好几个stock的说
∶ <element type="stock" />
∶ </group>
∶.........
∶ </Schema>

--
我们是爱好和平的,但我们不畏惧任何形式的战争!

※ 修改:·huahua 於 Apr 13 18:26:46 修改本文·[FROM: pplas.icas.ac.c]
※ 来源:·BBS 水木清华站 smth.org·[FROM: pplas.icas.ac.c]


Re: 谁先说说xml怎么用吧

 发信人: ningsong (笑三少~~想爱毕设不容易), 信区: XML
标 题: Re: 谁先说说xml怎么用吧
发信站: BBS 水木清华站 (Wed May 16 14:34:33 2001)

看了这个例子，很好啊，
但是它的xsl文件和scheme怎么能得到那？
【 在 starw (☆★永恒の孤星★☆) 的大作中提到: 】
∶ 前面给过这个例子了,难道都没看?
∶ www.ipc.dhs.org/test.xml

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 您无权查看] [50M[25

※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.171.103]
上一篇 返回上一页 回到目录 回到页首


Re: 这四个文件是什么关系？

 发信人: yangxuu (据说江西出美女), 信区: XML
标 题: Re: 这四个文件是什么关系？
发信站: BBS 水木清华站 (Wed Apr 12 16:08:15 2000)

【 在 perish (luck) 的大作中提到: 】
∶ 前面提到的例子中的四个文件是什么关系：
∶ 1 stock-sorter.xml
∶ 2 simple.xsl
∶ 3 complex.xsl
∶ 4 portfolio-schema.xml

既然这几个例子是我贴出来的,那就由我回答你吧.
stock-sorter.xml是一个xml文档,里面是关于股票的实际信息,
从浏览器显示的结果也可看出,但是目前xml文档并不能直接在浏
览器上看,必须结合xsl文档才能被ie5 看,你可以选择simple.xsl
或者complex.xsl嵌入到stock-sorter.xml中(在该文件的第一条语句
处作相应的修改),所以simple.xsl和complex.xsl是两者取其一个,
区别仅仅在效果上.
而portfolio-schema.xml是为上面这个stock-sorter.xml定义
格式的schema(schema不象DTD,它本身也是用XML写的),所以也是不可或缺的.
它在stock-sorter.xml的第二条语句声明.
说这么多,其实你用文本编辑器打开这个stock-sroter.xml看看就一切清楚了.

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.136.36]


Re: 谁知道哪有关于XML Schema的文档？谢谢！

 发信人: reedlotus (晨曦中的剪影), 信区: XML
标 题: Re: 谁知道哪有关于XML Schema的文档？谢谢！
发信站: BBS 水木清华站 (Fri Apr 14 01:58:04 2000)

DTD是SGML中的Schema机制。XML从SGML处继承了这一技术,并加以发展。
DTD的缺陷在于它不是用XML语言来写的,它不支持名域,所支持的的数据类型也非常有限.
但schema则支持丰富的数据类型如布尔型,数字,日期时间, URIs整数,十进制数,
实数,时间间隔,等等。而且还支持由这些简单的类型生成复杂的类型。
schema更能清晰地表达信息的内容和关系.

虽然说XML的 Schema将代替DTD,但在短期内DTD 还是有着它的优势的,如有广泛的工具支
持和应用经验等

【 在 yangxuu (据说江西出美女) 的大作中提到: 】
∶ 是要由Schema来取代DTD吗？
∶ 刚看了几天DTD,我对Schema一无所知。

--
※ 修改:·reedlotus 於 Apr 14 20:06:18 修改本文·[FROM: 202.114.1.206]
※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.114.1.206]


与Nullgate大侠探讨 (BM: inannan)

编号 | 类别 | 标题 | 编辑日期
1 | 文件 | 与Nullgate大侠探讨 inannan | 2001.05.25
2 | 文件 | Re: 与Nullgate大侠探讨 inannan | 2001.05.25
3 | 文件 | Re: 与Nullgate大侠探讨 inannan | 2001.05.25
4 | 文件 | Re: 与Nullgate大侠探讨 inannan | 2001.05.25
5 | 文件 | Re: 与Nullgate大侠探讨 inannan | 2001.05.25
6 | 文件 | Re: 与Nullgate大侠探讨 inannan | 2001.05.25
7 | 文件 | Re: 与Nullgate大侠探讨 inannan | 2001.05.25
8 | 文件 | Re: 与Nullgate大侠探讨 inannan | 2001.05.25
9 | 文件 | Re: 与Nullgate大侠探讨 inannan | 2001.05.25
10 | 文件 | Re: 与Nullgate大侠探讨 inannan | 2001.05.25
11 | 文件 | Re: 与Nullgate大侠探讨 inannan | 2001.05.25
12 | 文件 | Re: 用哪个XML编辑工具呢？ inannan | 2001.05.25
13 | 文件 | Re: 用哪个XML编辑工具呢？ inannan | 2001.05.25
14 | 文件 | Re: 用哪个XML编辑工具呢？ inannan | 2001.05.25
15 | 文件 | Re: 用哪个XML编辑工具呢？ inannan | 2001.05.25
16 | 文件 | Re: 用哪个XML编辑工具呢？ inannan | 2001.05.25
17 | 文件 | Re: 用哪个XML编辑工具呢？ inannan | 2001.05.25
18 | 文件 | Re: 用哪个XML编辑工具呢？ inannan | 2001.05.25
返回上一页 回到上一级目录


与Nullgate大侠探讨

 发信人: veb (君), 信区: XML
标 题: 与Nullgate大侠探讨
发信站: BBS 水木清华站 (Fri Apr 14 23:24:27 2000)

Nullgate大侠曾说不必等标准的出现等
见248等
我想，正所谓运用之妙，存乎一心。
标准当然十分重要，这就是sword所说的超一流公司卖标准。
可惜这些都在别人手中，就象OS,DB一样。

经过几天的思考，我想Nullgate的应用为本
也许是我们最可以做的。
其中包括最重要的语义。

至于什么时候中国也能出一个GATES,
见文238，239，240
任何一天都是一个机遇，如果我们努力，
但是应该说，这一天还是一个未知数。

--

Powered by eXtensible Markup Language

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.112.99.209]
返回上一页 回到目录 回到页首 下一篇


Re: 与Nullgate大侠探讨

 发信人: Nullgate (空门大师~补锅子的~用Perl), 信区: XML
标 题: Re: 与Nullgate大侠探讨
发信站: BBS 水木清华站 (Sun Apr 16 03:27:26 2000)

不敢当
我只是觉得工具就是拿来用的
你完全可以用XML来作游戏脚本标记，未必要等待所有的游戏用一种标记
【 在 veb (君) 的大作中提到: 】
∶ Nullgate大侠曾说不必等标准的出现等
∶ 见248等
∶ 我想，正所谓运用之妙，存乎一心。
∶ 标准当然十分重要，这就是sword所说的超一流公司卖标准。
∶ 可惜这些都在别人手中，就象OS,DB一样。
∶ 经过几天的思考，我想Nullgate的应用为本
∶ 也许是我们最可以做的。
∶ 其中包括最重要的语义。
∶ 至于什么时候中国也能出一个GATES,
∶ 见文238，239，240
∶ 任何一天都是一个机遇，如果我们努力，
∶ 但是应该说，这一天还是一个未知数。

--
水木清华BBS网友自编自导自演五幕荒诞喜剧《仲夏夜之梦2000》
4月15日晚7：15，北京海淀剧院，令你意想不到的精彩！
欲知详情请关注Drama版最新动态。

Perl资源： http://166.111.160.5/nullgate/perl/

※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.160.214]


Re: 与Nullgate大侠探讨

 发信人: veb (君), 信区: XML
标 题: Re: 与Nullgate大侠探讨
发信站: BBS 水木清华站 (Sun Apr 16 11:22:35 2000)

【 在 Nullgate (空门大师~补锅子的~用Perl) 的大作中提到: 】
∶ 不敢当
∶ 我只是觉得工具就是拿来用的
∶ 你完全可以用XML来作游戏脚本标记，未必要等待所有的游戏用一种标记

是的，XML的最大好处就是现在写的东西，
一般来说几十年以后还可以用，不用担心
什么兼容，OS，CPU的改朝换代。

即使同一领域出现不同的XML描述，也可以
方便的将它们集成或转换。

只是XML在模式(schema,又称纲要等)，超链方面
的不完善，势必影响其应用。

当然，在文件格式的表达上，
现在的XML应该完全够了，
事实上，Word的文件格式在word6.0开始就采用了
几乎完全相同的思想（可能更早）

--

Powered by eXtensible Markup Language

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.112.99.209]


Re: 与Nullgate大侠探讨

 发信人: holly (聪明的孩子,提着易碎的灯笼), 信区: XML
标 题: Re: 与Nullgate大侠探讨
发信站: BBS 水木清华站 (Sun Apr 16 11:43:42 2000)

【 在 veb (君) 的大作中提到: 】
∶ 是的，XML的最大好处就是现在写的东西，
∶ 一般来说几十年以后还可以用，不用担心
∶ 什么兼容，OS，CPU的改朝换代。
∶ 即使同一领域出现不同的XML描述，也可以
∶ 方便的将它们集成或转换。
∶ 只是XML在模式(schema,又称纲要等)，超链方面
∶ 的不完善，势必影响其应用。
∶ 当然，在文件格式的表达上，
∶ 现在的XML应该完全够了，
∶ 事实上，Word的文件格式在word6.0开始就采用了
∶ 几乎完全相同的思想（可能更早）

Word 从 6.0 开始使用的是 OLE Storage 方式存储. 不能说它怎么不好,
可是 Who knows its com objects? So it event doesn't compatible
among its own different versions! Its file format is garbage, I think

--
那悲歌总会在梦中清醒, 诉说一点哀伤过的往事
那看似漫不在乎转过身的, 是风干泪眼后萧瑟的影子

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.120.13.251]


Re: 与Nullgate大侠探讨

 发信人: veb (君), 信区: XML
标 题: Re: 与Nullgate大侠探讨
发信站: BBS 水木清华站 (Sun Apr 16 23:06:02 2000)

【 在 holly (聪明的孩子,提着易碎的灯笼) 的大作中提到: 】
∶ Word 从 6.0 开始使用的是 OLE Storage 方式存储. 不能说它怎么不好,
∶ 可是 Who knows its com objects? So it event doesn't compatible
∶ among its own different versions! Its file format is garbage, I think

holly兄好象跟word有点误会。

word的存储
从外面看是structed storage(or OLE storage???),
里面看内容与形式的分离，
这正是XML的精髓之一//瞎掰的，还有什么别的精髓？？hehe

//最后，要是想探讨com objects,咱们可以去白云黄鹤的COM版,
//我经常光顾的?hehe.

--

Powered by eXtensible Markup Language

※ 修改:·veb 於 Apr 16 23:09:03 修改本文·[FROM: 202.112.99.209]
※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.112.99.209]


Re: 与Nullgate大侠探讨

 发信人: holly (聪明的孩子,提着易碎的灯笼), 信区: XML
标 题: Re: 与Nullgate大侠探讨
发信站: BBS 水木清华站 (Mon Apr 17 09:15:00 2000)

【 在 veb (君) 的大作中提到: 】
∶ holly兄好象跟word有点误会。
∶ word的存储
∶ 从外面看是structed storage(or OLE storage???),
∶ 里面看内容与形式的分离，
∶ 这正是XML的精髓之一//瞎掰的，还有什么别的精髓？？hehe

您要是这么扯上去, 那么三国里面庞统献连环计, 黄盖使苦肉计
也是 XML 的精髓了?

说到内容与形式的分离, TeX 才是个最 original 的例子... word?
Just a garbage!

∶ //最后，要是想探讨com objects,咱们可以去白云黄鹤的COM版,
∶ //我经常光顾的?hehe.

呵呵...为什么不在这里呢? 版主不会反对吧.....

--
那悲歌总会在梦中清醒, 诉说一点哀伤过的往事
那看似漫不在乎转过身的, 是风干泪眼后萧瑟的影子

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.120.13.24]


Re: 与Nullgate大侠探讨

 发信人: SmileFat (胖胖), 信区: XML
标 题: Re: 与Nullgate大侠探讨
发信站: BBS 水木清华站 (Mon Apr 17 12:03:00 2000)

【 在 holly (聪明的孩子,提着易碎的灯笼) 的大作中提到: 】
∶ 您要是这么扯上去, 那么三国里面庞统献连环计, 黄盖使苦肉计
∶ 也是 XML 的精髓了?
∶ 说到内容与形式的分离, TeX 才是个最 original 的例子... word?
∶ Just a garbage!
∶ 呵呵...为什么不在这里呢? 版主不会反对吧.....

no,no,no.

I don't think so . I think word is perfect,maybe it is not better
than TeX(I have not seen Tex ever,//shy),but it is easy to use.
And I think maybe people like to use word more.
And the more , so many codes(thousands of lines of codes) running
without error occuring often is not an easy thing.

Maybe not so many people like Microsoft,but it does do a great change
to the computer world in the last ten years.

My English is not so good,forgive me,thx.

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.179.91]


Re: 与Nullgate大侠探讨

 发信人: cirrus (飘飘荡荡望眼欲穿千万盏街灯都为我点亮), 信区: XML
标 题: Re: 与Nullgate大侠探讨
发信站: BBS 水木清华站 (Mon Apr 17 12:45:13 2000)

Undocumented file format is a horrible disaster, :(

【 在 SmileFat (胖胖) 的大作中提到: 】
∶ no,no,no.
∶ I don't think so . I think word is perfect,maybe it is not better
∶ than TeX(I have not seen Tex ever,//shy),but it is easy to use.
∶ And I think maybe people like to use word more.
∶ And the more , so many codes(thousands of lines of codes) running
∶ without error occuring often is not an easy thing.
∶ Maybe not so many people like Microsoft,but it does do a great change
∶ to the computer world in the last ten years.
∶ My English is not so good,forgive me,thx.

--
※ 修改:·cirrus 於 Apr 17 12:45:34 修改本文·[FROM: 210.32.137.16]
※ 来源:·BBS 水木清华站 smth.org·[FROM: 210.32.137.16]


Re: 与Nullgate大侠探讨

 发信人: SmileFat (胖胖), 信区: XML
标 题: Re: 与Nullgate大侠探讨
发信站: BBS 水木清华站 (Mon Apr 17 13:05:24 2000)

【 在 cirrus (飘飘荡荡望眼欲穿千万盏街灯都为我点亮) 的大作中提到: 】
∶ Undocumented file format is a horrible disaster, :(

Maybe you are right.
But if Microsoft publish his doc format,I think someone will
delelop office for Linux compatible with word.So all the people do
will not be wasted in Linux . Many people would like to use word
for Linux just like me.

I think Windows is not something.But why it has came so popular,the
most reason is that there are so many applications written for it
And most of which are easy for use.

Let's talk about XML,no more extension.The master will be angry.

--
※ 修改:·SmileFat 於 Apr 17 13:06:00 修改本文·[FROM: 166.111.179.89]
※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.179.89]


Re: 与Nullgate大侠探讨

 发信人: veb (君), 信区: XML
标 题: Re: 与Nullgate大侠探讨
发信站: BBS 水木清华站 (Tue Apr 18 20:17:15 2000)

【 在 holly (聪明的孩子,提着易碎的灯笼) 的大作中提到: 】
∶ 您要是这么扯上去, 那么三国里面庞统献连环计, 黄盖使苦肉计
∶ 也是 XML 的精髓了?
∶ 说到内容与形式的分离, TeX 才是个最 original 的例子... word?
∶ Just a garbage!
∶ 呵呵...为什么不在这里呢? 版主不会反对吧.....

不会吧，TeX才是最origunal的，恐怕是最不...
还望先生教我这个。//bow

//尽管如此，我对克鲁斯先生开始很佩服的。对TeX还是很佩服的。

--

Powered by eXtensible Markup Language

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.112.99.209]


Re: 与Nullgate大侠探讨

 发信人: lanyjie (收复台湾), 信区: XML
标 题: Re: 与Nullgate大侠探讨
发信站: BBS 水木清华站 (Mon Apr 24 22:27:20 2000)

The time is now for open and universal specifications
the time is for connectivity and sharing
It is better that you come up with wonderful ideas and
quickly share it with others
or your ideas might become obsolete soon!
So with the software and so on
Closing yourself up and guarding your ideas
means nothing but suciding!

【 在 SmileFat (胖胖) 的大作中提到: 】
∶ Maybe you are right.
∶ But if Microsoft publish his doc format,I think someone will
∶ delelop office for Linux compatible with word.So all the people do
∶ will not be wasted in Linux . Many people would like to use word
∶ for Linux just like me.
∶ I think Windows is not something.But why it has came so popular,the
∶ most reason is that there are so many applications written for it
∶ And most of which are easy for use.
∶ Let's talk about XML,no more extension.The master will be angry.

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 162.105.40.80]


Re: 用哪个XML编辑工具呢？

 发信人: yangxuu (据说江西出美女), 信区: XML
标 题: Re: 用哪个XML编辑工具呢？
发信站: BBS 水木清华站 (Thu Apr 13 21:28:47 2000)

【 在 luxiaoyun (小云) 的大作中提到: 】
∶ 欧看了无废话XML，花了好长的时间下了XML的解释器和XSL的处理器，现在欧想自己编编
∶ 看，用文本编辑器可以吗？还是要用个专门的XML编辑器？
∶ 土问题一个，各位大虾介绍一下。

文本编辑器可以,只要存成.xml就行.

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.136.36]


Re: 用哪个XML编辑工具呢？

 发信人: starw (☆★永恒の孤星★☆), 信区: XML
标 题: Re: 用哪个XML编辑工具呢？
发信站: BBS 水木清华站 (Fri Apr 14 00:38:34 2000)

xmlspy+editplus

【 在 luxiaoyun (小云) 的大作中提到: 】
∶ 欧看了无废话XML，花了好长的时间下了XML的解释器和XSL的处理器，现在欧想自己编编
∶ 看，用文本编辑器可以吗？还是要用个专门的XML编辑器？
∶ 土问题一个，各位大虾介绍一下。

--

寒山惟白云，寂寂绝埃尘。草座山家有，孤灯明月轮。
石床临碧沼，鹿虎每为邻。自羡幽居乐，长为世外人。

※ 来源:·BBS 水木清华站 smth.org·[FROM: ftp.xjtu.edu.cn]


Re: 用哪个XML编辑工具呢？

 发信人: starw (☆★永恒の孤星★☆), 信区: XML
标 题: Re: 用哪个XML编辑工具呢？
发信站: BBS 水木清华站 (Sun Apr 16 18:16:35 2000)

2.5版的有crack...
ftp://ftp.ipc.dhs.org/Tools/HomePageTools/XMLSpy/

【 在 SmileFat (胖胖) 的大作中提到: 】
∶ faint,only 30 days

--

寒山惟白云，寂寂绝埃尘。草座山家有，孤灯明月轮。
石床临碧沼，鹿虎每为邻。自羡幽居乐，长为世外人。

※ 来源:·BBS 水木清华站 smth.org·[FROM: 27_35.xjtu.edu.]


Re: 用哪个XML编辑工具呢？

 发信人: winterspring (今东明春), 信区: XML
标 题: Re: 用哪个XML编辑工具呢？
发信站: BBS 水木清华站 (Mon Apr 17 02:02:03 2000)

我用的是visual xml,很cool!

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.119.9.156]


Re: 用哪个XML编辑工具呢？

 发信人: lkd (可能在线,不详。), 信区: XML
标 题: Re: 用哪个XML编辑工具呢？
发信站: BBS 水木清华站 (Mon Apr 17 09:04:28 2000)

【 在 winterspring (今东明春) 的大作中提到: 】
∶ 我用的是visual xml,很cool!

Java的，俺的机子跑不动

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.187.250]


Re: 用哪个XML编辑工具呢？

 发信人: winterspring (今东明春), 信区: XML
标 题: Re: 用哪个XML编辑工具呢？
发信站: BBS 水木清华站 (Fri Apr 21 06:37:08 2000)

【 在 village (太阳游子) 的大作中提到: 】
∶ where can I find it? thank you very much
http://www.pierlou.com/visxml/

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.119.9.156]


Re: 用哪个XML编辑工具呢？

 发信人: planeman (唐糖), 信区: XML
标 题: Re: 用哪个XML编辑工具呢？
发信站: BBS 水木清华站 (Fri Apr 21 11:42:34 2000)

我早就在用了，但是我觉得它是基于java的，所以我的机子上运行的速度很慢
而且那个又是测试版，又太多的bugs，所以我觉得不好用，我现在用的是
xmlwriter,挺好用的！还有ms的xml notepad也是很好用的，
但唯一的粗缺点就是不支持中文！

【 在 winterspring (今东明春) 的大作中提到: 】
∶ http://www.pierlou.com/visxml/

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.119.230.80]
上一篇 返回上一页 回到目录 回到页首


Re: XML必须用于生成XML和HTML输出吗？

 发信人: veb (君), 信区: XML
标 题: Re: XML必须用于生成XML和HTML输出吗？
发信站: BBS 水木清华站 (Sun Apr 16 22:47:51 2000)

【 在 jenky (东东) 的大作中提到: 】
∶ 问：
∶ XML不能定义或包含演示信息，对吗
∶ XML用于描述层次化信息，对吗？
∶ 谢了

1。不是
2。还是不是
XSL就是XML的一种
XML可以描述任何信息。//有反例吗？呵呵

正因为XML可以描述任何信息，所以可以描述显示信息（演示信息）。

--

Powered by eXtensible Markup Language

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.112.99.209]


Re: WML文件怎么编译呢?

 发信人: lemon (eir), 信区: XML
标 题: Re: WML文件怎么编译呢?
发信站: BBS 水木清华站 (Mon Apr 17 22:35:14 2000)

wap server可以由web server来做，
将mime type设好就可以了，没有
什么特别的，解释wml文件是wml
浏览器的事（如wap手机或pc上的
wap模拟器）。
对于server端来说，wap没有什么
特别的，用的协议也是http协议，
区别只是在internet和wap设备
之间多了一个协议转换的网关。
【 在 marc (Parser) 的大作中提到: 】
∶ 由wap server 来做吧。

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.10.74]


wml不能显示中文？ (BM: inannan)

编号 | 类别 | 标题 | 编辑日期
1 | 文件 | wml不能显示中文？ inannan | 2001.05.25
2 | 文件 | Re: wml不能显示中文？ inannan | 2001.05.25
3 | 文件 | Re: wml不能显示中文？ inannan | 2001.05.25
4 | 文件 | Re: wml不能显示中文？ inannan | 2001.05.25
5 | 文件 | Re: wml不能显示中文？ inannan | 2001.05.25
6 | 文件 | Re: wml不能显示中文？ inannan | 2001.05.25
7 | 文件 | Re: wml不能显示中文？ inannan | 2001.05.25
8 | 文件 | Re: wml不能显示中文？ inannan | 2001.05.25
9 | 文件 | Re: wml不能显示中文？ inannan | 2001.05.25
返回上一页 回到上一级目录


wml不能显示中文？

 发信人: midsnow (小雪), 信区: XML
标 题: wml不能显示中文？
发信站: BBS 水木清华站 (Tue Apr 18 13:58:00 2000)

我在ericsson和nokia以及up.sdk上都试过了，
就是不能显示中文。
不知道是手机模拟器的问题还是其他原因。
该如何解决呢？

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.136.176]
返回上一页 回到目录 回到页首 下一篇


Re: wml不能显示中文？

 发信人: aBadBoy (死烂死烂的坏坏小子), 信区: XML
标 题: Re: wml不能显示中文？
发信站: BBS 水木清华站 (Tue Apr 18 17:49:21 2000)

我用的up.sdk是可以显示中文的
不过要到setting->device setting中去设置中文选项

在 midsnow (小雪) 的大作中提到: 】
∶ 我在ericsson和nokia以及up.sdk上都试过了，
∶ 就是不能显示中文。
∶ 不知道是手机模拟器的问题还是其他原因。
∶ 该如何解决呢？

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 162.105.170.66]


Re: wml不能显示中文？

 发信人: midsnow (小雪), 信区: XML
标 题: Re: wml不能显示中文？
发信站: BBS 水木清华站 (Wed Apr 19 11:09:02 2000)

I have set it to chinese and chinese gb2312,
but it still can not display chinese character......
is it gateway problem?
my computers gateway is 166.111.1.1
thanks.
【 在 aBadBoy (死烂死烂的坏坏小子) 的大作中提到: 】
∶ 我用的up.sdk是可以显示中文的
∶ 不过要到setting->device setting中去设置中文选项

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.136.176]


Re: wml不能显示中文？

 发信人: JoyKiller (都市里的黑衣人), 信区: XML
标 题: Re: wml不能显示中文？
发信站: BBS 水木清华站 (Wed Apr 19 11:52:55 2000)

nokia wap toolkit只支持UNICODE，
用中文写的页面要先存为UNICODE文件，
再用模拟器就好了。
up 的是直接支持中文的。

但是NOKIA的网关是不支持GB2312，
而是UNICODE的。

【 在 midsnow (小雪) 的大作中提到: 】
∶ I have set it to chinese and chinese gb2312,
∶ but it still can not display chinese character......
∶ is it gateway problem?
∶ my computers gateway is 166.111.1.1
∶ thanks.

--

宠辱不惊花开花落,
去留无意云卷云舒.

※ 来源:·BBS 水木清华站 smth.org·[FROM: 159.226.41.166]


Re: wml不能显示中文？

 发信人: aBadBoy (死烂死烂的坏坏小子), 信区: XML
标 题: Re: wml不能显示中文？
发信站: BBS 水木清华站 (Wed Apr 19 12:25:23 2000)

跟网关没关系吧。
英文的你可以显示？
中文的显示乱码还是根本就连不上？
不要设代理试试连www.cwap.com
【 在 midsnow (小雪) 的大作中提到: 】
∶ I have set it to chinese and chinese gb2312,
∶ but it still can not display chinese character......
∶ is it gateway problem?
∶ my computers gateway is 166.111.1.1
∶ thanks.

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 162.105.170.66]


Re: wml不能显示中文？

 发信人: midsnow (小雪), 信区: XML
标 题: Re: wml不能显示中文？
发信站: BBS 水木清华站 (Wed Apr 19 13:39:35 2000)

【 在 aBadBoy (死烂死烂的坏坏小子) 的大作中提到: 】
∶ 跟网关没关系吧。
∶ 英文的你可以显示？
∶ 中文的显示乱码还是根本就连不上？
英文可以正常显示,但是中文显示是一串"?"
不知怎么回事? wuwu
∶ 不要设代理试试连www.cwap.com

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.136.173]


Re: wml不能显示中文？

 发信人: haoliao (好了), 信区: XML
标 题: Re: wml不能显示中文？
发信站: BBS 水木清华站 (Wed Apr 19 14:57:22 2000)

你用的UP. Simulator是什么版本的，只有4.0
版本能显示中文，其它的版本不行?nbsp;

【 在 midsnow (小雪) 的大作中提到: 】
∶ 英文可以正常显示,但是中文显示是一串"?"
∶ 不知怎么回事? wuwu

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 162.105.170.72]


Re: wml不能显示中文？

 发信人: midsnow (小雪), 信区: XML
标 题: Re: wml不能显示中文？
发信站: BBS 水木清华站 (Wed Apr 19 16:37:58 2000)

哪里有4.0版。？
thanks.
【 在 haoliao (好了) 的大作中提到: 】
∶ 你用的UP. Simulator是什么版本的，只有4.0
∶ 版本能显示中文，其它的版本不行?nbsp;

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.136.176]


Re: wml不能显示中文？

 发信人: midsnow (小雪), 信区: XML
标 题: Re: wml不能显示中文？
发信站: BBS 水木清华站 (Wed Apr 19 17:29:26 2000)

终于找到了。把它贴出来：
www.cwap.com
www.wapdm.com
www.wapschool.com.cn
这些都是国内能联上的。

【 在 midsnow (小雪) 的大作中提到: 】
∶ 哪里有4.0版。？
∶ thanks.

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.136.176]
上一篇 返回上一页 回到目录 回到页首


Re: 问个弱问题吧

 发信人: reedlotus (晨曦中的剪影), 信区: XML
标 题: Re: 问个弱问题吧
发信站: BBS 水木清华站 (Wed Apr 19 21:19:48 2000)

CSS是作为增强HTML的格式化能力而提出的,
它使web作者可指定web页面的格式化限制,从而能够在
web页面中使用同一个HTML元素的不同版本.

由于CSS将定义结构的部分和定义格式的部分分离,
我们能够对页面的布局施加更多的控制。同时,
也将我们从HTML臃肿不堪的编码中解脱出来.

CSS同样可用于XML,但是XSL和CSS不同的地方在于:

CSS是对XML文件中的各个成分的外观属性逐一设定,
然后由浏览器按照CSS的设定将XML文件表现出来.

XSL的不同之处在于,它是将XML文件从一种格式转换
成另一种格式
XML file1---------->XML file2
XSL转换

虽然CSS对HTML之与XSL对XML都是想达到
实现内容和表现形式的分离的目的,但前者
乃事后补救之措施,后者才是真正的从思想
根本上解决问题

【 在 windride (一欲成风) 的大作中提到: 】
∶ 那是不是说
∶ html---xml
∶ css----xsl?

--
※ 修改:·reedlotus 於 Apr 19 21:23:23 修改本文·[FROM: 202.114.1.206]
※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.114.1.206]


Re: WML的问题，这里问可以吧

 发信人: JoyKiller (都市里的黑衣人), 信区: XML
标 题: Re: WML的问题，这里问可以吧
发信站: BBS 水木清华站 (Thu Apr 20 16:58:54 2000)

如果是静态的WML文件，
想通过中国移动的NOKIA NAMP平台，
就必须支持UTF-8或UNICODE。
但是可以用ASP，或者SERVLET等动态从SERVER端编码后输出。

【 在 lemon (eir) 的大作中提到: 】
∶ 还是古老的中文的问题：
∶ 在用户使用中国移通的wap网关的前提下，
∶ 如果要用户手机正确的浏览中文，到底
∶ 要做哪些工作？
∶ 昨天晚上搞了一个通宵，看了各种资料，
∶ 找遍了各个wap讨论区，试了各种方法，
∶ 服务器端的"charset=gb2312"，wml上的
∶ "xml:lang=zh"，...作的各种组合，汉字
∶ 还是不能正常显示!(wap手机，非模拟器)
∶ 难道只能将汉字转为unicode或utf-8才可以？
∶ 哪位大侠请指教，谢谢了。

--

宠辱不惊花开花落,
去留无意云卷云舒.

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.106.245.176]


Re: WML的设备无关性

 发信人: niguozan (不是mm), 信区: XML
标 题: Re: WML的设备无关性
发信站: BBS 水木清华站 (Sat Apr 22 12:20:49 2000)

【 在 lemon (eir) 的大作中提到: 】
∶ WML作为base on XML的东西，应当继承了XML的一些优势吧
∶ 听人说用WML(或XML)加XSL可以做到一套页面适应多种不同
∶ 手机显示设备，例如既能适应N7110的小屏幕，同时在摩托
∶ 罗拉太极的大屏幕上正确显示。
∶ 这个是不是用XLS做到的，我对XSL没有太多的了解，是不是
∶ 是同HTML的CSS对应的东西？按我的理解，实现上面的功能是
∶ 不是就是对于不同的手机，对应的XSL文件是不一样的？这样
∶ WML文件加上不同的XSL文件，就可以被解释成不同的样式？
这个是你的访问客户端做的
换句话说什么修改也不需要
wml里面早就考虑到了这一点
详细的只有看规范了:(
∶ 以上也是我自己的猜测，哪位大侠知道详细的情况，能不能
∶ 给个解释？
∶ 另外，WML是怎样基于XML的？这个我也不太懂，希望有人能
∶ 讲解讲解。
xml是meta language
即描述语言的语言
wml只不过使用xml作为其描述而已

--
我要是能够忘记什么的话
我希望是你
我要是能够记得什么的话
我希望是你

※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.173.63]


unix下，有XML解释么？ (BM: inannan)

编号 | 类别 | 标题 | 编辑日期
1 | 文件 | unix下，有XML解释么？ inannan | 2001.05.25
2 | 文件 | Re: unix下，有XML解释么？ inannan | 2001.05.25
3 | 文件 | Re: unix下，有XML解释么？ inannan | 2001.05.25
4 | 文件 | Re: unix下，有XML解释么？ inannan | 2001.05.25
5 | 文件 | Re: unix下，有XML解释么？ inannan | 2001.05.25
返回上一页 回到上一级目录


unix下，有XML解释么？

 发信人: lemon (eir), 信区: XML
标 题: unix下，有XML解释么？
发信站: BBS 水木清华站 (Sun Apr 23 18:06:05 2000)

我也不太懂，有没有解释XML+XSL的库函数之类的，
可以在函数中调用的？

--
※ 修改:·lemon 於 Apr 23 18:07:01 修改本文·[FROM: 166.111.11.156]
※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.11.156]
返回上一页 回到目录 回到页首 下一篇


Re: unix下，有XML解释么？

 发信人: holly (聪明的孩子,提着易碎的灯笼), 信区: XML
标 题: Re: unix下，有XML解释么？
发信站: BBS 水木清华站 (Sun Apr 23 18:07:42 2000)

【 在 lemon (eir) 的大作中提到: 】
∶ 我也不太懂，有没有解释XML+XSL的库函数之类的，
∶ 可以在函数中调用的？

DOM or SAX
--
那悲歌总会在梦中清醒, 诉说一点哀伤过的往事
那看似漫不在乎转过身的, 是风干泪眼后萧瑟的影子

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.120.13.251]


Re: unix下，有XML解释么？

 发信人: lemon (eir), 信区: XML
标 题: Re: unix下，有XML解释么？
发信站: BBS 水木清华站 (Sun Apr 23 18:09:29 2000)

免费的么？能解释详细一点么？
Linux下有么？
【 在 holly (聪明的孩子,提着易碎的灯笼) 的大作中提到: 】
∶ DOM or SAX

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.11.156]


Re: unix下，有XML解释么？

 发信人: marc (Parser), 信区: XML
标 题: Re: unix下，有XML解释么？
发信站: BBS 水木清华站 (Mon Apr 24 15:54:16 2000)

java的PARSER都应该可以用，还有ibm的c++应该也有unix的版本，还有C的EXPAT。
DOM接口和SAX接口都有。
要用XSL,JAVA的有，好像C的没有听说。

【 在 lemon (eir) 的大作中提到: 】
∶ 我也不太懂，有没有解释XML+XSL的库函数之类的，
∶ 可以在函数中调用的？

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 162.105.170.65]


Re: unix下，有XML解释么？

 发信人: lemon (eir), 信区: XML
标 题: Re: unix下，有XML解释么？
发信站: BBS 水木清华站 (Mon Apr 24 21:07:52 2000)

XSL解释这么难么？
微软好像搞得不错

【 在 Nullgate (空门大师~Perl传教士) 的大作中提到: 】
∶ perl有到expat的接口，并计划做到解释器内部
∶ 有DOM接口
∶ XSL没戏

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.10.221]
上一篇 返回上一页 回到目录 回到页首


xml打印

 发信人: marc (Parser), 信区: XML
标 题: xml打印
发信站: BBS 水木清华站 (Thu Apr 27 08:52:11 2000)

可以试一试用DSSSL，JADE现在好像有pdf，rtf，TeX的backend。
xsl的fo也是参照dsssl的作的。
【 在 zzy28 (紫竹) 的大作中提到: 】
∶ 如何使用xml以打印形式发布？？？
∶ fo规范好象尚未成型，要实现打印该如何做？

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 162.105.170.65]


Re: up.sdk 4.0 无法浏览本地文件，奇怪？？

 发信人: magicbear (魔术熊), 信区: XML
标 题: Re: up.sdk 4.0 无法浏览本地文件，奇怪？？
发信站: BBS 水木清华站 (Thu Apr 27 19:41:10 2000)

【 在 wholehope (jacky ) 的大作中提到: 】
∶ 下载的up.sdk4.0无法浏览本地文件
∶ 报错如下?nbsp;
∶ 模拟器: failed to open files: c:\my documents\china.wml
∶ dos窗口：uncompiled data from file is 272 byte
∶ ...found content-type text/vnd.wap.wml
∶ compiled wap binary is 120 bytes.
∶ 但是如果把本地文件设为home 却能正确显示！
∶ 我已爱的它五体投地！
∶ 大虾救命！
你在你的HOME里添加个连接不久可以了吗？
而且你可以在本地开一个webserver呀!

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 162.105.16.253]


可以将xml转换成pdf格式的文件吗? (BM: inannan)

编号 | 类别 | 标题 | 编辑日期
1 | 文件 | Re: 可以将xml转换成pdf格式的文件吗？ inannan | 2001.05.25
2 | 文件 | Re: 可以将xml转换成pdf格式的文件吗？ inannan | 2001.05.25
3 | 文件 | Re: 可以将xml转换成pdf格式的文件吗？ inannan | 2001.05.25
4 | 文件 | Re: 可以将xml转换成pdf格式的文件吗？ inannan | 2001.05.25
5 | 文件 | Re: 可以将xml转换成pdf格式的文件吗？ inannan | 2001.05.25
6 | 文件 | Re: 可以将xml转换成pdf格式的文件吗？ inannan | 2001.05.25
7 | 文件 | Re: 可以将xml转换成pdf格式的文件吗？ inannan | 2001.05.25
返回上一页 回到上一级目录


Re: 可以将xml转换成pdf格式的文件吗？

 发信人: heartsong (一只耳), 信区: XML
标 题: Re: 可以将xml转换成pdf格式的文件吗？
发信站: BBS 水木清华站 (Wed May 3 23:24:21 2000)

折合xml无关，只要软件支持就行了。

【 在 zzy28 (紫竹) 的大作中提到: 】
∶ 问题如题。
∶ 请教各位高手！

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.160.121]
返回上一页 回到目录 回到页首 下一篇


Re: 可以将xml转换成pdf格式的文件吗？

 发信人: Quixon (I love suzhe's lover), 信区: XML
标 题: Re: 可以将xml转换成pdf格式的文件吗？
发信站: BBS 水木清华站 (Thu May 4 11:04:53 2000)

理论上当然是可以的
实际中也有应用
例如 DocBook 就是一种应用很广泛的 SGML DTD, 现在新的版本也符合 XML;
如果你有 jade 这套工具的话, 就可以用 db2pdf 将你的符合DocBook DTD的XML文档转成
PDF(或其他格式如PS, HTML)

【 在 zzy28 (紫竹) 的大作中提到: 】
∶ 问题如题。
∶ 请教各位高手！

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.161.104]


Re: 可以将xml转换成pdf格式的文件吗？

 发信人: zzy28 (紫竹), 信区: XML
标 题: Re: 可以将xml转换成pdf格式的文件吗？
发信站: BBS 水木清华站 (Fri May 5 23:32:55 2000)

我如何查到pdf的格式标准呢？它是公开的吗？
另外我想将xml转换成pdf的目的是实现xml文档的打印输出，请问是否可以用其他的办法?nbsp;
实现？

【 在 yangxuu (据说江西出美女) 的大作中提到: 】
∶ 编写相应的软件就行了，实际上，我的师兄师姐前
∶ 一段时间就编了一个类似的程序。

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: buaa602.buaa.ed]


Re: 可以将xml转换成pdf格式的文件吗？

 发信人: zzy28 (紫竹), 信区: XML
标 题: Re: 可以将xml转换成pdf格式的文件吗？
发信站: BBS 水木清华站 (Fri May 5 23:40:57 2000)

我手里有jade，不过是随书附来的。好象只能将sgml转成rtf格式，您说的是不是
新版的jade，请问我该从哪里下载？

【 在 Quixon (I love suzhe's lover) 的大作中提到: 】
∶ 理论上当然是可以的
∶ 实际中也有应用
∶ 例如 DocBook 就是一种应用很广泛的 SGML DTD, 现在新的版本也符合 XML;
∶ 如果你有 jade 这套工具的话, 就可以用 db2pdf 将你的符合DocBook DTD的XML文档转成
∶ PDF(或其他格式如PS, HTML)

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: buaa602.buaa.ed]


Re: 可以将xml转换成pdf格式的文件吗？

 发信人: althea (痛并快乐着), 信区: XML
标 题: Re: 可以将xml转换成pdf格式的文件吗？
发信站: BBS 水木清华站 (Sat May 6 00:48:57 2000)

SuSE Linux v6.3里面就有jade
【 在 zzy28 (紫竹) 的大作中提到: 】
∶ 我手里有jade，不过是随书附来的。好象只能将sgml转成rtf格式，您说的是不是
∶ 新版的jade，请问我该从哪里下载？

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 162.105.179.14]


Re: 可以将xml转换成pdf格式的文件吗？

 发信人: maht (Trill-TimeKiller), 信区: XML
标 题: Re: 可以将xml转换成pdf格式的文件吗？
发信站: BBS 水木清华站 (Sat May 6 10:56:40 2000)

【 在 zzy28 (紫竹) 的大作中提到: 】
∶ 我如何查到pdf的格式标准呢？它是公开的吗？
∶ 另外我想将xml转换成pdf的目的是实现xml文档的打印输出，请问是否可以用其他的办法?nbsp;
∶ 实现？

Apache Cocoon 的可以让你把XML转换成一个PDF
访问
xml.apache.org

--

维特根斯坦: 对不能说出的我们只能沉默。

※ 来源:·BBS 水木清华站 smth.org·[FROM: czhou.math.tsin]


Re: 可以将xml转换成pdf格式的文件吗？

 发信人: yangxuu (据说江西出美女), 信区: XML
标 题: Re: 可以将xml转换成pdf格式的文件吗？
发信站: BBS 水木清华站 (Sat May 6 12:57:28 2000)

【 在 zzy28 (紫竹) 的大作中提到: 】
∶ 我如何查到pdf的格式标准呢？它是公开的吗？
acrobat网站里应该有的，它的一个产品PostScript就有很完整的
reference manual.

∶ 另外我想将xml转换成pdf的目的是实现xml文档的打印输出，请问是否可以用其他的办法?nbsp;
∶ 实现？

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.136.36]
上一篇 返回上一页 回到目录 回到页首


Re: 请高手指教

 发信人: marc (Parser), 信区: XML
标 题: Re: 请高手指教
发信站: BBS 水木清华站 (Tue May 9 08:46:00 2000)

目前浏览器还不支持format object.
你可以用一些其他工具，如apache的fop.
如果只是用来在browser里显示，就不要用fo:XXX，用html的元素。
【 在 zrdl (Clown) 的大作中提到: 】
∶ 编了如下的样式表文件：
∶ <?xml version="1.0" encoding="gb2312"?>
∶ <xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl" xmlns:fo="http://w
∶ ww.w3.org /TR/WD-xsl/FO" result-ns="fo">
∶ <!--用于ToFrom.xml-->
∶ <xsl:template match="/">
∶ <xsl:for-each select="信息集/信息">
∶ <fo:page-sequence font-size="50pt" font-weight="bold" font-family=
∶ "Georgia">
∶ <xsl:value-of select="发信人"/>
∶ <xsl:value-of select="主题"/>
∶ <xsl:value-of select="收信人"/>说：
∶ </fo:page-sequence>
∶ <DIV STYLE="background-color:green;color:white;padding:10px">
∶ <SPAN STYLE="font-weight:bold; color:white">
∶ <xsl:value-of select="主体"/>
∶ </SPAN>
∶ </DIV>
∶ </xsl:for-each>
∶ </xsl:template>
∶ </xsl:stylesheet>
∶ 有东西显示，但是使用fo段中的字体不能显示出来（没有使用粗体）。请各位高手帮忙！

--
※ 修改:·marc 於 May 9 11:28:11 修改本文·[FROM: 162.105.170.65]
※ 来源:·BBS 水木清华站 smth.org·[FROM: 162.105.170.65]


Re: Win98下用PWS能搭建Wap服务吗,怎样设置?

 发信人: weffen (wef), 信区: XML
标 题: Re: Win98下用PWS能搭建Wap服务吗,怎样设置?
发信站: BBS 水木清华站 (Thu May 4 13:05:26 2000)

只要你的webserver支持wml,就可以支持wap
但是把你的server拿到电信或联通才可以让人访问

【 在 YZC (阿凯) 的大作中提到: 】

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.144.186]
发信人: stanford2002 (天哪，我怎么啦), 信区: XML
标 题: Re: Win98下用PWS能搭建Wap服务吗,怎样设置?
发信站: BBS 水木清华站 (Thu May 11 20:31:06 2000)

用pws不能建立WAP环境
WAP需要MIME.TYPE的支持
PWS做不到，
只要你有固定的IP地址，别人就可以访问你的WAP站点。
不需要GATEWAY，除非你很有钱。
通过电信的GATEWAY，同样可以访问。

欢迎用手机访问WWW.SINOPALM.COM

【 在 weffen (wef) 的大作中提到: 】
∶ 只要你的webserver支持wml,就可以支持wap
∶ 但是把你的server拿到电信或联通才可以让人访问

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.86.4]
发信人: haoliao (好了), 信区: XML
标 题: Re: Win98下用PWS能搭建Wap服务吗,怎样设置?
发信站: BBS 水木清华站 (Fri May 19 14:27:19 2000)

用PWS可以建立WAP服务，请
参看www.xml.net.cn中的移动通讯篇中的文章

【 在 stanford2002 (天哪，我怎么啦) 的大作中提到: 】
∶ 用pws不能建立WAP环境
∶ WAP需要MIME.TYPE的支持
∶ PWS做不到，
∶ 只要你有固定的IP地址，别人就可以访问你的WAP站点。
∶ 不需要GATEWAY，除非你很有钱。
∶ 通过电信的GATEWAY，同样可以访问。
∶ 欢迎用手机访问WWW.SINOPALM.COM

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 162.105.170.76]


Re: XPath里面能够使用正则表达式吗？

 发信人: alou (lou), 信区: XML
标 题: Re: XPath里面能够使用正则表达式吗？
发信站: BBS 水木清华站 (Fri May 12 20:06:03 2000)

【 在 alou (lou) 的大作中提到: 】
∶ 比如说现在有一些<Product>元素包含ID属性，
∶ 我希望将其中ID以"1"开头的元素找出来，想
∶ 当然的用
∶ select="//Product[@ID='1*']"
∶ 结果什么都没有匹配上，用1%, 1$也不行，
∶ 大家知道有什么办法解决？

解决了，在XPath里面找到了好多字符串函数，
用
select="//Product[substring(@ID), 1, 1)='1']"
简单搞掂。

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.112.101.154]


Re: document ::= prolog element Misc*

 发信人: veb (君), 信区: XML
标 题: Re: document ::= prolog element Misc*
发信站: BBS 水木清华站 (Sun May 14 18:05:55 2000)

【 在 veb (君) 的大作中提到: 】

还是解释一下：

document ::= prolog element Misc*
prolog ::= XMLDecl? Misc* (doctypedecl Misc*)?
Misc ::= Comment | PI | S

意思就是说：（自然语言不可能严格,但是也有可能不正确，
如1.中到底是不能为XML还是不能以他们开头，请指正)

1.注释或<?....?>(不能是XML,xml,Xml等）或一些空格等组成Misc(杂项?)
2.<?xml ... ?>或Misc或<!DOCTYPE ...>组成prolog(序言?)
3.element就不用解释了，就是<...>...</...>或<.../>（元素)
4.上面三个形成document（XML文档)

--

Powered by eXtensible Markup Language

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.112.99.209]


Re: 请问从技术角度讲，有没有可能做到这个要求？

 发信人: magicbear (魔术熊), 信区: XML
标 题: Re: 请问从技术角度讲，有没有可能做到这个要求？
发信站: BBS 水木清华站 (Tue Jun 13 01:14:10 2000)

【 在 quda (quda) 的大作中提到: 】
∶ 利用WML语言向手机发送一页CARD,用户可以通过1，2，3键向SERVER送回响应信息：同意
∶ ，不同意，挂起来。
∶ 好像不是那么容易实现，希望各位高手告知。
PHONE.COM的WAP BROWSER可以轻松实现这个功能，但好象其他的不行，具体的实现方法你
可以看PHONE.COM的文档！最近比较忙，只能提示这么多了！

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 162.105.16.253]


Re: ******关于xml作为数据交换的迷惑******

 发信人: scaner (生火上路), 信区: XML
标 题: Re: ******关于xml作为数据交换的迷惑******
发信站: BBS 水木清华站 (Fri Jul 28 12:31:29 2000)

我不明白这个安全是那个方面，和word2000支持xml有什么关系？
至于安全可以有很多解决方法，唯一要做的就是定一个大家
都能接受的标准就可以了。
不知道这个窃取和攻入内部有什么关系。

至于效率，那确实是看个人的感觉了。本来就没有逼迫你
非用xml不可了，什么事情都有所侧重的，对于一些应用
开放性更加重要，因此泛泛的谈什么效率问题，一点意义都没有。
【 在 veb (昵称显示失败...) 的大作中提到: 】
∶ xml的两大功能:数据表示与数据交换,
∶ 表示是一切(包括交换)的基础,只要你愿意,都可以用xml,
∶ 由于他比html强的地方,所有用xml+xsl编写网页顺理成章
∶ 以后可能是xml+xsl or xhtml的天下.当然html还得有一阵.
∶ 现在的所谓xsl就是xslt+html.
∶ 数据交换是一个更被看好的xml应用,尤其网络应用,分布式应用,
∶ 异构应用之间的通讯.
∶ 不过有两(表示,交换)都有问题:
∶ 1)安全性,word会用xml+xsl吗,当时看到word2000号称全面支持xml,
∶ 还以为word=xml+xsl,估计永远不会了.除非逼得ms快完蛋了.
∶ 交换也一样,采用xml后,只要被窃取了,更容易被攻入内部.
∶ ...................

--
明天的心，
要勇敢，也要自然
就象现在真诚简单。

※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.215.234]
发信人: flier (小海 //爱喝可乐^_^), 信区: XML
标 题: Re: ******关于xml作为数据交换的迷惑******
发信站: BBS 水木清华站 (Fri Jul 28 14:38:16 2000)

【 在 veb (昵称显示失败...) 的大作中提到: 】
∶ 如果word=xml+xsl,我用notepad就可以写.doc,微软的office还
∶ 怎么卖?
你看看现在word2k把文档存储成html时里面带的那些数据就
应该明白，用notepad手写基本上是不可能的，不过倒是有可能出现第三方
工具提供兼容，但这并不会影响office的销售
毕竟用户不是为了那个doc格式而去买他的
而如果格式开放后，对用户来说，只有好处不会有坏处
我觉得MS很有可能会在以后版本里面提供将OFFICE
文档保存为XML格式的功能，只不过这样做工程相当大
估计要出OLE3了，呵呵
∶ 用安全不太准确,不过想不出别的词.呵呵(就是开放的反义词: > )
实际上这个局面很像个人计算机刚刚出现的年代
各个大公司推出的都是只能使用本公司硬件，本公司软件的计算机
而通用型计算机必定会取代这种模式
对程序来说也是一样的，通用型，开放式的数据存储（基于XML）
必定会取代专用的，私有的数据存储格式
实际上MS当初推出OLE就是有这个企图，结构化存储就是在向这方面努力
但是不幸的是OLE技术本身也是非开放式的……所以，以后只有看XML了
∶ 不过,公司内部等小范围的应用,开发性不重要.
∶ 而象数字图书馆,网络协议等应用,开放性无疑很重要,不过他们
∶ 一般不会让我们接触这些东西. : (
∶ 国内的开发还都是层次很低的说,corba,com的应用也还在初级阶段.
nod,这样下去会被国外越甩越远……令人担忧
∶ 偶以前搞com应用,结果使得别人在外面可以生成/转换属于我们自己的格式,
∶ 太危险了!
hehe，我觉得这种观念是错误的，
格式是你定的，也就是说游戏规则是你定的
别人用你的格式，就要遵照你的游戏规则，
这还不好吗？:) 如果是我笑还来不及呢，呵呵
不过你得相信并且做到“我的XXX是最好的！" :)
如果你的软件功能上不如别人，格式再保密也没有
别人只怕根本不屑于兼容你的软件呢，和恶化

--
. 生命的意义在于 /\ ____\ /\_ \ /\_\ .
. 工作、 \ \ \___/_\/\ \ \/_/__ __ _ _★ .
. 希望、 \ \ ____\\ \ \ /\ \ /'__`\ /\`'_\ .
. 爱你的人、 \ \ \___/ \ \ \___\ \ \/\ __//\ \ \/ .
. 和你爱的人 \ \___\ \ \_____\ \__\ \____\ \ \_\ .
. …… \/___/ \/_____/\/__/\/____/ \/_/ @126.com .

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.114.32.20]


Re: Schema中允许用外部xml作名域吗

 发信人: leicheng (cheng), 信区: XML
标 题: Re: Schema中允许用外部xml作名域吗
发信站: BBS 水木清华站 (Fri Aug 25 13:37:29 2000)

【 在 buoy (浮云游子) 的大作中提到: 】
∶ 在msdn上看到的例子，在Schema中可以使用外部xml文件作为名域，但在xmlspy中使用时，
∶ 解析错误，错误信息如下：the schema isn't validated by itself(as part of other
∶ schema,it might still ok).
∶ 下面是Schema中的代码：
∶ <?xml version="1.0" encoding="UTF-8"?>
∶ <Schema xmlns="urn:schemas-microsoft-com:xml-data" xmlns:dt="urn:schemas-mic
∶ rosoft-com:datatypes">
∶ <ElementType name="PurchaseOrder"
∶ xmlns:abcde="">http://electrocommerce.org/stuff.xml">
∶ <element type="abcde:Address"/>
∶ </ElementType>
∶ ...................

在最新的scheme推荐标准中是支持这种引有的,XML-data支不支持我不知道.
schema用法分两步:用xmlns声明和import语句,以下是schema primer的一个例子

<schema targetNamespace='http://www.example.com/Report'
xmlns='http://www.w3.org/1999/XMLSchema'
xmlns:r='http://www.example.com/Report'
xmlns:xipo='http://www.example.com/IPO'
elementFormDefault="qualified">

<!-- for Sku -->
<import namespace='http://www.example.com/IPO'/>

<annotation>
<documentation>
Report schema for Example.com
Copyright 2000 Example.com. All rights reserved.
</documentation>
</annotation>

<element name="purchaseReport">
<complexType>
<element name="regions" type="r:RegionsType"/>
<element name="parts" type="r:PartsType"/>
<attribute name="period" type="timeDuration"/>
<attribute name="periodEnding" type="date"/>
</complexType>

<unique>
<selector>regions/zip</selector>
<field>@code</field>
</unique>

<key name="pNumKey">
<selector>parts/part</selector>
<field>@number</field>
</key>

<keyref refer="pNumKey">
<selector>regions/zip/part</selector>
<field>@number</field>
</keyref>
</element>

<complexType name="RegionsType">
<element name="zipcode" minOccurs="1" maxOccurs="unbounded">
<complexType>
<element name="part">
<complexType content="empty">
<attribute name="number" type="xipo:Sku"/>
<attribute name="quantity" type="positiveInteger"/>
</complexType>
</element>
<attribute name="code" type="positiveInteger"/>
</complexType>
</element>
</complexType>

<complexType name="PartsType>
<element name="part" minOccurs="1" maxOccurs="unbounded">
<complexType content="textOnly">
<attribute name="number" type="xipo:Sku"/>
</complexType>
</element>
</complexType>

</schema>

--

※ 来源:·BBS 水木清华站 smth.org·[FROM: 159.226.39.135]


Re: 有人研究SOAP么？ (转载)

 发信人: justkidding (单身土人~~超越自己), 信区: XML
标 题: Re: 有人研究SOAP么？ (转载)
发信站: BBS 水木清华站 (Sat Sep 2 00:40:07 2000)

【 在 knowbot (黄毛) 的大作中提到: 】
∶ 【 在 justkidding (单身土人~~超越自己) 的大作中提到: 】
∶
∶ CORBA教程（ORBIX）中有一些样例，试过了吗？我们的项目中主要考虑用CORBA实现异地
∶ 对传统的不同平台，不同语言的应用进行的调用。
∶ 既然你用过SOAP，可以向大家介绍一下吗！我对SOAP只是概念上的一个理解，在“中国
∶ XML联盟（www.xml.org.cn)”上有一篇关于SOAP的译文。
∶

心动不如行动，自己down一个IBM soap4j来玩玩就什么都明白了
同时还可以down nassl，这样client的proxy都可以自动生成了（不过有些限制）
感觉SOAP还是挺不错的，至少可以穿过防火墙，
如果说corba适用于intranet，那么SOAP才是真正面向Internet的东东
它的基本原理其实很简单，就是用HTTP或SMTP来传送xml包装的数据
当然这里的xml是指符合soap标准的well formed docs
也叫做soap envelope，在这个信封里放入RPC的调用参数和返回数据
有人说SOAP=XML+HTTP
由于使用xml作为数据交换格式，因此可以实现真正意义上的平台无关
应用程序只需要知道xml中的数据到本地对象的mapping就可以了
当然如果是比较简单的数据类型就不需要mapping了
做了几个例子，感觉用soap4j挺方便的，基本上和编写访问本地对象的方法差不多
中间的传输过程在配置好环境以后可以说是完全透明的
一个典型的SOAP应用结构是：

client application<=>client proxy ------- server router<=>server application

其中client proxy可以由nassl自动生成
soap4j提供了一个用jsp写的server router

CORBA我没有怎么用过，所以也不好比较两者在应用上哪个更方便一些
不过看现在的趋势，OMG也宣布要在以后的CORBA中加入对SOAP的支持了
个人感觉是CORBA用于Intranet，而SOAP用于Internet，两者是可以互补的
BTW:现在的SOAP4j已经被IBM捐献给Apache了，好象Apache对它作了些修补
已经是2.0版了，我用的soap4j是从alphaworks上找的，1.2，用起来可能有点不同

--

说了世上一无牵挂为何有悲喜
说了朋友相交如水为何重别离
说了少年笑看将来为何常回忆
说了青春一去无悔为何还哭泣

※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.174.199]


Re: 怎样实现XML的动态分页？

 发信人: fredlee (----X----), 信区: XML
标 题: Re: 怎样实现XML的动态分页？
发信站: BBS 水木清华站 (Sat Sep 16 18:07:01 2000)

定义data island

然后在htm页中引用例如在表格里
定义DATAPAGESIZE属性,再利用nextPage()方法翻页~~~

for example:
<HTML><HEAD></HEAD><TITLE></TITLE>
<BODY>
<XML ID="xmlParts">
<?xml version="1.0" ?>
<parts>
<part>
<partnumber>A1000</partnumber>
<description>Flat washer</description>
<quantity>1000</quantity>
</part>
<part>
<partnumber>S2300</partnumber>
<description>Machine screw</description>
<quantity>1000</quantity>
</part>
<part>
<partnumber>M2400</partnumber>
<description>Nail</description>
<quantity>500</quantity>
</part>
</parts>
</XML>
<table DATAPAGESIZE=1 ID=tbl DATASRC=#xmlParts>
<tr>
<td><div datafld="partnumber"></div></td>
<td><div datafld="$Text"></div></td>
</tr>
</table>
<INPUT TYPE="button" VALUE="First Page" onclick="javascript:tbl.nextPage();">
</BODY>
</HTML>

hope help u some...

【 在 xuyu (库库) 的大作中提到: 】
∶ 我把数据用JSP/ASP从数据库中读出来，
∶ 然后把这些内容写成XML格式的东西，通过XSL表现出来，
∶ 可是这个动态分页显示在XSL中应该怎样实现呢？就是类似View.asp?page=1...2...
∶ 哪位大侠做过类似的东东，能否说说看？

--

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.38.248.82]


Re: 在VC中如何使用MSXML PARSER ??

 发信人: fredlee (----X----), 信区: XML
标 题: Re: 在VC中如何使用MSXML PARSER ??
发信站: BBS 水木清华站 (Sun Sep 17 09:42:34 2000)

文摘自MSDN Online Member Community

This article shows you how to read from and write information to XML files
using Visual C++ and Microsoft's XML parser (msxml.dll). The COM stuff is do
ne using smart pointer, so the code is really simple.
Below is an example of an XML file. It consists of the element <COMPANY>, wh
ich contains one or more <EMPLOYEE> elements.
<COMPANY>
<EMPLOYEE>
<NAME>Markus Bosshard</NAME>
<DESCR>Software Design Engineer</DESCR>
</EMPLOYEE>
</COMPANY>

The XML DOM

The XML DOM is an object model that exposes the content of an XML document.
It's not hard to guess that Microsoft implemented DOM using standard COM int
erfaces. Msxml.dll contains both the type library and the implementation cod
e to work with XML documents. If you don't have msxml.dll on your system, in
stall Internet Explorer 5.0 or download the redistributable version of Micro
soft's XML parser.
To get started, import the type library either directly into the CPP file or
into the precompiled header file as follows:

#import "msxml.dll"
using namespace MSXML;

Now you can create an instance of the XML parser as follows:
IXMLDOMDocumentPtr pDom ("Microsoft.XMLDOM", NULL, CLSCTX_INPROC_SERVER);
This is, in effect, the same as using the Visual Basic CreateObject function
. Please note that when you use smart pointers, you should use try/catch to
handle COM errors.

Reading the XML Document

The following code shows you how to read an XML document from a file:
pDom->async = false;
if (!pDom->load ("Workers.xml")) {
// Tell user what the problem is
IXMLDOMParseErrorPtr pErr = pDom->parseError;
AfxMessageBox (pErr->reason);
return;
}
Setting the async property to false causes the parser to read the entire XML
document before returning. By default async is true, allowing large XML doc
uments to be read asynchronously. The code above also shows you how to displ
ay some of the error information if loading the document fails. You can try
it out by adding a typo in the end tag </COMPANNNY>.
Traversing the Document
The XML document is basically a hierarchy of IXMLDOMNode elements. It's fair
ly easy to traverse through the nodes by using recursion. The following func
tion will dump some of a node's information to the debug window as it recurs
ively processes the nodes.

void DisplayNode (IXMLDOMNodeList* pNodes, int nIndent)
{
if (pNodes == NULL) return; // nothing to do
nIndent += 2;
for (long idx = 0; idx < pNodes->length; idx++) {
IXMLDOMNodePtr pNode = pNodes->item[idx];
CString str;
str.Format ("%*c%s Type= %s Text= %s\r\n", nIndent, ' ',
(LPCSTR)pNode->nodeName, (LPCSTR)pNode->nodeTypeString,
(LPCSTR)pNode->text);
OutputDebugString (str);
// recurse children if there are some
DisplayNode (pNode->childNodes, nIndent);
}
}
If you call DisplayNode from the very top of the document:
DisplayNode (pDom->childNodes, 0);
The output for the XML file above will look like this:
COMPANY Type= element Text= Markus Bosshard Software Design Engineer
EMPLOYEE Type= element Text= Markus Bosshard Software Design Engineer
NAME Type= element Text= Markus Bosshard
#text Type= text Text= Markus Bosshard
DESCR Type= element Text= Software Design Engineer
#text Type= text Text= Software Design Engineer
Modifying and Writing XML
To append two more employees to the list, you would call createElement from
the top-level IXMLDOMDocument object, then use a particular node's appendChi
ld or replaceChild method. Have a look at the code below:
// create two new entries
AppendNode (pDom, "John Doe", "Programmer");
AppendNode (pDom, "Mister T", "Actor");
// and save
pDom->save ("NewList.xml");
AppendNode creates a new <EMPLOYEE> element and calls NewTextElement to crea
te the <NAME> and <DESCR> sub-elements. This is the code for AppendNode and
NewTextElement:

IXMLDOMElementPtr NewTextElement (IXMLDOMDocument* pDom,
LPCSTR pTagName, LPCSTR pTagText)
{
IXMLDOMElementPtr pNode = pDom->createElement (pTagName);
pNode->appendChild (pDom->createTextNode (pTagText));
return pNode;
}
void AppendNode (IXMLDOMDocument* pDom, LPCSTR pName, LPCSTR pDescr)
{
// append a NAME and a DESCRIPTION element
IXMLDOMElementPtr pNode = pDom->createElement ("EMPLOYEE");
pNode->appendChild (NewTextElement (pDom, "NAME", pName));
pNode->appendChild (NewTextElement (pDom, "DESCR", pDescr));
// Append at the end of the list
pDom->lastChild->appendChild (pNode);
}
Finally, you might want to save the XML document with the two newly appended
employees.
pDom->save ("NewList.xml");
Unfortunately, the new elements are just glued together one after the other
without white space. I haven't figured out how to make the save function ins
ert some indentation, so that the resulting XML file is more reader friendly
.
This article was written by Markus Bosshard.

【 在 littlepin (小针尖儿--一针见血) 的大作中提到: 】
∶ 我把MSXML.H加上，把MSXML3.LIB也加上而且；路径绝对真却
∶ 但还是包错，说没有定义，另外有个XMLDOM.IDL我把它加入
∶ 荏苒不行，前一种错误如下
∶ D:\xml\C++_SAMPLES\sample1.cpp(50) : error C2065: 'IXMLDOMParseError' : und
∶ eclared identifier
∶ D:\xml\C++_SAMPLES\sample1.cpp(50) : error C2065: 'pXMLError' : undeclared i
∶ dentifier
∶ D:\xml\C++_SAMPLES\sample1.cpp(51) : error C2448: '<Unknown>' : function-sty
∶ le initializer appears to be a function definition
∶ D:\xml\C++_SAMPLES\sample1.cpp(81) : error C2065: 'IXMLDOMDocument' : undecl
∶ ared identifier
∶ ...................

--

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.38.248.82]


Re: XSL中如何实现循环语句？

 发信人: wlyang (nothing), 信区: XML
标 题: Re: XSL中如何实现循环语句？
发信站: BBS 水木清华站 (Sun Sep 17 21:43:54 2000)

【 在 xuyu (库库) 的大作中提到: 】
∶ 我想把一个Node的Value Select出来后，
∶ 然后使用这个值作一个循环(for(i<node.value...))
∶ 在XSL里面应该如何写这种结构的语句？

好象一般不太见到for循环,
基本上都是判断和选择。
如果实在是要用的话，
也不要想那么多了，
用script应该可以，
<xsl:script>
fuction(node....) {
......
}
<xsl:script>
在用<xsl:eval>调用就是了。

--

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.120.224.18]


Re: 装了ms xml sdk怎么打开也，傻问题

 发信人: alou (lou), 信区: XML
标 题: Re: 装了ms xml sdk怎么打开也，傻问题
发信站: BBS 水木清华站 (Fri Sep 22 15:53:59 2000)

【 在 tsizhi (心不情愿) 的大作中提到: 】
∶ 那怎么用啊

可以在支持ActiveX的开发环境（比如Delphi, VC, VB等）使用
MS XML组件。我在Delphi里面通过import type library引入了
MSXML的类型库，得到pascal的单元文件，然后就可以在程序里
面使用像DOMDocument之类的对象了。而SDK的文档和例子用来
做参考资料，查对象属性和方法的时候很管用。
事实上只要安装了IE5，不用SDK也可以使用MS XML组件，只是
没有文档不方便。

--

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.112.101.154]


Re: 请问在程序中如何将gb码转换成unicode码,谢

 发信人: yangxuu (据说江西出美女), 信区: XML
标 题: Re: 请问在程序中如何将gb码转换成unicode码,谢
发信站: BBS 水木清华站 (Thu Oct 12 10:31:10 2000)

【 在 redfire (如火青春) 的大作中提到: 】
∶ 要在服务器端解决
∶ 也就是动态生成的wml页面如何转换成unicode码?
∶ 谢谢

在java中有方法把gb2312,gbk转化成unicode,你查找java api source
能够得到，对这个问题应该有帮助。

--

※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.68.91]


Re: xml schemas 里的eltOnly是什么意思？？

 发信人: littlefairy (在水一方), 信区: XML
标 题: Re: xml schemas 里的eltOnly是什么意思？？
发信站: BBS 水木清华站 (Tue Oct 17 19:48:55 2000)

说明此元素只包含元素类型的内容。
此外content的类型还有：
empty:元素内容为空
textOnly： 元素只包含文本类型的内容
mixed:元素内容可以为上述任何情况
【 在 tshirt (令狐冲冲) 的大作中提到: 】
∶ 这些东西应该在哪里查到呀?
∶ thanks a lot

--
世情推物理，人生贵适意，想人间造物搬兴废。吉藏凶，凶藏吉。
富贵哪能长富贵？日盈昃，月满亏蚀。地下东南，天高西北，天地尚无完体。
展放愁眉，休争闲气。今日容颜，老于昨日。
古往今来，尽须如此，管他贤的愚的，贫的和富的。
到头这一身，难逃那一日。受用了一朝，一朝便宜。
百岁光阴，七十者稀。急急流年，滔滔逝水。

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.112.109.79]
发信人: littlefairy (在水一方), 信区: XML
标 题: Re: xml schemas 里的eltOnly是什么意思？？
发信站: BBS 水木清华站 (Tue Oct 17 20:10:22 2000)

one是只允许元素取集合中的一个，
seq表示元素只能按指定的一种顺序出现，
还有一种是many,表示子元素可以以任意顺序任意数量出现
如果没有声明一个元素的内容模型的顺序,缺省值为:
当content属性值为"eltOnly"时order为"seq",当content属性值为"mixed"时为"many".
【 在 tshirt (令狐冲冲) 的大作中提到: 】
∶ order = "one"和"seq"是什么意思呢？？

--
世情推物理，人生贵适意，想人间造物搬兴废。吉藏凶，凶藏吉。
富贵哪能长富贵？日盈昃，月满亏蚀。地下东南，天高西北，天地尚无完体。
展放愁眉，休争闲气。今日容颜，老于昨日。
古往今来，尽须如此，管他贤的愚的，贫的和富的。
到头这一身，难逃那一日。受用了一朝，一朝便宜。
百岁光阴，七十者稀。急急流年，滔滔逝水。

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.112.109.79]


Re: 请问表单提交的数据如何生成xml文档

 发信人: alou (lou), 信区: XML
标 题: Re: 请问表单提交的数据如何生成xml文档
发信站: BBS 水木清华站 (Tue Nov 14 19:29:06 2000)

【 在 kkxxrr (xrong) 的大作中提到: 】
∶ 在实现表单提交的时候，如何是提交的数据在另一个文件中生成一个
∶ xml文档，然后再xmlhttprequest提交到一个接口处理这个文档
∶ 再返回结果
∶ 谢谢各位
∶ 谢谢！！！！！

用DOMDocument.load可以获得其他XML文档。
XMLHttpRequest的responseXML属性可以用来访问返回的XML文档。
普通的响应可以用responseText等属性访问。
如果接口要返回XML文档，注意设置contentType为text/xml。

--

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.112.101.154]


Re: 关于属性类型为ID时的问题

 发信人: jeffzhang (龙民★无题), 信区: XML
标 题: Re: 关于属性类型为ID时的问题
发信站: BBS 水木清华站 (Sat Nov 25 11:21:17 2000)

因为XML规定id的值是一个有效的Name类型的值，
所以不能用数字开头，
呵呵

Validity constraint: ID
Values of type ID must match the Name production. A name must not appear mor
e than once in an XML document as a value of this type; i.e., ID values must
uniquely identify the elements which bear them.

Name::=(Letter | '_' | ':' )(NameChar)*
(XML 1.0 Rec)

【 在 Seventh (吾生也有涯,而知也无涯,以有涯随无涯,殆矣) 的大作中提到: 】
∶ 我是说id的值以数字开头时，为什么通不过有效性检查？
∶ 你可以试一下www.xml.net.cn上那个例子

--

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.119.11.127]


Re: 关于参数实体引用的问题？

 发信人: jeffzhang (龙民★无题), 信区: XML
标 题: Re: 关于参数实体引用的问题？
发信站: BBS 水木清华站 (Sat Nov 25 11:28:44 2000)

参数实体用在内部DTD时，可以代表一个或几个完整的声明，如例1
用在外部DTD时，粒度可以小一些，可以代表完整的声明，或者声明内部的
一个或者几个完整的token
这是因为内部DTD编辑方便，所以要求严格一点，以简化解析器的操作

所以
例1应该可以出现在内部DTD中，因为hr代表的是一条完整的声明。
例2只能出现在外部DTD里，inlines代表的是某个声明内部的一个或多个token

【 在 qgsong (阳关三叠) 的大作中提到: 】
∶ 例1：
∶ <!ENTITY % hr "<!ELEMENT HR EMPTY>">
∶ %hr;
∶ 例2：
∶ <!ENTITY % inlines
∶ "(PERSON | DEGREE | MODEL | PRODUCT | ANTIMAL | INGREDIENT)*">
∶ <!ELEMENT PARAGRAPH %inlines;>
∶ <!ELEMENT CELL %inlines;>
∶ <!ELEMENT HEADING %inlines;>
∶ XML Bible上说：
∶ 参数实体引用仅能用于提供外部DTD子集中的声明。也就是说，参数实体
∶ ...................

--

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.119.11.127]


Re: 外部实体引用激发的问题？

 发信人: jeffzhang (龙民★无题), 信区: XML
标 题: Re: 外部实体引用激发的问题？
发信站: BBS 水木清华站 (Sat Nov 25 11:34:07 2000)

只有在要求作有效性检查时才会对照DTD检查，
否则可以随意写DTD里没有声明的元素
【 在 qgsong (阳关三叠) 的大作中提到: 】
∶ 文件"signature.xml"如下：
∶ <?xml version="1.0"?>
∶ <SIGNATURE>
∶ <COPYRIGHT>1999 Elliotte Rusty Harold</COPYRIGHT>
∶ <EMAIL>elharo@metalab.unc.edu
∶ <NAME> Fsb </NAME>
∶ </SIGNATURE>
∶ 文件"quot.xml"如下：
∶ <?xml version="1.0" standalone="no"?>
∶ <!DOCTYPE DOCUMENT [
∶ <!ELEMENT DOCUMENT (TITLE, SIGNATURE)>
∶ ...................

--

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.119.11.127]


Re: 问：这一段代码正确吗？

 发信人: jeffzhang (龙民★无题), 信区: XML
标 题: Re: 问：这一段代码正确吗？
发信站: BBS 水木清华站 (Sat Nov 25 11:36:18 2000)

正确，处理时第4行被优先考虑，
如果应用程序或者解析器不知道第一条是什么意思，
就看第5行

【 在 qgsong (阳关三叠) 的大作中提到: 】
∶ <!DOCTYPE DOCUMENT [
∶ <!ENTITY % ISOlat1
∶ PUBLIC
∶ "ISO 8879-1986//E I IES Added Latin 1//E //XML"
∶ "">http://www.schema.net/public-text/ISOlat1.pen">
∶ %ISOlat1;
∶ ]>
∶ 问：这一段代码正确吗？我认为4、5两行只能存在其一。
∶ 请各位勿见笑

--

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.119.11.127]


Re: 在包括#PCDATA的元素声明中遇到的问题？

 发信人: jeffzhang (龙民★无题), 信区: XML
标 题: Re: 在包括#PCDATA的元素声明中遇到的问题？
发信站: BBS 水木清华站 (Sat Nov 25 11:42:13 2000)

不合法，有PCDATA的内容定义是MIXED型的内容模型，只能是这样的：
Mixed-content Declaration
[51] Mixed ::= '(' S? '#PCDATA' (S? '|' S? Name)* S? ')*'
| '(' S? '#PCDATA' S? ')'

【 在 qgsong (阳关三叠) 的大作中提到: 】
∶ <!ELEMENT PARENT (#PCDATA | CHILD1 | CHILD2 | CHILD3 )* >
∶ 除了改变子元素数目以外的其他事情都是不合法的。
∶ 不能在包括#PCDATA的元素声明中使用逗号、问号或加号。用竖线分隔的元素
∶ 和#PCDATA的列表是合法的。其他用法是不合法的。例如，下面的例子就不合法：
∶ <!ELEMENT TEAM (TEAM_CITY, TEAM_NAME, PLAYER*, #PCDATA)>
∶ 问题：<!ELEMENT PARENT (#PCDATA | CHILD1 | CHILD2 | CHILD3 )?>是否合法?
∶ 请各位同仁多多赐教，谢谢

--

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.119.11.127]


Re: 请问现在的Parser对Xlink和xpointer提供了什么支?nbsp;

 发信人: angry (烦), 信区: XML
标 题: Re: 请问现在的Parser对Xlink和xpointer提供了什么支?nbsp;
发信站: BBS 水木清华站 (Wed Dec 13 20:32:09 2000)

XLink和XPointer的处理程序是XML Parser上面的应用,简单地说,XML parser解析出
xlink:*或xpointer然后交给上面的处理程序.XML parser对具体的XML应用和协议不
会直接支持的!

【 在 map (东坡肘子) 的大作中提到: 】
∶ sax
∶ dom
∶ 提供了对xlink,xpointer进行操作的接口吗？

--

※ 来源:·BBS 水木清华站 smth.org·[FROM: 162.105.119.59]


Re: RPC是什么东东？ (转载)

 发信人: alou (lou), 信区: XML
标 题: Re: RPC是什么东东？ (转载)
发信站: BBS 水木清华站 (Thu Dec 14 08:39:25 2000)

【 在 FoolsGarden (和水木清华谈恋爱) 的大作中提到: 】
∶ 【 以下文字转载自 Java 讨论区 】
∶ 【 原文由 FoolsGarden 所发表 】
∶ 好像和CORBA相关的东东，那位了解给小弟上一课//bow

RPC就是远端过程调用。
说白了就是过程的实现（类似于函数体）在远端的机器上，
过程的声明（函数原型）在本地机器上，通过本地机器的
过程声明调用过程，RPC协议栈就把这个调用变成网络可传
输的消息发给服务器，服务器解析这个消息，帮你调用过
程的实现，将结果用消息返回，在本地上把结果转换成返
回的数据类型。在本地的调用者来看就象普通的过程调用
一样。

--

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.112.101.77]


Re: 最新的MSDN里可有关于XML的帮助？

 发信人: Jobs (温少), 信区: XML
标 题: Re: 最新的MSDN里可有关于XML的帮助？
发信站: BBS 水木清华站 (Thu Dec 14 23:52:42 2000)

如果你打算使用微软的产品做解决方案，建议你看.Net SDK，一个庞大的类库，
包括DOM、SAX、SOAP等都已经封装在.NET 类库中了，很好用的，你可以到
msdn.microsoft.com看最近的一片介绍文章，你也可以在安装了.Net SDK后，
看其中的Sample，在QuickStart的How To目录下，自己找去，……

【 在 bface (素馨) 的大作中提到: 】
∶ 比如DOM，一些对象的用法等？

--

※ 来源:·BBS 水木清华站 smth.org·[FROM: 210.39.3.50]


Re: 紧急求救：DELPHI是否能够访问XML文档？

 发信人: flier (小海 //爱喝可乐^_^), 信区: XML
标 题: Re: 紧急求救：DELPHI是否能够访问XML文档？
发信站: BBS 水木清华站 (Sat Dec 23 12:29:40 2000)

【 在 yhjohn (john) 的大作中提到: 】
∶ 安装的时候就有吗?
Delphi自带的xml引擎是一个用javascript写的东东
是InternetExpress实现WebBroker时解析服务器端XML数据用的
(这个WebBroker的功能是midas里面实现类似soap思想的东东
很不错，可以说是soap的轻量级替代品:)
在\Delphi\Source\Webmidas目录下的那几个.js文件就是源代码
很适合做网上应用轻量级解析用，也可以在netscape上用
不过功能有一些限制，如果是写程序，建议用ms xml 3
功能非常强大，支持DOM2, SAX2界面，编写也不复杂的说
或者简单一些，直接下一个expact，也可以的说

我个人比较喜欢SAX的简介明快，就贴一个以前写的SAX的例子好了 :)

unit SAXEventImpl;
interface
uses
Classes, Windows, ActiveX, ComCtrls, MSXML2_TLB;
type
TSAXContentHandler = class(TInterfacedObject, ISAXContentHandler)
private
FTree: TTreeView;
FCurNode: TTreeNode;
protected
{ ISAXContentHandler }
function putDocumentLocator(const pLocator: ISAXLocator): HResult; stdca
ll;
function startDocument: HResult; stdcall;
function endDocument: HResult; stdcall;
function startPrefixMapping(var pwchPrefix: Word; cchPrefix: SYSINT; var
pwchUri: Word;
cchUri: SYSINT): HResult; stdcall;
function endPrefixMapping(var pwchPrefix: Word; cchPrefix: SYSINT): HRes
ult; stdcall;
function startElement(var pwchNamespaceUri: Word; cchNamespaceUri: SYSIN
T;
var pwchLocalName: Word; cchLocalName: SYSINT; var
pwchQName: Word;
cchQName: SYSINT; const pAttributes: ISAXAttribute
s): HResult; stdcall;
function endElement(var pwchNamespaceUri: Word; cchNamespaceUri: SYSINT;

var pwchLocalName: Word; cchLocalName: SYSINT; var p
wchQName: Word;
cchQName: SYSINT): HResult; stdcall;
function characters(var pwchChars: Word; cchChars: SYSINT): HResult; std
call;
function ignorableWhitespace(var pwchChars: Word; cchChars: SYSINT): HRe
sult; stdcall;
function processingInstruction(var pwchTarget: Word; cchTarget: SYSINT;
var pwchData: Word;
cchData: SYSINT): HResult; stdcall;
function skippedEntity(var pwchName: Word; cchName: SYSINT): HResult; st
dcall;
public
constructor Create(ATree: TTreeView);
end;
TSAXErrorHandler = class(TInterfacedObject, ISAXErrorHandler)
private
FStrings: TStrings;
protected
{ ISAXErrorHandler }
function error(const pLocator: ISAXLocator; var pwchErrorMessage: Word;
hrErrorCode: HResult): HResult; stdcall;
function fatalError(const pLocator: ISAXLocator; var pwchErrorMessage: W
ord;
hrErrorCode: HResult): HResult; stdcall;
function ignorableWarning(const pLocator: ISAXLocator; var pwchErrorMess
age: Word;
hrErrorCode: HResult): HResult; stdcall;
public
constructor Create(AStrings: TStrings);
end;
implementation
uses
SysUtils, ComObj;
{ TSAXContentHandler }
constructor TSAXContentHandler.Create(ATree: TTreeView);
begin
inherited Create;
FTree := ATree;
FCurNode := nil;
end;
{ TSAXContentHandler.ISAXContentHandler }
function TSAXContentHandler.putDocumentLocator(const pLocator: ISAXLocator):
HResult; stdcall;
begin
Result := S_OK;
end;
function TSAXContentHandler.startDocument: HResult; stdcall;
begin
FTree.Items.BeginUpdate;
FCurNode := nil;
Result := S_OK;
end;
function TSAXContentHandler.endDocument: HResult; stdcall;
begin
FTree.Items.EndUpdate;
Result := S_OK;
end;
function TSAXContentHandler.startPrefixMapping(var pwchPrefix: Word;
cchPrefix: SYSINT; var pwchUri: Word; cchUri: SYSINT): HResult; stdcall;
begin
Result := S_OK;
end;
function TSAXContentHandler.endPrefixMapping(var pwchPrefix: Word; cchPrefix
∶ SYSINT): HResult; stdcall;
begin
Result := S_OK;
end;
function TSAXContentHandler.startElement(var pwchNamespaceUri: Word;
cchNamespaceUri: SYSINT; var pwchLocalName: Word; cchLocalName: SYSINT;
var pwchQName: Word; cchQName: SYSINT; const pAttributes: ISAXAttributes):
HResult; stdcall;
var
Index, Len, AttNameLen, AttValueLen: Integer;
AttName, AttValue, NodeText: string;
pwStr: PWord1;
begin
NodeText := WideCharLenToString(PWideChar(@pwchLocalName), cchLocalName);
OleCheck(pAttributes.getLength(Len));
for Index := 0 to Len - 1 do
begin
OleCheck(pAttributes.getLocalName(Index, pwStr, AttNameLen));
AttName := WideCharLenToString(PWideChar(pwStr), AttNameLen);
OleCheck(pAttributes.getValue(Index, pwStr, AttValueLen));
AttValue := WideCharLenToString(PWideChar(pwStr), AttValueLen);
NodeText := Format('%s %s="%s"', [NodeText, AttName, AttValue]);
end;
FCurNode := FTree.Items.AddChild(FCurNode, NodeText);
Result := S_OK;
end;
function TSAXContentHandler.endElement(var pwchNamespaceUri: Word;
cchNamespaceUri: SYSINT; var pwchLocalName: Word; cchLocalName: SYSINT;
var pwchQName: Word; cchQName: SYSINT): HResult; stdcall;
begin
FCurNode := FCurNode.Parent;
Result := S_OK;
end;
function TSAXContentHandler.characters(var pwchChars: Word; cchChars: SYSINT
): HResult; stdcall;
begin
Result := S_OK;
end;
function TSAXContentHandler.ignorableWhitespace(var pwchChars: Word; cchChar
s: SYSINT): HResult; stdcall;
begin
Result := S_OK;
end;
function TSAXContentHandler.processingInstruction(var pwchTarget: Word;
cchTarget: SYSINT; var pwchData: Word; cchData: SYSINT): HResult; stdcall;

begin
Result := S_OK;
end;
function TSAXContentHandler.skippedEntity(var pwchName: Word; cchName: SYSIN
T): HResult; stdcall;
begin
Result := S_OK;
end;
{ TSAXErrorHandler }
constructor TSAXErrorHandler.Create(AStrings: TStrings);
begin
inherited Create;
FStrings := AStrings;
end;
{ TSAXErrorHandler.ISAXErrorHandler }
function TSAXErrorHandler.error(const pLocator: ISAXLocator;
var pwchErrorMessage: Word; hrErrorCode: HResult): HResult; stdcall;
var
ColNum, LineNum: Integer;
ErrMsg: string;
begin
OleCheck(pLocator.getColumnNumber(ColNum));
OleCheck(pLocator.getLineNumber(LineNum));
ErrMsg := WideCharToString(PWideChar(@pwchErrorMessage));
FStrings.Add(Format('错误在%d行%d列，代码0x%x，信息%s',
[LineNum, ColNum, hrErrorCode, ErrMsg]));
Result := S_OK;
end;
function TSAXErrorHandler.fatalError(const pLocator: ISAXLocator;
var pwchErrorMessage: Word; hrErrorCode: HResult): HResult; stdcall;
var
ColNum, LineNum: Integer;
ErrMsg: string;
begin
OleCheck(pLocator.getColumnNumber(ColNum));
OleCheck(pLocator.getLineNumber(LineNum));
ErrMsg := WideCharToString(PWideChar(@pwchErrorMessage));
FStrings.Add(Format('致命错误在%d行%d列，代码0x%x，信息%s',
[LineNum, ColNum, hrErrorCode, ErrMsg]));
Result := S_OK;
end;
function TSAXErrorHandler.ignorableWarning(const pLocator: ISAXLocator;
var pwchErrorMessage: Word; hrErrorCode: HResult): HResult; stdcall;
var
ColNum, LineNum: Integer;
ErrMsg: string;
begin
OleCheck(pLocator.getColumnNumber(ColNum));
OleCheck(pLocator.getLineNumber(LineNum));
ErrMsg := WideCharToString(PWideChar(@pwchErrorMessage));
FStrings.Add(Format('警告在%d行%d列，代码0x%x，信息%s',
[LineNum, ColNum, hrErrorCode, ErrMsg]));
Result := S_OK;
end;
end.

使用起来也很easy :)

procedure TfrmMain.FormCreate(Sender: TObject);
begin
FContentHandler := TSAXContentHandler.Create(treeDoc);
FErrorHandler := TSAXErrorHandler.Create(memLog.Lines);
//OleCheck(CoCreateInstance(CLASS_SAXXMLReader, nil, CLSCTX_ALL, ISAXXMLRe
ader, FReader));
FReader := CreateComObject(CLASS_SAXXMLReader) as ISAXXMLReader;
FReader.putContentHandler(FContentHandler);
FReader.putErrorHandler(FErrorHandler);
end;

--
. 生命的意义在于 /\ ____\ /\_ \ /\_\ .
. 希望 \ \ \___/_\/\ \ \/_/__ __ _ _★ .
. 工作 \ \ ____\\ \ \ /\ \ /'__`\ /\`'_\ .
. 爱你的人 \ \ \___/ \ \ \___\ \ \/\ __//\ \ \/ .
. 和你爱的人 \ \___\ \ \_____\ \__\ \____\ \ \_\ .
. …… \/___/ \/_____/\/__/\/____/ \/_/ @126.com .

※ 修改:·flier 於 Dec 23 12:37:06 修改本文·[FROM: 202.114.32.12]
※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.114.32.12]
上一篇 返回上一页 回到目录 回到页首


XML与数据库 (BM: inannan)

编号 | 类别 | 标题 | 编辑日期
1 | 目录 | 请问在XML中如何连接后台的数据库? (BM: inannan) | 2001.05.25
2 | 目录 | XML是数据库研究者的一次契机 (BM: inannan) | 2001.05.26
3 | 文件 | Microsoft SQL Server数据库的XML支持 inannan | 2001.05.27
4 | 文件 | Oracle Java版本XML SQL实用工具概述 inannan | 2001.05.27
5 | 文件 | XML and Databases--by Ronald Bourret inannan | 2001.05.28
6 | 目录 | "xml和数据库"中文翻译(1) (BM: inannan) | 2001.05.28
返回上一页 回到上一级目录


请问在XML中如何连接后台的数据库? (BM: inannan)

编号 | 类别 | 标题 | 编辑日期
1 | 文件 | Re: 请问在XML中如何...? inannan | 2001.05.25
2 | 文件 | Re: 请问在XML中如何...? inannan | 2001.05.25
3 | 文件 | Re: 请问在XML中如何...? inannan | 2001.05.25
4 | 文件 | Re: 请问在XML中如何...? inannan | 2001.05.25
返回上一页 回到上一级目录


Re: 请问在XML中如何...?

 发信人: alou (lou), 信区: XML
标 题: Re: 请问在XML中如何...?
发信站: BBS 水木清华站 (Tue May 9 20:14:28 2000)

【 在 cloudLo (阳光~绿草) 的大作中提到: 】
∶ 请问在XML中如何连接后台的数据库，
∶ XML支持ODBC?
∶ thankx!

XML不是编程语言，连接数据库不是它的事。

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.112.101.154]
返回上一页 回到目录 回到页首 下一篇


Re: 请问在XML中如何...?

 发信人: cloudLo (阳光~绿草), 信区: XML
标 题: Re: 请问在XML中如何...?
发信站: BBS 水木清华站 (Wed May 10 07:46:28 2000)

【 在 alou (lou) 的大作中提到: 】
∶ XML不是编程语言，连接数据库不是它的事。

我听说AT&T公司推出XML-QL(XML查询语言)可以实现和
数据库的连接和查询等

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.118.81.11]


Re: 请问在XML中如何...?

 发信人: flier (小海 //爱喝可乐^_^), 信区: XML
标 题: Re: 请问在XML中如何...?
发信站: BBS 水木清华站 (Wed May 10 12:28:50 2000)

【 在 cloudLo (阳光~绿草) 的大作中提到: 】
∶ 我听说AT&T公司推出XML-QL(XML查询语言)可以实现和
∶ 数据库的连接和查询等
不过又是对XML的一些扩展而已，
增加了一些标记和语法，
把SQL语言和XML结合起来了
只要把XML和SQL搞清楚了，管他怎么变 :)
--
. 生命的意义在于 /\ ____\ /\_ \ /\_\ .
. 工作、 \ \ \___/_\/\ \ \/_/__ __ _ _★ .
. 希望、 \ \ ____\\ \ \ /\ \ /'__`\ /\`'_\ .
. 爱你的人、 \ \ \___/ \ \ \___\ \ \/\ __//\ \ \/ .
. 和你爱的人 \ \___\ \ \_____\ \__\ \____\ \ \_\ .
. …… \/___/ \/_____/\/__/\/____/ \/_/ @126.com .

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.114.32.16]


Re: 请问在XML中如何...?

 发信人: djq (边缘行走), 信区: XML
标 题: Re: 请问在XML中如何...?
发信站: BBS 水木清华站 (Wed May 10 23:57:23 2000)

可以看看cocoon的例子.XML可以干你想干的任何事情,连接数据库不在话下.

【 在 alou (lou) 的大作中提到: 】
∶ XML不是编程语言，连接数据库不是它的事。

--

-- Whip me. Beat me. Make me install Oracle. --

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.112.45.46]
上一篇 返回上一页 回到目录 回到页首


XML是数据库研究者的一次契机 (BM: inannan)

编号 | 类别 | 标题 | 编辑日期
1 | 文件 | XML是数据库研究者的一次契机 inannan | 2001.05.26
2 | 文件 | Re: XML是数据库研究者的一次契机 inannan | 2001.05.26
3 | 文件 | Re: XML是数据库研究者的一次契机 inannan | 2001.05.26
返回上一页 回到上一级目录


XML是数据库研究者的一次契机

 发信人: cfish (武装到牙齿), 信区: XML
标 题: XML是数据库研究者的一次契机
发信站: BBS 水木清华站 (Fri May 12 11:14:13 2000)

咱搞数据库研究的很难有一招让人觉得缺你不行，
因为数据库技术在咱国家的应用水平上已经非常成熟
咱国家的数据库技术以数据库应用为99%主

那么，XML提供了这样一个机会，让中国的研究同世界同步

珍惜机会

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.112.116.88]
返回上一页 回到目录 回到页首 下一篇


Re: XML是数据库研究者的一次契机

 发信人: tapebomb (枫树), 信区: XML
标 题: Re: XML是数据库研究者的一次契机
发信站: BBS 水木清华站 (Sat May 13 11:21:08 2000)

在数据--表示--应用三层结构中,xml在其中间层发挥了作用.它将商业逻辑从代码中
独立出来,使得系统的实现更为灵活和易维护.
【 在 cloudLo (呵呵) 的大作中提到: 】
∶ 请详细介绍这方面的东西，thanx

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: softlab.nju.edu]


Re: XML是数据库研究者的一次契机

 发信人: cfish (武装到牙齿), 信区: XML
标 题: Re: XML是数据库研究者的一次契机
发信站: BBS 水木清华站 (Sat May 13 11:52:27 2000)

【 在 cloudLo (呵呵) 的大作中提到: 】
∶ 请详细介绍这方面的东西，thanx

自www.xml.net.cn
这个站点有许多关于xml的资料

Microsoft SQL Server数据库的XML支持

作者: 王仲 写作日期:2000-04-06

一、背景
就在XML技术在全球日益盛行的时候，Microsoft于2000年1月宣布其SQL Server对XML提供支持，并且发布了一个预览版本，它意味着Microsoft在其战略决策上将XML技术放在一个何等重要的地位，而这一消息的发布无疑将给广大的XML技术人员和SQL
Server用户带来强劲动力。Microsoft SQL Server的XML支持计划，是其下一步庞大计划的一部分，即旨在产生一组功能强大的产品和服务来实现所谓的BizTalk 框架。BizTalk 是Microsoft现有的、帮助商务公司实现应用软件一体化的分布式互连网应用DNA (Windows Distributed
interNet Applications )体系结构的延伸和扩展。以后的Microsoft产品和工具本身都将包含对BizTalk 服务体系结构的支持。Microsoft Commerce Platform、Office, BackOffice 以及Windows 都将利用BizTalk XML Schema来保存文档的额外信息、并且用它来实现BackOffice
和基于Windows应用软件的一体化集成。Microsoft产品套件、Microsoft Office 2000 发行的下一个主要版本都打算将HTML 提升成为一种内置支持的文件格式，并且使用XML来存储额外的文档信息。Microsoft SQL Server正是其实现这一目的的底层数据的有力工具。
二、技术特点
在此之前，Microsoft就一直致力于将XML技术同其数据库旗舰产品SQL Server相集成，以帮助建立下一代的高效的基于Web的企业应用。Microsoft宣称，其下一版本SQL
Server，即代号为Shiloh，将是一个完全支持XML的产品，利用该产品，用户可以在Web浏览器下输入一个URL地址，即可访问SQL
Server数据库，而返回的结果可以是一个XML文档。另外，它还允许通过输入样式参数，指定样式信息，以便在浏览器中输出丰富的页面。一个典型的URL如下所述：href = http: // localhost / Northwind ? sql = select + firstname,lastname + from + employees + for + xml +
auto Microsoft宣称，SQL Server Shiloh将在2000年中期正式发布，现在发布的预览版只是其全部支持中的一部分，其技术核心是IIS ISAPI的一个扩展，支持环境是Windows NT 4.0 + IIS 4.0，或者Windows 2000 +IIS 5.0，数据库为SQL Server 7.0 或 SQL Server 6.5 Service Pack
5。一个例外是，安装于Windows 98上的Personal Web Server将不提供对XML支持。
XML SQL 技术预览提供了以下几种XML访问功能：
利用HTTP协议以URL的方式访问SQL Server数据库
这是最基本的访问方式。另外，通过指定样式模板参数，可以返回具有一定样式信息的数据。该样式模板是一个包含一条或多条SQL 语句的合法的XML文档。返回的XML文档可以通过指定的XML模式来定义，三种模式为：RAW、AUTO、EXPLICIT。

利用在SELECT语句中附加FOR XML来返回XML格式数据
作为对XML模式的一种补充，通过在FOR XML中指定DTD或XML schema来达到对返回XML文档的格式化。

利用基于XML的UPDATE语句来更新数据库中的记录
SQL Server支持基于XML的插入、删除、修改等数据库更新操作。通用的更新语法是：
<sql:sync xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<sql:before>
<TABLENAME [sql:id="value"] col="value" col="value"…../>
</sql:before>
<sql:after>
<TABLENAME [sql:id="value"] [sql:at-identity="value"] col="value" col="value"…../>
</sql:after>
</sql:sync>
插入操作的更新语法是：
<sql:sync xmlns:sql="urn:schemas-microsoft-com:xml-sql">
[…
</sql:before>]
<sql:after>
<TABLENAME [sql:id="value"] [sql:at-identity="value"] col="value" col="value"…../>
</sql:after>
</sql:sync>
删除操作的更新语法是：
<sql:sync>
<sql:before>
<TABLENAME KeyCol1="PKCol1Value" KeyCol2="PKCol2Value"
..
ColA="Value" ColB="Value"../>
</sql:before>
[<sql:after>
</sql:after>]
</sql:sync>
修改操作的更新语法是：
<sql:sync>
<sql:before>
<TABLENAME [sql:id="value"] KeyCol1="KeyCol1Value" KeyCol2="KeyCol2Value"
..
ColA="OldValue" ColB="OldValue"../>
</sql:before>
<sql:after>
<TABLENAME [sql:id="value"] KeyCol1="KeyCol1Value" KeyCol2="KeyCol2Value"
..
colA="NewValue" colB="NewValue"…../>
</sql:after>
</sql:sync>

利用对象模型在Script脚本程序中实现同样的功能
XML SQL 技术预览提供的osqlxml.dll允许利用对象模型在Script脚本程序中实现基于XML的数据库操作。下面是一个ASP示例：
<%@ LANGUAGE = VBScript %>
<% Response.ContentType = "text/xml" %>>
<%
SET oSQLXML = CreateObject("Microsoft.SQLXMLRequest")
oSQLXML.Connection = "Driver=SQL Server;Server=FRANKMAN-CAVE;Database=Northwind;uid=sa;pwd="
oSQLXML.ExecuteQuery("Select * from customers for XML AUTO")
Response.BinaryWrite oSQLXML.ResultAsBinary
%>

三、结束语
XML SQL 技术预览为我们展示了Microsoft在XML技术应用上的实力，通过将XML同数据库相结合实现了强大的功能，但是，由于该技术目前只是一个预览版本，其本身还会不断发展，相信在正式发布时将会有所改进。

相关文章

Oracle Java版本XML SQL实用工具概述

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.112.116.88]
上一篇 返回上一页 回到目录 回到页首


Microsoft SQL Server数据库的XML支持

 发信人: cloudLo (呵呵), 信区: XML
标 题: Microsoft SQL Server数据库的XML支持
发信站: BBS 水木清华站 (Wed Jun 21 07:53:57 2000)

Microsoft SQL Server数据库的XML支持
作者: 王仲 写作日期:00-4-6
一、背景
就在XML技术在全球日益盛行的时候，Microsoft于2000年1月宣布其SQL Server对X
ML提供支持，并且发布了一个预览版本，它意味着Microsoft在其战略决策上将XML技术
放在一个何等重要的地位，而这一消息的发布无疑将给广大的XML技术人员和SQL Serve
r用户带来强劲动力。Microsoft SQL Server的XML支持计划，是其下一步庞大计划的一
部分，即旨在产生一组功能强大的产品和服务来实现所谓的BizTalk 框架。BizTalk 是
Microsoft现有的、帮助商务公司实现应用软件一体化的分布式互连网应用DNA (Window
s Distributed interNet Applications )体系结构的延伸和扩展。以后的Microsoft产
品和工具本身都将包含对BizTalk 服务体系结构的支持。Microsoft Commerce Platfor
m、Office, BackOffice 以及Windows 都将利用BizTalk XML Schema来保存文档的额外
信息、并且用它来实现BackOffice 和基于Windows应用软件的一体化集成。Microsoft产
品套件、Microsoft Office 2000 发行的下一个主要版本都打算将HTML 提升成为一种内
置支持的文件格式，并且使用XML来存储额外的文档信息。Microsoft SQL Server正是其
实现这一目的的底层数据的有力工具。
二、技术特点
在此之前，Microsoft就一直致力于将XML技术同其数据库旗舰产品SQL Server相集
成，以帮助建立下一代的高效的基于Web的企业应用。Microsoft宣称，其下一版本SQL
Server，即代号为Shiloh，将是一个完全支持XML的产品，利用该产品，用户可以在Web
浏览器下输入一个URL地址，即可访问SQL Server数据库，而返回的结果可以是一个XML
文档。另外，它还允许通过输入样式参数，指定样式信息，以便在浏览器中输出丰富的
页面。一个典型的URL如下所述：href = http: // localhost / Northwind ? sql = s
elect + firstname,lastname + from + employees + for + xml + auto Microsoft宣
称，SQL Server Shiloh将在2000年中期正式发布，现在发布的预览版只是其全部支持中
的一部分，其技术核心是IIS ISAPI的一个扩展，支持环境是Windows NT 4.0 + IIS 4.
0，或者Windows 2000 +IIS 5.0，数据库为SQL Server 7.0 或 SQL Server 6.5 Servi
ce Pack 5。一个例外是，安装于Windows 98上的Personal Web Server将不提供对XML支
持。
XML SQL 技术预览提供了以下几种XML访问功能：
利用HTTP协议以URL的方式访问SQL Server数据库
这是最基本的访问方式。另外，通过指定样式模板参数，可以返回具有一定样式信息的
数据。该样式模板是一个包含一条或多条SQL 语句的合法的XML文档。返回的XML文档可
以通过指定的XML模式来定义，三种模式为：RAW、AUTO、EXPLICIT。
利用在SELECT语句中附加FOR XML来返回XML格式数据
作为对XML模式的一种补充，通过在FOR XML中指定DTD或XML schema来达到对返回XML文
档的格式化。
利用基于XML的UPDATE语句来更新数据库中的记录
SQL Server支持基于XML的插入、删除、修改等数据库更新操作。通用的更新语法是：
<sql:sync xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<sql:before>
<TABLENAME [sql:id="value"] col="value" col="value"…../>
</sql:before>
<sql:after>
<TABLENAME [sql:id="value"] [sql:at-identity="value"] col="value" col="value
"…../>
</sql:after>
</sql:sync>
插入操作的更新语法是：
<sql:sync xmlns:sql="urn:schemas-microsoft-com:xml-sql">
[…
</sql:before>]
<sql:after>
<TABLENAME [sql:id="value"] [sql:at-identity="value"] col="value" col="value
"…../>
</sql:after>
</sql:sync>
删除操作的更新语法是：
<sql:sync>
<sql:before>
<TABLENAME KeyCol1="PKCol1Value" KeyCol2="PKCol2Value"
..
ColA="Value" ColB="Value"../>
</sql:before>
[<sql:after>
</sql:after>]
</sql:sync>
修改操作的更新语法是：
<sql:sync>
<sql:before>
<TABLENAME [sql:id="value"] KeyCol1="KeyCol1Value" KeyCol2="KeyCol2Value"
..
ColA="OldValue" ColB="OldValue"../>
</sql:before>
<sql:after>
<TABLENAME [sql:id="value"] KeyCol1="KeyCol1Value" KeyCol2="KeyCol2Value"
..
colA="NewValue" colB="NewValue"…../>
</sql:after>
</sql:sync>
利用对象模型在Script脚本程序中实现同样的功能
XML SQL 技术预览提供的osqlxml.dll允许利用对象模型在Script脚本程序中实现基于X
ML的数据库操作。下面是一个ASP示例：
<%@ LANGUAGE = VBScript %>
<% Response.ContentType = "text/xml" %>>
<%
SET oSQLXML = CreateObject("Microsoft.SQLXMLRequest")
oSQLXML.Connection = "Driver=SQL Server;Server=FRANKMAN-CAVE;Database=Northw
ind;uid=sa;pwd="
oSQLXML.ExecuteQuery("Select * from customers for XML AUTO")
Response.BinaryWrite oSQLXML.ResultAsBinary
%>
三、结束语
XML SQL 技术预览为我们展示了Microsoft在XML技术应用上的实力，通过将XML同数
据库相结合实现了强大的功能，但是，由于该技术目前只是一个预览版本，其本身还会
不断发展，相信在正式发布时将会有所改进。

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.118.81.11]
返回上一页 回到目录 回到页首 下一篇


Oracle Java版本XML SQL实用工具概述

 发信人: cloudLo (呵呵), 信区: XML
标 题: Oracle Java版本XML SQL实用工具概述
发信站: BBS 水木清华站 (Wed Jun 21 08:02:09 2000)

Oracle Java版本XML SQL实用工具概述
作者: 王仲 写作日期:00-4-10
1. 前言
Oracle公司在其最新Oracle 8I数据库产品中提供了对XML的支持，使其成为开发基于XM
L的Internet应用的理想平台。 作为Oracle 8I数据库的一个主要组成部分，Java版本的
XML SQL 实用工具在Oracle公司的XML战略计划中扮演着重要角色。 该工具包包含了一
组Java类，可完成下述两大功能：
向数据库发送查询语句，然后从返回的结果中输出XML文档（文本或DOM节点树）
将XML数据保存至数据库中
这两大功能可以说是SQL 数据库支持XML的最基本要求，但却足以体现当今XML技术发展
的潮流。微软宣称在其下一代数据库产品-Microsoft SQL Server "Shiloh"-中也提供类
似的支持，但其正式发布至少也要等到2000年中，因此，无形之中，Oracle占据了良好
的先机。
2. 技术特性
Oracle Java版本的XML SQL 实用工具具有下列特性：
能够从SQL查询中产生XML文档
能够从SQL查询语句或JDBC ResultSet对象中输出文本或文档对象模型节点树（DOM）
能够将XML文档数据写入数据库表或视图中
支持W3C 的XML 1.0推荐标准
可以通过扩展进而支持SAX 1.0 文档访问
支持基于下列字符集的文档：
UTF-8、UTF-16、ISO-10646-UCS-2、ISO-10646-UCS-4、EUC-KR、US-ASCII 、EBCDIC-C
P-*、ISO-8859-1to -9、BIG 、GB2312 、EUC-JP 、KOI8-R 、ISO-2022-JP 、 ISO-20
22-KR 、Shift_JIS
XML SQL 实用工具输出的XML文档实际上根据数据库表内在结构而动态确定的，比如，将
ROWSET做为返回结果集的根元素，每行数据将ROW做为元素标记，而每个字段名称都将做
为ROW元素下的子元素。下面给出一个典型示例：
假定查询语句为：
SELECT ISBN, BOOKNAME FROM BOOKS
则返回的XML文档可能类似下面的语句：
<? xml version = "1.0" encoding="GB2312" ?>
<ROWSET>
<ROW id="1">
<ISBN>7-302-02015-9</ISBN>
<BOOKNAME>VISUAL C++技术内幕</BOOKNAME>
</ROW>
<ROW id="2">
<ISBN>7-302-00860-4</ISBN>
<BOOKNAME>C程序设计</BOOKNAME>
</ROW>
… …
… …
</ROWSET>

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.118.81.11]


XML and Databases--by Ronald Bourret

 发信人: justkidding (单身土人~~超越自己), 信区: XML
标 题: XML and Databases--by Ronald Bourret
发信站: BBS 水木清华站 (Fri Sep 8 08:33:58 2000)

XML and Databases
Copyright 1999, 2000 by Ronald Bourret, Technical University of Darmstadt
September, 1999 (updated June, 2000)
Table of Contents
1.0 Introduction
2.0 Why Use a Database?
3.0 Data versus Documents
3.1 Data-Centric Documents
3.2 Document-Centric Documents
3.3 Data, Documents, and Databases
4.0 Storing and Retrieving Data
4.1 Transferring Data
4.2 Mapping Document Structure to Database Structure
4.2.1 Template-Driven Mappings
4.2.2 Model-Driven Mappings
4.3 Data Types, Null Values, Character Sets, and All That Stuff
4.3.1 Data Types
4.3.2 Binary Data
4.3.3 Null Data
4.3.4 Character Sets
4.3.5 Processing Instructions
4.3.6 Storing Markup
4.4 Generating DTDs from Database Schema and Vice Versa
5.0 Storing and Retrieving Documents
5.1 Content Management Systems and Relational Databases
6.0 XML Database Products
7.0 Additional Links
8.0 Comments and Feedback
1.0 Introduction
This paper briefly discusses the relationship between XML and databases and
lists some of the software available to process XML documents with databases
. Although it is not intended to be exhaustive or provide in-depth evaluatio
ns of all the available software, I hope that it describes some of the major
issues in using XML with databases. It is somewhat biased towards relationa
l databases simply because that is where my experience is.
2.0 Why Use a Database?
The first question you need to ask yourself when you start thinking about XM
L and databases is why you want to use a database in the first place. Do you
have legacy data you want to expose? Are you looking for a place to store y
our Web pages? Is the database used by an e-commerce application in which XM
L is used as a data transport? The answers to these questions will strongly
influence your choice of database and middleware (if any), as well as how yo
u use that database.
For example, suppose you have an e-commerce application that uses XML as a d
ata transport. It is a good bet that your data has a highly regular structur
e and that things such as the entities and encodings used in XML documents a
re not important to you -- after all, you are interested only in the data, n
ot how it is physically stored in the document. If your application is relat
ively simple, a relational database and data transfer middleware might satis
fy your needs; if it is large and complex, you might want a complete applica
tion development environment that supports XML.
On the other hand, suppose you have a Web site built from a number of prose-
oriented XML documents. Not only do you want to manage the site, you would l
ike to provide a way for users to search its contents. Your documents are li
kely to have a highly irregular structure and things such as entity usage ar
e probably important to you because they are a fundamental part of how your
documents are structured. In this case, you might need some sort of "native
XML" database that performs versioning, tracks entity usage, and supports a
query language like XQL.
3.0 Data versus Documents
Perhaps the most important factor in choosing a database is whether you are
using the database to store data or documents. If you want to store data, yo
u will need a database that is tuned for data storage, such as a relational
or object-oriented database, as well as middleware to transfer data between
the database and XML documents. On the other hand, if you want to store docu
ments, you will need a content management system which is designed specifica
lly to store documents.
Although it is possible to store documents in a relational or object-oriente
d database yourself, you will usually find yourself duplicating the work of
a content management system. Similarly, although a content management system
is usually built on top of an object-oriented or hierarchical database, try
ing to use it as a database will probably prove to be frustrating.
Whether you need to store data or documents can often be answered by simply
looking at your XML documents. The reason for this is that XML documents fal
l into two rough categories: data-centric and document-centric.
3.1 Data-Centric Documents
Data-centric documents are characterized by fairly regular structure, fine-g
rained data (that is, the smallest independent unit of data is at the level
of a PCDATA-only element or an attribute), and little or no mixed content. T
he order in which sibling elements and PCDATA occurs is often not significan
t. Good examples are XML documents containing sales orders, flight schedules
, restaurant menus, and so on. Data-centric documents are usually designed f
or machine consumption and the fact that XML is involved may be superfluous
-- it is often simply the data transport.
For example, the following sales order document is data-centric:
<Orders>
<SalesOrder SONumber="12345">
<Customer CustNumber="543">
<CustName>ABC Industries</CustName>
<Street>123 Main St.</Street>
<City>Chicago</City>
<State>IL</State>
<PostCode>60609</PostCode>
</Customer>
<OrderDate>981215</OrderDate>
<Line LineNumber="1">
<Part PartNumber="123">
<Description>
<p><b>Turkey wrench:</b><br />
Stainless steel, one-piece construction,
lifetime guarantee.</p>
</Description>
<Price>9.95</Price>
</Part>
<Quantity>10</Quantity>
</Line>
<Line LineNumber="2">
<Part PartNumber="456">
<Description>
<p><b>Stuffing separator:<b><br />
Aluminum, one-year guarantee.</p>
</Description>
<Price>13.27</Price>
</Part>
<Quantity>5</Quantity>
</Line>
</SalesOrder>
</Orders>
Note that in the XML world, many prose-rich documents are, in fact, data-cen
tric. For example, consider a page on Amazon.com that displays information a
bout a book. Although the page is largely text, the structure of that text i
s highly regular, much of it is common to all pages describing books, and ea
ch piece of page-specific text is limited in size. Thus, the page could be b
uilt from a simple, data-centric XML document -- containing page-specific te
xt retrieved from the database -- and an XSL stylesheet that adds the boiler
plate text. In general, any Web site that dynamically constructs HTML docume
nts today by filling a template with database data can probably be replaced
by data-centric XML documents and one or more XSL stylesheets.
For example, the following lease document:
<Lease>
<Lessee>ABC Industries</Lessee> agrees to lease the property at
<Address>123 Main St., Chicago, IL</Address> from <Lessor>XYZ
Properties</Lessor> for a term of not less than <LeaseTerm
TimeUnit="Months">18</LeaseTerm> at a cost of <Price
Currency="USD" TimeUnit="Months">1000</Price>.
</Lease>
could be built from the following XML document and a simple stylesheet:
<Lease>
<Lessee>ABC Industries</Lessee>
<Address>123 Main St., Chicago, IL</Address>
<Lessor>XYZ Properties</Lessor>
<LeaseTerm TimeUnit="Months">18</LeaseTerm>
<Price Currency="USD" TimeUnit="Months">1000</Price>
</Lease>
3.2 Document-Centric Documents
Document-centric documents are characterized by irregular structure, larger
grained data (that is, the smallest independent unit of data might be at the
level of an element with mixed content or the entire document itself), and
lots of mixed content. The order in which sibling elements and PCDATA occurs
is almost always significant. Good examples are books, email, advertisement
s, and almost any XHTML document. Document-centric documents are generally d
esigned for human consumption.
For example, the following product description is document-centric:
<Product>
<Name>Turkey Wrench</Name>
<Developer>Full Fabrication Labs, Inc.</Developer>
<Summary>Like a monkey wrench, but not as big.</Summary>
<Description>
<Para>The turkey wrench, which comes in both right- and
left-handed versions (skyhook optional), is made of the finest
stainless steel. The Readi-grip rubberized handle quickly adapts
to your hands, even in the greasiest situations. Adjustment is
possible through a variety of custom dials.</Para>
<Para>You can:</Para>
<List>
<Item><Link URL="Order.html">Order your own turkey wrench</Link></Item>
<Item><Link URL="Wrenches.htm">Read more about wrenches</Link></Item>
<Item><Link URL="catalog.zip">Download the catalog</Link></Item>
</List>
<Para>The turkey wrench costs just $19.99 and, if you
order now, comes with a hand-crafted shrimp hammer as a
bonus gift.</Para>
</Description>
3.3 Data, Documents, and Databases
In reality, the distinction between data-centric and document-centric docume
nts is not always clear. For example, an otherwise data-centric document, su
ch as an invoice, might contain large-grained, irregularly structured data,
such as a part description. And an otherwise document-centric document, such
as a user's manual, might contain fine-grained, regularly structured data (
often metadata), such as an author's name and a revision date. In spite of t
his, characterizing your documents as data-centric or document-centric will
help you decide whether you are interested in data or documents, which in tu
rn dictates the kind of system you need.
To store and/or retrieve data, you can use a database (usually relational, o
bject-oriented, or hierarchical) and middleware (either built-in or third pa
rty), or you can use an XML server (a platform for building distributed appl
ications, such as e-commerce, that use XML for data transfer) or XML-enabled
Web server (a Web server that can build XML documents from data in a databa
se). To store documents, you will need a content management system or persis
tent DOM implementation. The issues in using each type of system are discuss
ed in sections 4.0, "Storing and Retrieving Data", and 5.0, "Storing and Ret
rieving Documents". You can find a list of available software in XML Databas
e Products.
4.0 Storing and Retrieving Data
Data of the kind that is found in data-centric documents can originate eithe
r in the database (in which case you want to expose it as XML) or in an XML
document (in which case you want to store it in a database). An example of t
he former is the vast amount of legacy data stored in relational databases;
an example of the latter is data exposed on the Web as XML that you want to
store in your database for further processing. Thus, depending on your needs
, you may need software that transfers data from an XML document to the data
base, from the database to an XML document, or both.
4.1 Transferring Data
When storing data in the database, it is often acceptable to discard much of
the information about a document, such as its name and DTD, as well as its
physical structure, such as entity definition and usage, the order in which
attribute values and sibling elements occur, the way in which binary data is
stored (Base64 v. unparsed entity v. something else), CDATA sections, and e
ncoding information. Similarly, when retrieving data from the database, the
resulting XML document is likely to contain no CDATA or entity usage (other
than the predefined entities lt, gt, amp, apos, and quot) and the order in w
hich sibling elements and attributes appear is likely to be the order in whi
ch the data was returned by the database.
Although this may seem shocking at first, it is often quite reasonable. For
example, consider the case in which XML is used as a data format for transfe
rring a sales order from one database to another. In this case, it really do
esn't matter whether the sales order number is stored in the document before
or after the sales order date, nor does it matter if the customer's name is
stored in a CDATA section, an external entity, or directly as PCDATA. All t
hat is important is that the relevant data is transferred from the first dat
abase to the second. Thus, the data transfer software needs to consider hier
archical order (which groups the information about a single sales order) and
little else.
One consequence of ignoring information about the document and its physical
structure is that "round-tripping" a document -- that is, storing the data f
rom a document in the database and then reconstructing the document from tha
t data -- often results in a different document, even in the canonical sense
of the term. Whether this is acceptable depends on your needs and might inf
luence your choice of database and data transfer middleware.
4.2 Mapping Document Structure to Database Structure
In order to transfer data between an XML document and a database, it is nece
ssary to map document structure to database structure and vice versa. Such m
appings fall into two general categories: template-driven and model-driven.
4.2.1 Template-Driven Mappings
In a template-driven mapping, there is no predefined mapping between documen
t structure and database structure. Instead, you embed commands in a templat
e that is processed by the data transfer middleware. For example, consider t
he following template (not used by any real product), in which SELECT statem
ents are embedded in <SelectStmt> elements:
<?xml version="1.0"?>
<FlightInfo>
<Intro>The following flights have available seats:</Intro>
<SelectStmt>SELECT Airline, FltNumber, Depart, Arrive FROM Flights</Se
lectStmt>
<Conclude>We hope one of these meets your needs</Conclude>
</FlightInfo>
When processed by the data-transfer middleware, each SELECT statement might
be replaced by its results, formatted as XML:
<?xml version="1.0"?>
<FlightInfo>
<Intro>The following flights have available seats:</Intro>
<Flights>
<Row>
<Airline>ACME</Airline>
<FltNumber>123</FltNumber>
<Depart>Dec 12, 1998 13:43</Depart>
<Arrive>Dec 13, 1998 01:21</Arrive>
</Row>
...
</Flights>
<Conclude>We hope one of these meets your needs</Conclude>
</FlightInfo>
Template-driven mappings can be tremendously flexible. For example, some pro
ducts allow you to place result set values wherever you want in the result s
et -- including using them as parameters in a subsequent SELECT statement --
rather than simply formatting the results themselves, as is shown above. Ot
hers support programming constructs such as for loops and if statements. And
still others support parameterization of SELECT statements, such as through
HTTP parameters.
Currently, template-driven mappings are available only for transferring data
from a relational database to an XML document.
4.2.2 Model-Driven Mappings
In a model-driven mapping, a data model of some sort is imposed on the struc
ture of the XML document and this is mapped, either implicitly or explicitly
, to the structures in the database and vice versa. What is lost in flexibil
ity is gained in simplicity, since the system, which is based on a concrete
model, generally does more work for the user. Because the result of transfer
ring data from the database to an XML document follows a single model, XSL i
s commonly integrated into model-driven products to provide the flexibility
found in template-driven systems.
Two models for viewing the data in an XML document are common. The first of
these, which is used by many of the middleware packages for transferring dat
a between an XML document and a relational database, models the XML document
as a single table or set of tables. That is, the structure of the XML docum
ent must be similar to the following, where the <database> element does not
exist in the single-table case:
<database>
<table>
<row>
<column1>...</column1>
<column2>...</column2>
...
</row>
...
</table>
...
</database>
The term "table" is loosely interpreted to mean a single result set (when tr
ansferring data from the database to XML) or a single table or updateable vi
ew (when transferring data from XML to the database). If data from more than
one result set is desired (when transferring data from the database) or the
XML document contains more deeply nested elements than those necessary to r
epresent a set of tables (when transferring data to the database), then the
transfer is simply not possible.
The second common model for data in an XML document is a tree of objects, in
which elements generally correspond to objects and attributes and PCDATA co
rrespond to properties. This model maps directly to object-oriented and hier
archical databases and can be mapped to relational databases using tradition
al object-relational mapping techniques or SQL 3 object views. Note that thi
s model is not the Document Object Model (DOM); the DOM models the document
itself, not the data in the document.
For example, the sales order document shown above could be viewed as a tree
of objects from five classes -- Orders, SalesOrder, Customer, Line, and Part
-- as shown in the following diagram:
Orders
|
SalesOrder
/ | \
Customer Line Line
| |
Part Part
When modelling an XML document as a tree of objects, there is no requirement
that elements necessarily correspond to objects. For example, if an element
contains only PCDATA, such as the CustName element in the sales order docum
ent, it can be reasonably viewed as a property because, like a property, it
contains a single, scalar value. Similarly, it is sometimes useful to model
elements with mixed or element content as properties. An example of this is
the Description element in the sales order document: although it has mixed c
ontent in the form of XHTML, it is more useful to view the description as a
single property because its component pieces are meaningless by themselves.
Other models of the data in an XML document are also possible. For example,
through the use of ID and IDREF attributes, an XML document can be used to r
epresent a directed graph. However, these views do not seem to be widely sup
ported by the available middleware.
4.3 Data Types, Null Values, Character Sets, and All That Stuff
This section discusses a number of issues related to storing data from XML d
ocuments in databases. Generally, you will have no choice about how the midd
leware you choose resolves these issues, but you should be aware that these
issues exist, as it might help you in choosing your middleware.
4.3.1 Data Types
XML does not support data types in any meaningful sense of the word. Except
for unparsed entities, all data in an XML document is text, even if it repre
sents another data type, such as a date or an integer. Generally, the data t
ransfer middleware will convert data from text (in the XML document) to othe
r types (in the database) and vice versa. However, the number of text format
s recognized for a particular data type are likely to be limited, such as to
those supported by a given JDBC driver. Dates are most likely to cause prob
lems, as the range of possible formats is enormous. Numbers, with their vari
ous international formats, might cause problems as well.
4.3.2 Binary Data
There are two common ways to store binary data in XML documents: unparsed en
tities and Base64 encoding (a MIME encoding that maps binary data to a subse
t of US-ASCII). For relational databases, both can prove problematic, as the
rules governing how binary data is sent to or retrieved from the database c
an be quite strict and can cause problems for the middleware. In addition, t
here is no standard notation for indicating that an element contains Base64-
encoded data, so the middleware might not recognize this encoding at all. Fi
nally, the notation associated with an unparsed entity or Base64 encoded ele
ment is one of those things that might be discarded by the middleware when s
toring data in the database. Therefore, if binary data is important to you,
be sure to check that your middleware supports it.
4.3.3 Null Data
In the database world, null data means data that simply isn't there. This is
very different from a value of 0 (for numbers) or zero length (for a string
). For example, suppose you have data collected from a weather station. If t
he thermometer isn't working, a null value is stored in the database rather
than a 0, which would mean something different altogether.
XML also supports the concept of null data through optional element types an
d attributes. If the value of an optional element type or attribute is null,
it simply isn't included in the document. As with databases, empty elements
or attributes containing zero length strings are not null: their value is a
zero-length string.
When mapping the structure of an XML document to the database and vice versa
, you should be careful that optional element types and attributes are mappe
d to nullable columns and vice versa. The result of not doing so is likely t
o be an insertion error (when transferring data to the database) or invalid
document (when transferring data from the database).
Because the XML community is likely to have a more flexible notion of what i
s meant by null than the database community -- in particular, many XML users
are likely to consider empty elements or attributes containing zero-length
strings to be "null" -- you should check how your chosen middleware handles
this situation. Some middleware may offer the user the choice of defining wh
at constitutes "null" in an XML document.
4.3.4 Character Sets
By definition, an XML document can contain any Unicode character except some
of the control characters. Unfortunately, many databases offer limited or n
o support for Unicode and require special configuration to handle non-ASCII
encodings of character data. If your data contains non-ASCII characters, be
sure to check how and if both your database and middleware handle these char
acters.
4.3.5 Processing Instructions
Processing instructions are not part of the "data" of an XML document and it
is likely that most middleware cannot handle them. The problem is that, esp
ecially with a strict mapping of the XML document structure to database stru
cture, processing instructions simply do not fit because they can occur virt
ually anywhere in the document. Thus, it is hard for middleware to know wher
e to store them and when to retrieve them. If processing instructions and "r
ound-tripping" of documents are important to you, be sure to check how your
middleware handles this.
4.3.6 Storing Markup
As was mentioned in section 4.2.2, it is sometimes useful to store elements
with element or mixed content in the database without further parsing. The m
ost common way to do this is simply to store the markup itself in the databa
se. Unfortunately, this leads to a problem when retrieving the data: it is i
mpossible to determine whether such markup in the database is, in fact, true
markup or was originally an entity that represented a markup character, suc
h as can be done with the lt and gt entities.
For example, if the following description:
<description>
<b>Confusing example:</b> &lt;foo/&gt;
</description>
is stored in the database as:
<b>Confusing example:</b> <foo/>
the database cannot tell whether <b> and <foo> are markup or text. There are
several possible solutions to this, such as flagging markup in some way or
using entities for non-markup markup characters, but you must be careful tha
t these are acceptable to your other applications that use the data. For exa
mple, if you want to search for a less-than sign ("<") and an lt entity ("&l
t;") is stored in the database, you need to be aware of this.
4.4 Generating DTDs from Database Schema and Vice Versa
A common question when transferring data between XML documents and a databas
e is how to generate XML DTDs from database schema and vice versa. In short,
this is a fairly straight-forward operation and some software is available
to do it, but the results are generally less useful than many users would li
ke.
For example, the following (simplistic) procedure generates a relational sch
ema from a DTD:
For each element type with element or mixed content, create a table and a pr
imary key column.
For each element type with mixed content, create a separate table in which t
o store the PCDATA, linked to the parent table through the parent's primary
key.
For each single-valued attribute of that element type, and for each singly-o
ccurring child element type with PCDATA-only content, create a column in tha
t table. If the child element type or attribute is optional, make the column
nullable.
For each multi-valued attribute and for each multiply-occurring child elemen
t type with PCDATA-only content, create a separate table to store values, li
nked to the parent table through the parent's primary key.
For each child element type with element or mixed content, link the parent e
lement's table to the child element's table with the parent's primary key.
The following (simplistic) procedure generates a DTD from a relational schem
a:
For each table, create an element.
For each column in a table, create an attribute or a PCDATA-only child eleme
nt.
For each primary key/foreign key relationship in which a column of the table
contributes the primary key, create a child element.
Unfortunately, there are a number of drawbacks to these procedures. For exam
ple, there is no way to definitively predict data types or column lengths fr
om the DTD. Any prediction, such as that made by reading a sample document,
can be defeated by simply placing data of another "type" or of one character
more length in a document. (The long-term solution to this problem is the u
se of data types in XML schema documents.) Similarly, when generating a DTD
from a relational schema, there is no way to predict the order in which chil
d elements "should" occur or whether a column, such as a database-internal r
ow identifier, should be transferred at all. In both cases, naming collision
s are possible.
Despite these drawbacks, software that generates DTDs from database schema a
nd vice versa is generally a useful starting point, especially for large and
complex systems.
5.0 Storing and Retrieving Documents
Documents tend to originate either in XML or some other format, such as RTF,
PDF, or SGML, which is then converted to XML. (For information about docume
nts built from data inserted into a template, see the discussion at the end
of section 3.1). Thus, if you work with XML documents, as opposed to the dat
a stored in XML documents, you probably need a way to store and retrieve you
r documents, as well as ways to convert them to and from other formats. This
section discusses only the former case; for information about conversion so
ftware, see any of the XML software Web sites listed in section 7.0, "Additi
onal Links" of XML Database Products.
For very simple document sets, the file system or some sort of version contr
ol system (such as is used for software version control) may be adequate for
your needs. However, if you have a complex document set, you usually need a
content management system.
(The term content management system, as opposed to document management syste
m, reflects the fact that such systems generally allow you to break your doc
uments into discrete content fragments, such as examples, procedures, chapte
rs, or sidebars, as well as metadata, such as author names, revision dates,
and document numbers, rather than having to manage each document as a whole.
Not only does this simplify such things as how to coordinate the work of mu
ltiple writers working on the same document, it allows you to assemble entir
ely new documents from existing components.)
Unlike the case where data from an XML document is stored in the database, c
ontent management systems generally support "round-tripping" of documents, a
s things such as physical structure are often critical to document maintenan
ce. Content management systems also provide a number of other capabilities,
including:
Version and access control
Search engines
Editors
Publishing engines, such as to paper, CD, or the Web
Separation of content and style
Extensibility through scripting or programming
Integration of database data
Because my background is in databases, not content management, I will not de
scribe content management systems in any further detail. Fortunately, such d
etail generally isn't necessary, as the systems themselves hide most technic
al issues from the user.
5.1 Content Management Systems and Relational Databases
Because relational database systems are widespread, and because the phrase "
storing XML documents in a database" seems, for many people, to be synonymou
s with using a content management system, many people assume that relational
databases are a good way to store their XML documents (as opposed to the da
ta in those documents). Whether this is a good idea is an open question.
One the one hand, many people who have tried to do this swear that it is a v
ery bad idea. The reason they give is that relational databases do not inher
ently deal well with many of the things needed by a content management syste
m: order, hierarchy, irregular structure, and fields of highly variable leng
th. For example, if you want to store information about the order in which P
CDATA and child elements appear in a parent element, you must store this in
a separate column and order the children yourself. Nor can you easily, using
SQL, formulate the query, "get me all chapters in which the third paragraph
mentions part 123 in bold".
On the other hand, a number of large content management systems, such as Bla
deRunner (Interleaf), SigmaLink (STEP), Parlance Content Manager (XyEnterpri
se), and Target 2000 (Progressive Information Technology), are based on rela
tional databases. One of the reasons cited is that relational databases scal
e better than object-oriented databases.
What is clear is that a relational database is not, in itself, a content man
agement system. That is, if you want to do content management with a relatio
nal database, your choices are to buy a content management system based on a
relational database, accept limitations in functionality with out-of-the-bo
x use, or write your own system.
At its worst, out-of-the-box use is limited to storing XML documents in unpa
rsed form in a single column. This has obvious drawbacks, such as the inabil
ity to create a new document from parts of existing documents, but it is sim
ple and works in some cases, such as when you have a description written in
XHTML and no need to break it into smaller pieces. Furthermore, relational d
atabases are steadily increasing their text processing capabilities, with fu
ll-text indexing and the ability to perform specialized searches, such as pr
oximity searches or searches that use thesauri to look for synonyms. Thus, s
toring unparsed documents in a single column might suffice for simple docume
nt management.
Fortunately, relational databases are becoming more XML aware, so out-of-the
-box use is often better than simply storing documents in a single column. A
lthough many of the new XML features are oriented more towards data transfer
than document management, they do fit the needs of some applications, espec
ially those that fall in between data transfer and content management.
If you decide to write your own system, you should think very hard before yo
u start. If you really need a full-featured content management system, you a
re probably wasting your time -- all you will do is duplicate years of someb
ody else's hard work. On the other hand, if your needs are simple, writing y
our own system might be worth your time. One such system has been described
by Mark Birbeck on the XML-L mailing list. The system consists of five table
s:
Attribute definition: defines attributes, including their type, legal values
, and so on
Element/attribute association: defines which attributes apply to which eleme
nts
Content model definition: defines which elements can contain which other ele
ments
Attribute values: contains attribute values and pointers to the appropriate
rows in the attribute definition and element/attribute association tables
Element values: contains element values (PCDATA or pointers to other element
values), the order in which the element occurs in its parent, a pointer to
the row that contains the value of the parent element, and a pointer to the
appropriate row in the element/attribute association table
The first three tables are equivalent to a simple DTD; the next two tables c
ontain the actual data. By repeatedly querying the latter two tables, it is
possible to reconstruct any part of an XML document. For complete details, s
ee the topics "Record ends, Mixed content, and storing XML documents on rela
tional database" and "storing XML documents on relational database" in the X
ML-L archives for December, 1998.
For information about other strategies for storing hierarchies such as XML i
n a relational database, see the topic "XML documents in relational database
s" in the XML-L archives for November, 1998.
6.0 XML Database Products
For an up-to-date list of database products you can use with XML, see XML Da
tabase Products.
7.0 Additional Links
The following are links to other articles and white papers discussing XML an
d databases:
XML APIs for databases (includes source code for SAX and DOM implementations
over result sets)
Modeling relational data in XML
Using XML with the Sybase Adaptive Server SQL Databases (PDF, 1.5MB) (descri
bes how to write data transfer middleware and is not Sybase specific)
8.0 Comments and Feedback
Please send comments and feedback to Ronald Bourret. Please note that I am c
urrently traveling and may take two to three weeks to respond.
Back to Ron Bourret's home page

--

说了世上一无牵挂为何有悲喜
说了朋友相交如水为何重别离
说了少年笑看将来为何常回忆
说了青春一去无悔为何还哭泣

※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.174.199]
上一篇 返回上一页 回到目录 回到页首


"xml和数据库"中文翻译(1) (BM: inannan)

编号 | 类别 | 标题 | 编辑日期
1 | 文件 | "xml和数据库"中文翻译(1) inannan | 2001.05.28
2 | 文件 | 中文翻译(2) inannan | 2001.05.28
3 | 文件 | 中文翻译(三) inannan | 2001.05.28
4 | 文件 | 中文翻译(四) inannan | 2001.05.28
返回上一页 回到上一级目录


"xml和数据库"中文翻译(1)

 发信人: uml (衰人), 信区: XML
标 题: "xml和数据库"中文翻译(1)
发信站: BBS 水木清华站 (Mon Sep 11 00:50:29 2000)

就先放在这儿吧.
前言 好长一篇论文呀，不过由于它的发表日期（19
99年12月3日）很新，
而且介绍有关XML和数据库（包括各种各样的关系数据库、面向对象数据库
以及树状结构数据库）的各个方面的关系和运用很实用，才咬咬牙准备翻译了。
XML介绍之二十九：XML和数据库设计原则、展望、工具（一）
by Ronald Bourret
目录
1.0 简介
2.0 为什么使用数据库?
3.0 数据和文档的对比
3.1 以数据为主的文件
3.2 以文档为主的文件
3.3 数据（Data）、文件(Documents)和数据库(Databases)
4.0 存储和获取数据
4.1 传输数据
4.2 将文档结构映射成数据库结构
4.2.1 以模板驱动的映射
4.2.2 以样式驱动的映射
4.3 数据类型, 空值（Null）, 字符集设置和其他所有的类似集
4.3.1 数据类型
4.3.2 二进制数据
4.3.3 空值（Null）
4.3.4 字符集设置
4.3.5 处理指令（Processing Instructions）
4.3.6 存储（Storing Markup）
4.4 从数据库的结构生成DTDs和逆反过程
5.0 存储和获取文件（Documents）
5.1 管理内容系统和关系数据库
6.0 可利用的软件
6.1 中间件
6.2 XML服务器
6.3 内容管理系统（Content Management Systems）
7.0 附加联接
8.0 注释和反馈

--

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.112.137.7]
返回上一页 回到目录 回到页首 下一篇


中文翻译(2)

 发信人: uml (衰人), 信区: XML
标 题: 中文翻译(2)
发信站: BBS 水木清华站 (Mon Sep 11 00:51:42 2000)

1.0 简介
本论文简要的探讨了XML和数据库之间的关系，同时罗列出一些可以使用数据库处理

XML文档的软件工具。虽然在这里不可能详尽地介绍和提供对这些软件更深层次的评价，

但是我希望它能够描述使用数据库处理XML文档中的主要部分。这里有点偏向与关系数据
库，
因为我的经验如此。
2.0 为什么使用数据库？
当你考虑到要使用XML和数据库时的第一个要问你自己的问题应该是：为什么我需要
使用
数据库。你是需要显示数据？你是需要一个保存你主页的空间？数据库在电子商务运用
程序中
时把XML当做数据传输格式传送吗？这些问题的答案都将直接影响到你对数据库和中间件
（如果
使用了的话）的选择。
举例说明，假设你是把XML做为一种数据传输格式使用在你的电子商务运用程序中。
那么意味
着你需要传输的数据格式将主要是具有高度规范结构，那么在XML中的那些自己的编码规
范对你
而言并不重要了，这样你的兴趣就仅仅是在数据上而不是在这些数据如何物理存储在文
档中了。
如果你的运用程序关系简单，那么一个关系数据库和数据传输中间件将能够满足你的需
求；
如果关系庞大和复杂，那么你就需要一个完全支持XML的开发环境了。
从另一方面来说，假设你是要实现从杂散的XML文件中创建一个网站的功能。你不仅
需要
管理这个网站，你还要提供给用户查询其中内容的功能。这时你的文件的格式将是高度
的不规范
，而实体的使用对你来说变得很重要，因为这些文件的结构是网站的基本功能需求。
在这个例子中，你就需要一些"native XML"数据库而不是普通的关系数据库，执行解释
、XML实体
使用和支持查询语言（例如XQL）。

--

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.112.137.7]


中文翻译(三)

 发信人: uml (衰人), 信区: XML
标 题: 中文翻译(三)
发信站: BBS 水木清华站 (Mon Sep 11 00:54:41 2000)

翻译：Batman
XML介绍之三十一：XML和数据库设计原则、展望、工具（三）
by Ronald Bourret
3.0 数据和文档的对比
也许在大多数情况下，判断是否采用数据库的最重要的因素是你使用数据库是用来
保存数据呢
还是保存文件。如果你想保存数据， 你需要的数据库则主要是面向数据存储的，例如一
个关系数
据库或则一个面向对象的数据库，或则也可以是一个在数据库和XML文档之间传递数据的
中间件。
从另一个角度来说，如果你想存储文件，你需要一个专门设计用来存储文件的内容管理
系统。
虽然可以把文件保存在关系数据库或则面向对象的数据库中，但你会发现你的工作
经常是在
重复实现一个内容管理系统中的功能而已。简单说，虽然一个内容管理系统通常是建立
在一个
面向对象数据库或则关系数据库的顶层，但是如果只是把一个内容管理系统当做数据库
来使用
被证明是失败的。
你是否需要存储数据或则文件经常取决与你的XML文件。原因是XML文件分为两类：
数据为主
和文档为主。
3.1 数据为主的文件
数据为主的文件表现出来的特点是结构相当规范，数据格式良好（就是说，数据中
最小的
独立单元是PCDATA-only元素级别或则是一个属性），和一些或则没有混合内容。其中同
类型元素
和PCDATA的出现顺序并不重要。例如XML文件内容是销售单、飞行计划、餐馆菜单等等。

数据为主的文件经常被用来设计机器消费，这时XML的调用是多余的---它仅仅是一种数
据传输。
例如，下面的销售单就是一个数据为主的文档：
<Orders>
<SalesOrder SONumber="12345">
<Customer CustNumber="543">
<CustName>ABC Industries</CustName>
<Street>123 Main St.</Street>
<City>Chicago</City>
<State>IL</State>
<PostCode>60609</PostCode>
</Customer>
<OrderDate>981215</OrderDate>
<Line LineNumber="1">
<Part PartNumber="123">
<Description>
<p><b>Turkey wrench:</b><br />
Stainless steel, one-piece construction,
lifetime guarantee.</p>
</Description>
<Price>9.95</Price>
</Part>
<Quantity>10</Quantity>
</Line>
<Line LineNumber="2">
<Part PartNumber="456">
<Description>
<p><b>Stuffing separator:<b><br />
Aluminum, one-year guarantee.</p>
</Description>
<Price>13.27</Price>
</Part>
<Quantity>5</Quantity>
</Line>
</SalesOrder>
</Orders>
注意在XML世界中，许多（其实应该是大量）的文件实际上都是数据为主的。例如，
考虑
在Amazon.com网站上显示一本书的各种信息的页面，虽然这个页面是一个相当巨大的文
本，但是
这个文本的结构是高度规范的，所有页面都包含有介绍书的共同点，并且每一页中文本
的大小是
受限制的。也就是说，它可以从一个简单的、数据为主的XML文档 + 包含有每一页信息
的数据库
+ XSL样板文件 就能够实现这个网站的结构了。通常，目前任何一个动态建立HTML的网
站
都可以被上面介绍的这种结构来实现的。
下面是一个很简单的例子：
<Lease>
<Lessee>ABC Industries</Lessee> agrees to lease the property at
<Address>123 Main St., Chicago, IL</Address> from <Lessor>XYZ
Properties</Lessor> for a term of not less than <LeaseTerm
TimeUnit="Months">18</LeaseTerm> at a cost of <Price
Currency="USD" TimeUnit="Months">1000</Price>.
</Lease>
它是使用下面的这个XML文档和一个简单的样板文件实现的：
<Lease>
<Lessee>ABC Industries</Lessee>
<Address>123 Main St., Chicago, IL</Address>
<Lessor>XYZ Properties</Lessor>
<LeaseTerm TimeUnit="Months">18</LeaseTerm>
<Price Currency="USD" TimeUnit="Months">1000</Price>
</Lease>
3.2 以文档为主的文件
以文档为主的文件表现出来的特点是：不规范的结构，大量的原始数据（就是说，
最小的独立
数据单元是包含有混合内容的元素级或则本身就是一个文档），和大量混合内容。其中
同类型元素
和PCDATA出现顺序是非常重要的。例如一本书，一封电子邮件，广告，以及几乎所有的
XHTML文档。
以文档为主的文件通常是用来设计人文消费：
例如，下面的产品描述就是一个以文档为主的文件：
<Product>
<Name>Turkey Wrench</Name>
<Developer>Full Fabrication Labs, Inc.</Developer>
<Summary>Like a monkey wrench, but not as big.</Summary>
<Description>
<Para>The turkey wrench, which comes in both right- and
left-handed versions (skyhook optional), is made of the finest
stainless steel. The Readi-grip rubberized handle quickly adapts
to your hands, even in the greasiest situations. Adjustment is
possible through a variety of custom dials.</Para>
<Para>You can:</Para>
<List>
<Item><Link URL="Order.html">Order your own turkey wrench</Link></Item>
<Item><Link URL="Wrenches.htm">Read more about wrenches</Link></Item>
<Item><Link URL="catalog.zip">Download the catalog</Link></Item>
</List>
<Para>The turkey wrench costs just $19.99 and, if you
order now, comes with a hand-crafted shrimp hammer as a
bonus gift.</Para>
</Description>
3.3 数据（Data）、文件(Documents)和数据库(Databases)
事实上，数据为主的文件和文档为主的文见之间的区别并不是很清晰。例如，虽然
一个数据
为主的文件（例如一张发票），也有可能包含大量的不规范结构的数据，例如发票的描
述部分。
而一个以文档为主的文件（例如用户手册），也可能包含有规范的数据结构(通常是元数
据
metadata),例如作者名和再版日期。除了这些，你用来判断是否是两者中其一的另外
一个重要特点是你是对数据还是对文档感兴趣，这也将决定你要采用什么样的系统。
要存储和获取数据，你可以使用一个数据库（通常是关系数据库，面向对象数据库
或则
树状体系数据库）和中间件，或则你也可以使用XML服务器（你可以把它看成是将数据库
和
中间件捆绑在一起）。要保存文档，你将需要一个内容管理系统。有关各种系统的探讨
在第
4.0小节中, "存储和获取数据"和第5.0小节 "存储和获取文档".你能够在第6.0小节找到
一些
可使用的软件列表"可利用的软件"。

--

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.112.137.7]


中文翻译(四)

 发信人: uml (衰人), 信区: XML
标 题: 中文翻译(四)
发信站: BBS 水木清华站 (Mon Sep 11 00:56:44 2000)

XML介绍之三十二：XML和数据库设计原则、展望、工具（四）
by Ronald Bourret
4.0 存储和获取数据
数据的类型可以在数据为主的文件的原始定义或则从数据库中的字段类型中得到。

前者的例子是你想把数据库中的数据保存成XML文件放到网站上；后者的例子是你需
要
把大量的数据保存到关系数据库中。根据你的具体需求，你需要的软件或则是把XML数据
读入到
数据库或则是把数据库中的数据输出到XML文件，或则两者都支持。
4.1 转录数据
当将数据保存在数据库中，它经常需要抛弃与文档信息有关的大量内容，例如它的
名称和
DTD，同时还有它的物理结构，例如实体的定义和使用、属性值和相同类型元素的出现顺
序，还有
二进制数据的存储方式 (是经过Base64编码的还是没有经过编码的实体或则其他方式),
CDATA的
内容和其他编码信息。简单而言，当从数据库中获取信息时，最后生成的XML文档结果可
能不
包含任何CDATA或则实体运用（entity usage） (除非预先定义了实体lt（就是符号"<"
）,
gt(">"), amp("&"), apos("'"), quot("""))和同类型元素、属性出现的顺序。
例如，假设你需要把一个销售单的信息使用XML格式从一个数据库中获取数据然后转
录到另外
一个数据库中，在这个例子中，在XML文档中并不关心销售单的编号是保存在销售单的日
期的
前面还是后面，也不用关心是否将顾客的名称保存在CDATA section作为一个扩展入口,
或则甚至
直接当成一个PCDATA. 但是，对于将这些相关数据从第一个数据库中转录到第二个数据
库的
过程中，这些信息都是非常重要的。这样，这个数据传输软件就需要考虑使用树状结构
（
它将一个单独的销售单的信息用组(group)来实现）。
另一个当忽略文档信息和它的物理结构会带来麻烦的例子是---"借贷套利"文档，它
保存的
数据是从一个数据库中的文档中获取，并且需要重新组装这些数据成为一个新的文档，
而这个
过程经常会导致新的文档的结构和原来的文档会不一致。
从上面的例子可以看出，对于数据库和数据传输中间件的选择是根据你的需求而变
化的。
4.2 将文档结构映射成数据库结构
为了能够在XML文档和数据库之间传递数据，有必要将文档的结构映射成数据库的结
构，
反之亦然，这种映射关系又分两类：模板驱动和模型驱动
4.2.1 以模板驱动的映射
以模板驱动的映射, 这种映射没有预先定义文档结构和数据库结构之间的映射关系
，而是
使用将命令语句内嵌入模板的方法，让数据传输中间件来执行该模板。例如，考虑下面

的模板（注意该模板并不适应与所有的产品），在<SelectStmt>元素中内嵌了SELECT选
择：
<?xml version="1.0"?>
<FlightInfo>
<Intro>The following flights have available seats:</Intro>
<SelectStmt>SELECT Airline, FltNumber, Depart, Arrive FROM Flights</Se
lectStmt>
<Conclude>We hope one of these meets your needs</Conclude>
</FlightInfo>
当数据传输中间件处理到该文档时,每个SELECT选项都将被他们各自的结果所替换，

得到下面的XML格式：
<?xml version="1.0"?>
<FlightInfo>
<Intro>The following flights have available seats:</Intro>
<Flights>
<Row>
<Airline>ACME</Airline>
<FltNumber>123</FltNumber>
<Depart>Dec 12, 1998 13:43</Depart>
<Arrive>Dec 13, 1998 01:21</Arrive>
</Row>
...
</Flights>
<Conclude>We hope one of these meets your needs</Conclude>
</FlightInfo>
这种以模板驱动的映射方法相当灵活。例如，一些产品允许你在最后的结果中替换
你想要
的内容 -- 包括在SELECT中使用参数 -- 而不是象上面的例子中简单地格式化结果。
另外它还支持使用编程结构例如循环和条件判断结构。还有就是它支持通过HTTP的传递
参数。
目前，以模板驱动的映射仅仅只支持从一个关系数据库转换成XML文档的情况。
4.2.2 以模型驱动的映射
在以模型驱动的映射模式中,它的原理就是利用XML文档中的数据模型的结构显性或
隐性地
将其映射成数据库的结构，反之亦然。它的缺点是灵活性不如模板驱动方式，但是优点
是简单
易用，这是因为它是基于具体的数据模型来进行映射的，通常它能够自己完成很多地转
换工作，
从而简单易用。因为将数据从数据库转换成XML的工作是根据单一的一个模型（模型），
所以通常
在这种方式下还要综合搭配XSL来提供灵活性。
在XML文档中有两种模型是非常普遍的。第一种是被许多中间件包在转换XML文档成
关系数据库
数据所使用到的模型，就是将XML文档当成一个单独的表（Table）对象或则一系列表对
象。
也就是说，真正的XML文档必须类似于下面的格式，如果是单一的表对象的话，<databa
se>元素就
不需要出现了
<database>
<table>
<row>
<column1>...</column1>
<column2>...</column2>
...
</row>
...
</table>
...
</database>
其中的"table"可理解为单个的结果集 (当数据是从数据库往XML中传输时)或则是
一个
单独的表对象或则一个可更新的视图（view）(当数据是从XML往数据库传输时)。如果数
据是
来自多个结果集的描述中(当数据来自数据库中时)或则XML的文档包含有更深层次的嵌套
元素
，有必要表现成一系列表对象 (当数据要转换到数据库中时)，那么类似与上面例子那么
简单的
传输是不可能的。
第二种普遍的数据模型是XML文档种的对象树，在这种模型下，元素通常对对应了

一个对象或则属性或则PCDATA对象。这种模型直接映射成面向对象的数据库和树状结构
数据库，
当然借助传统的对象-关系映射技术和SQL 3对象视图也可以映射成关系数据库。要注意
的是，
这种模型并不是文档对象模型(DOM)，DOM是指文档本身是个模型，而不是指文档中的数
据。
举例，在上面介绍的销售单文档可以被看成是有5个类的对象树---Orders, SalesO
rder,
Customer, Line, and Part -- 入下图所示：
Orders
|
SalesOrder
/ | \
Customer Line Line
| |
Part Part
当一个XML文档模型化处理成一个对象树时，对元素和对象不需要什么特殊的要求。
例如，
如果一个元素只包含有PCDATA，例如销售单文档中的CustName元素，它能够被看做一个
属性
进行处理（就是仅仅只包含有单独的数值）。简单来说，有时将混合元素或则元素内容
模型化
处理成属性是非常有用的方法。一个现成的例子就是在销售单文档中对Description元素
的处理：
尽管它在XHTML的Form中有混合的内容，但是将description元素看作一个单独的属性来
处理会
更有用些，因为它的组成部分就本身而言没有什么意义。
4.3 数据类型, 空值（Null）, 字符集设置和其他所有的类似集
本节将探讨一些和将XML文档转换成数据库之间有关存储数据的内容。通常，你在选
择什么
样的中间件来解决这些问题的时候是不会考虑到这些问题的，但是如果你注意到这些问
题的
存在时，希望下面的讨论对与你在选择中间件时有所帮助。
4.3.1 数据类型
XML不支持任何有意义的数据类型，除非是不能够解释的实体，所有XML文档中的数
据都被
当成文本（text）来对待，虽然它能够用其他的数据类型来表示，例如可以表示成日期
或则整数。
通常，数据转换中间件将把文本（在XML文档中的文本）转换成其它的数据类型（数据库
中的数据
类型），反之亦然。然而，一些特定的数据类型在转换的过程中是受限制的，例如受那
些提供
数据支持的JDBC驱动的限制。在这些众多的有可能的数据类型中，日期类型通常会导致
麻烦。
数字，特别是由于国际地域不同的数字格式，也可能导致问题。
4.3.2 二进制数据
有两种比较普遍的方法将二进制数据保存到XML文档中：对实体不做任何编码处理和
对实体
进行Base64编码处理(一种MIME编码方法，可以将二进制数据影射成US-ASCII的子集)。
对于关系
数据库，这两种方法都被证明是有可能存在问题的，因为大家都知道当保存和获取二进
制数据到数据库
中的规则是非常严格的，这样对中间件将有可能导致问题。另外，并没有一种标准的符
号用来
说明一个XML文档中的元素包含有Base64编码数据，从而中间件可能根本就不能够识别这
种编码。
最后，还有可能有些中间件在将数据存储入数据库的过程中根本就会忽略没有编码实体
中的符号
或则Base64编码中的元素。所以，如果对你而言，二进制数据非常重要的话，请千万要
确认你的
中间件是否支持二进制数据。
4.3.3 空值（Null）
在数据库世界中，null数据意味着数据不在那。这不同与一个值为0(对数字类型数
据)或则
长度为0(对字符串类型)。例如，假设你的数据是收集自一个气象站， 如果气象站的温
度计出
毛病了，那么你的数据库中将存储一个null值而不是一个0，值为0完全是另外一回事了
。
XML也支持空值的概念，可以通过设置元素的类型和属性来实现。如果元素类型或属
性的
值为null，XML的处理方法是简单地不将其包含到文档中。但是对数据库来说，空的元素
或则
包含0长度字符串的属性并不意味着null：他们的值是长度为0的字符串。
当将一个XML文档结构映射成数据库或则反过程中，你必须特别注意那些可选的数据
类型
和本来表示空值的属性。如果不这么做的话，结果将是可能出现插入错误(当将数据转换
到数据库
中时)或则非法文档错误(当将数据从数据库读出时)。
因为XML中相对与数据库而言在对符号意义的申明有更好的灵活性 --- 具体来说，
就是XML
用户愿意将空元素或则包含长度为0内容的属性认为是"null" -- 你必须根据这个考虑选
择什么
样的中间件来处理这个问题。一些中间件提供给用户自定义在XML文档中什么标志是表示
"null"的。
4.3.4 字符集设置
根据定义，一个XML文档能够包含任何Unicode字符，除了一些特殊的控制字符。但
是不幸
的是，许多数据库都限制或则不支持Unicode并且需要一些特殊的配置才能够处理非ASC
II 编码的
数据字符。如果你的数据包含有非ASCII字符，那么请确保你的数据库和中间件是否能够
处理这些
字符集。
4.3.5 处理指令（Processing Instructions）
处理指令不是XML文档中的“数据”部分，目前许多中间件都不能够正常的处理它们
。
问题是这样的，尤其是在一个严格的将XML文档结构映射成数据库结构中，处理指令通常
是
很难处理的，因为题目可以出现在文档的任何位置，于是，中间件就非常困难的需要判
断
将它们保存到什么位置和读取的时候取回到什么位置。如果处理指令和文挡的"round-t
ripping"
对你而言是非常重要的话，你就必须确保你选择的中间件能够处理这个问题。
4.3.6 存储标志（Storing Markup）
在4.2.2小节中提到，有时候直接将包含有元素或则混合内容的元素不进行进一步的
解析
直接保存到数据库中是非常有用的。最普遍的实现方法是简单的把这个标志本身直接保
存到
数据库中。不幸的是，这将带来另外一个问题，当从数据库中读取这些数据时：将很难
判断数据库
中的标志到底是真是假，特别是一些由lt和gt转义的字符。
例如下面的描述：
<description>
<b>Confusing example:</b> &lt;foo/&gt;
</description>
保存到数据库中将变成这样：
<b>Confusing example:</b> <foo/>
这时数据库将不能够判断<b>和<foo>是标志还是文本了。解决方法有以下几种，例如
将
标志的符号使用其它非标志符号替代，但是这时你要非常的小心，因为也许别的运用程
序在
使用这些数据时就会出现不兼容的现象。例如，如果你想查询数据库中的小于号("<")和

lt标志("&lt;")时就要特别小心了。
4.4 从数据库的结构生成DTDs和逆反过程
在XML文档和数据库之间转换数据的一个普遍问题是：如何从数据库的结构生成D
TDs
和其逆反过程。简而言之，目前有许多软件都提供了可以直接使用的操作功能，但是它
产生的
结果对许多用户来说用处和帮助不大，也许没有多少人喜欢。
例如，下面的过程（已经简化过的）就是从一个XML文档到关系数据库中生成DTD的
：
对每一种包含有元素或则混合内容的元素类型，新建立一个table和一个主关键字段
。
对混合内容种的每一个元素，建立一个分开的table,在其中保存PCDATA,通过主关键
字连接
到父表中。
对于元素类型中每个有单一数值的属性和只包含有PCDATA内容的子元素类型在该ta
ble中
新建立一列（字段）。如果子元素类型或则属性是可选的，让该字段允许为空。
对于每个有多值的属性或则多仅含有PCDATA内容的子元素类型，再建立一个分开的
table
来保存他们的值，通过它们的父表的主关键字连接到父表。
对于每个子元素，这些子元素本身还有元素或则混合内容，使用父表中的关键字将
父元素表
连接到子元素表中。
而下面则是一个从关系数据库的结构生成XML文档的过程（简化过的）：
对每个table，新建一个元素。
对表中的每列，建立一个属性或则只含PCDATA的子元素
对每个包含有在主键/外键关键字关系中主键值的列，新建一个子元素。
不幸的是，在这些过程中存在许多缺陷。例如，其中没有实现对数据类型的预先定
义
和在DTD中没有实现对列长度的预先定义的方法。因为任何的预先定义，例如通过读一个
示例
文档，当读取其他“类型”的文档或则其他文档中包含有超过字段长度内容的文档时，
就会发生
错误。(解决这个问题的办法时使用XML schema文档中数据类型定义)简单来说，当从一
个关系
结构中生成DTD时，是没有办法预先判断子元素“应该”出现的顺序或则类似数据库中的
行标识。
尽管有这些陷，根据数据库结构生成DTDs的软件能够给我们带来了一个很好的开端
，特别
是对与那些非常庞大和复杂的系统。

--

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.112.137.7]
上一篇 返回上一页 回到目录 回到页首


开发指南 (BM: inannan)

编号 | 类别 | 标题 | 编辑日期
1 | 文件 | 编写结构完整的XML文档 veb | 2000.05.27
2 | 文件 | 查询和转换XML veb | 2000.05.27
3 | 目录 | Programming XML in Java (BM: inannan) | 2001.05.25
4 | 目录 | 实践出真知 (BM: inannan) | 2001.05.30
5 | 目录 | 文档编写 (BM: inannan) | 2001.05.30
6 | 目录 | JAVA与XML (BM: inannan) | 2001.05.30
7 | 文件 | SAX编程入门 inannan | 2001.05.26
8 | 文件 | 使用DOM创建XML(转载) inannan | 2001.05.26
9 | 文件 | DOM概览 inannan | 2001.05.26
10 | 文件 | 其实建立WAP站点还是很容易的!!! inannan | 2001.05.27
11 | 文件 | XML Scriptlet技术及其在ASP环境下的应用 inannan | 2001.05.27
12 | 目录 | xml dom user guide (BM: inannan) | 2001.05.28
13 | 文件 | HTML如何向XML迁移 inannan | 2001.05.30
14 | 文件 | IDL vs XML inannan | 2001.05.30
15 | 目录 | XMl与CORBA (BM: inannan) | 2001.05.30
16 | 文件 | 巨大的类库 inannan | 2001.05.30
17 | 目录 | 关于XML Parser的资料综述 (BM: inannan) | 2001.05.30
返回上一页 回到上一级目录


编写结构完整的XML文档

 发信人: kyoshiro (千面狂死郎), 信区: XML
标 题: 编写结构完整的XML文档
发信站: BBS 水木清华站 (Thu Apr 6 15:04:21 2000)

转自<<中国XML联盟>>

一个XML文档如果符合一些基本的规范，那它就是结构规范的。XML格式有一套比HTML简单的解析规则，允许XML解析器不需要外部描述或了解数据含义就可以解析XML数据。

起始标签和结束标签必须匹配

XML元素可以包含正文和其他元素，在它的schema中用严格的规范给出了文档的类型。但是，元素必须严格嵌套：每个起始标签必须有对应的结束标签。

元素不能交迭

下面的例子不符合XML语法。

<title>Evolution of Culture <sub>in Animals
</title> by John T. Bonner</sub>

改正后符合语法的形式是：

<title>Evolution of Culture
<sub>in Animals</sub>
<author>by John T. Bonner</author>
</title>

XML标签对大小写是敏感的

下面是不同的元素。

<City> <CITY> <city>

表示空元素

XML对空元素有速记办法：一个标签以/>符号结尾就表示空元素。例如，下面两行是等效的：

<title/>
<title></title>

保留字符

一些字符是XML句法结构的一部分。如果你想要在XML数据中引用它们，必须用特殊的字符来替代它们。下面列出这些字符。

< &lt;
& &amp;
＞ &gt;
" &quot;
' &apos;

例如，"Melons cost < $1 at the A&P"要写成"Melons cost &lt; $1 at the A&amp;P."。

每个XML文档必须有唯一的根元素

例如，在天气报告中，元素<weather-report>表示这个XML文档唯一的根元素。

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: wlzhxnt.bjfu.ed]
返回上一页 回到目录 回到页首 下一篇


查询和转换XML

 发信人: kyoshiro (千面狂死郎), 信区: XML
标 题: 查询和转换XML
发信站: BBS 水木清华站 (Thu Apr 6 15:06:14 2000)

转自<<中国XML联盟>>

简介
XSL概述
附加的查询功能
与XML-QL的关系

变量和连接
对象标识符
多重XML源的数据集成
数据库管理

总结

1. 简介

XML1.0标准使得网上的数据交换有了标准的方式。这样必然要有一种机制，通过它能够查询XML、对获取的数据定型(包括数据滤除和排序)、XML语法间的转换以及这些数据通常在用户端的表现。

在“XML查询语言XML-QL”( http://www.w3.org/TR/NOTE-xml-ql/ )中建议的方法和正由XSL工作小组定义和转换语言有着惊人的相似。这两种方法的结合将会为XML提供强大而灵活的查询和转换语言。

XSL和XSL模式语言作为查询和转换语言发展的基础有独特的优势:

W3C正在研究中
模式(查询)语法、转换功能和格式化语法的模块化
XML定型和表现方式的生成有统一的机制
规则、非规则甚至是递归的数据结构都能适用
2. XSL概述
XSL由三个模块组成:

XSL模式(XSL Pattern):

XSL定义一种“模式”句法标识XML文档中的节点。这项功能类似于SQL中WHERE语句.

“XSL”名域(“XSL” Namespace):

XSL的转换部分能表达为一个XML名域，它控制将查询结果具体化为一个XML文档。

“fo”名域(“fo” Namespace):

XSL格式化的功能可以用一个XML的语法文件来表达。

XSL模式句法还比较简洁，不能提供强大的查询能力。它参照了目录导航的方法。作为一种基于字符串的语法，它能够在属性值、脚本语言和URL中定位。“XSL”名域定义了一套命令集合，实现将查询结果具体化为XML。一个XSL文档包括XSL名域中规定的元素，他们可能是:

定义构造部分输出的模块
对来自XML源文件中的数据应用模板
将该模板结合查询
将一套这样的查询-模板结合进行组合，用于内部或者递归处理
将查询结果进行过滤和排序

XSL的格式化性能用XML的“fo”名域来表示，它完全独立于整个转换过程。

3. 附加的查询功能

由Microsoft、Texcel和Webmethods合写的相关文档”XQL建议”(“XQL Proposal”)可看作为XSL模式语法的扩展集，它提供了布尔操作，多种比较操作和位置、范围等性质。

类似于XSL模式语法或XQL的语言还能在XSL之外的其它许多环境中使用，用来查询个别文档或多个文档集合，无论这些文档是表达为文本或DOM节点的形式。查询语句可以作为字符串嵌入编程语言或XML/HTML的属性中。而且，这种方法并不对结果的表现格式有任何的强制；结果可以返回为XM
L文本、指向节点的指针、表示文档区域的结构或者为如字符串、整数、布尔数、数组等原始结构。其灵活性允许这些语言能在W3C的许多环境中使用。

4. 与XML-QL的关系

XML-QL阐述的许多功能常与XSL转换和模式语言提供的功能类似。两种方式都是块结构且面向模板，都能返回树或图表。在输出中生成新元素以及对XML进行查询。最大的差别在于各自的语法。XSL采用类似URL的语法来规定模式、查询和XML的内在结构对查询块定界。

这种方式的基本结构是:

<xsl:for-each select = "XSL pattern">
<!-- Construct result -->
</xsl:for-each>

相应的XML-QL结构是:

WHERE XML-QL pattern
CONSTRUCT output

为了比较这两种语言，我们将列举一些XML-QL W3C建议中的例子说明怎样用我们的方法来写这些查询语言。这些例子的作用对象是下面这个XML:

<bib>
<book year="1995">
<!-- A good introductory text -->
<title> An Introduction to Database Systems </title>
<author> <lastname> Date </lastname> </author>
<publisher> <name> Addison-Wesley </name > </publisher>
</book>
<book year="1998">
<title> Foundation for Object/Relational Databases: The Third Manifesto </title>
<author> <lastname> Date </lastname> </author>
<author> <lastname> Darwen </lastname> </author>
<publisher> <name> Addison-Wesley </name > </publisher>
</book>
</bib>

用XML-QL的方法来查询由Addison-Wesley出版社出版的书的作者：

WHERE <book>
<publisher><name>Addison-Wesley</name></publisher>
<author>$a</author>
</book>
CONSTRUCT $a

用我们的相应的方法为:

<xsl:for-each select = "book[publisher/name = 'Addison-Wesley']/author">
<xsl:value-of />
</xsl:for-each>

原先的1997年8月制定的XSL建议(http://www.w3.org/TR/NOTE-XSL.html)提出了类似于XML-QL的“按实例查询”(query by
example)语法,但后来这种方式遇到了一些挑战。而目前的类似URL的语法不管是对简单还是复杂的查询限制都能顺利工作。例如：比方我们要得到由几个出版社出版的书的作者，可以简单写为：

<xsl:for-each select = "book[publisher[name = 'Addison-Wesley'
$or$ name = 'Microsoft Press']]/author">
<xsl:value-of />
</xsl:for-each>

XML-QL还有其他的一些特点：

4.1变量和连接

XML-QL模式允许使用变量，能返回变量和满足条件值的所有数据的捆绑(bindings)集;为了支持连接或更复杂的查询和转换，这项功能是必须的。不过，在需要变量的许多XML-QL查询能够由XSL中的其它方法实现。

例如,考虑下面的使用变量的XML-QL查询:

WHERE
<book>$p</> IN "www.a.b.c/bib.xml",
<title>$t</>
<publisher><name>Addison-Wesley</></> IN $p
CONSTRUCT
<result>
<title>$t</>
WHERE <author>$a</> IN $p
CONSTRUCT <author>$a</>
</>

也可以用没有变量的XSL查询语句来实现同样的查询:

<xsl:for-each select = "book[publisher/name = "Addison-Wesley"]">
<result>
<title><xsl:value-of select="title" /></title>
<xsl:for-each select = "author">
<author><xsl:value-of /></author>
</xsl:for-each>
</result>
</xsl:for-each>

不过要建立连接(join)时变量就有作用了.要选出著于1995年之后的文章的作者，可以这样写:

WHERE

<article>
<author>
<firstname>$f</>
<lastname>$l</>
</>
</> CONTENT_AS $a In "www.a.b.c./bib.xml"

<book year = $y>
<author>
<firstname>$f</>
<lastname>$l</>
</>
</> IN "www.a.b.c/bib.xml",
$y > 1995

CONSTRUCT
<article>$a</>

4.2. 对象标识符

对象标识符和Skolem一起保证了在输出中产生的元素唯一。另外,
对象标识符在建立图形时很有用.但是,当查询结果是“流”时对象标识符有一些问题,因为它允许XML-QL任何时候在图形的任何位置都可以产生一个元素。结果，不得不在图形成为流之前将它缓存。这给Internet上的数据交换带来的严重的影响。

4.3. 多重XML源的数据集成

XML-QL允许每个WHERE语句从不同的文件查询数据.XSL目前只能对单独的XML文件进行查询。要实现多多个XML文件的查询，可以为<xsl:for-each>和<xsl:apply-templates>加上源的属性。

4.4. 数据库管理

查询语言的一个重要领域是数据库管理功能，包括创建、删除、更新和插入等操作。但在XML-QL和XSL中都没有相应的阐述。

5. 总结

查询XML中的问题与转换和构造结果的能力有密切的关系。XML-QL和XLS的相似之处意味着两者可以取长补短、互相促进。两者的相互协作能够为XML带来强大和通用的查询和转换机制。

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: wlzhxnt.bjfu.ed]


Programming XML in Java (BM: inannan)

编号 | 类别 | 标题 | 编辑日期
1 | 文件 | Programming XML in Java, Part 1 inannan | 2001.05.25
2 | 文件 | Programming XML in Java, Part 2 inannan | 2001.05.25
返回上一页 回到上一级目录


Programming XML in Java, Part 1

 发信人: maht (Trill-TimeKiller), 信区: XML
标 题: Programming XML in Java, Part 1
发信站: BBS 水木清华站 (Wed Apr 12 16:45:29 2000)

原文：
http://www.javaworld.com/javaworld/jw-03-2000/jw-03-xmlsax_p.html
XML Extra
Programming XML in Java, Part 1
Create Java apps with SAX appeal
Summary
In Web-authoring systems and information channel definitions, in middleware
and in the core of enterprise databases, organizations and individuals are
embracing XML as a powerful tool to help solve their data-management problems.
But as powerful as it may be for representing data, XML is useless without an
application to process it. In this article, you'll learn to use the Simple API
for XML (SAX) interface to process XML documents in Java. (5,000 words)
By Mark Johnson

o, you understand (more or less) how you would represent your data in XML, and
you're interested in using XML to solve many of your data-management problems.
Yet you're not sure how to use XML with your Java programs.
Programming XML in Java: Read the whole series!
Part 1. Use the Simple API for XML (SAX) to process XML in Java
easily
Part 2. Learn about SAX and XML validation through illustrative
examples

This article is a follow-up to my introductory article, "XML for the absolute
beginner", in the April 1999 issue of JavaWorld (see the Resources section below
for the URL). That article described XML; I will now build on that description
and show in detail how to create an application that uses the Simple API for
Java (SAX), a lightweight and powerful standard Java API for processing XML.
The example code used here uses the SAX API to read an XML file and create a
useful structure of objects. By the time you've finished this article, you'll be
ready to create your own XML-based applications.
The virtue of laziness
Larry Wall, mad genius creator of Perl (the second-greatest programming language
in existence), has stated that laziness is one of the "three great virtues" of a
programmer (the other two being impatience and hubris). Laziness is a virtue
because a lazy programmer will go to almost any length to avoid work, even going
so far as creating general, reusable programming frameworks that can be used
repeatedly. Creating such frameworks entails a great deal of work, but the time
saved on future assignments more than makes up for the initial effort invested.
The best frameworks let programmers do amazing things with little or no work --
and that's why laziness is virtuous.
XML is an enabling technology for the virtuous (lazy) programmer. A basic XML
parser does a great deal of work for the programmer, recognizing tokens,
translating encoded characters, enforcing rules on XML file structure, checking
the validity of some data values, and making calls to application-specific code,
where appropriate. In fact, early standardization, combined with a fiercely
competitive marketplace, has produced scores of freely available implementations
of standard XML parsers in many languages, including C, C++, Tcl, Perl, Python,
and, of course, Java.
The SAX API is one of the simplest and most lightweight interfaces for handling
XML. In this article, I'll use IBM's XML4J implementation of SAX, but since the
API is standardized, your application could substitute any package that
implements SAX.
SAX is an event-based API, operating on the callback principle. An application
programmer will typically create a SAX Parser object, and pass it both input XML
and a document handler, which receives callbacks for SAX events. The SAX Parser
converts its input into a stream of events corresponding to structural features
of the input, such as XML tags or blocks of text. As each event occurs, it is
passed to the appropriate method of a programmer-defined document handler, which
implements the callback interface org.xml.sax.DocumentHandler. The methods in
this handler class perform the application-specific functionality during the
parse.
For example, imagine that a SAX parser receives a document containing the tiny
XML document shown in Listing 1 below. (See Resources for the XML file.)
<POEM>
<AUTHOR>Ogden Nash</AUTHOR>
<TITLE>Fleas</TITLE>
<LINE>Adam</LINE>
<LINE>Had 'em.</LINE>
</POEM>
Listing 1. XML representing a short poem
When the SAX parser encounters the <POEM> tag, it calls the user-defined
DocumentHandler.startElement() with the string POEM as an argument. You
implement the startElement() method to do whatever the application is meant to
do when a POEM begins. The stream of events and resulting calls for the piece of
XML above appears in Table 1 below.
Table 1. The sequence of callbacks SAX produces while parsing Listing
1Item encounteredParser callback
{Beginning of document}startDocument()
<POEM> startElement("POEM", {AttributeList})
"\n"characters("<POEM>\n...", 6, 1)
<AUTHOR>startElement("AUTHOR", {AttributeList})
"Ogden Nash"characters("<POEM>\n...", 15, 10)
</AUTHOR> endElement("AUTHOR")
"\n"characters("<POEM>\n...", 34, 1)
<TITLE> startElement("TITLE", {AttributeList})
"Fleas"characters("<POEM>\n...", 42, 5)
</TITLE> endElement("TITLE")
"\n"characters("<POEM>\n...", 55, 1)
<LINE> startElement("LINE", {AttributeList})
"Adam"characters("<POEM>\n...", 62, 4)
</LINE> endElement("LINE")
<LINE> startElement("LINE", {AttributeList})
"Had 'em."characters("<POEM>\n...", 67, 8)
</LINE> endElement("LINE")
"\n"characters("<POEM>\n...", 82, 1)
</POEM> endElement("POEM")
{End of document}endDocument()

You create a class that implements DocumentHandler to respond to events that
occur in the SAX parser. These events aren't Java events as you may know them
from the Abstract Windowing Toolkit (AWT). They are conditions the SAX parser
detects as it parses, such as the start of a document or the occurrence of a
closing tag in the input stream. As each of these conditions (or events) occurs,
SAX calls the method corresponding to the condition in its DocumentHandler.
So, the key to writing programs that process XML with SAX is to figure out what
the DocumentHandler should do in response to a stream of method callbacks from
SAX. The SAX parser takes care of all the mechanics of identifying tags,
substituting entity values, and so on, leaving you free to concentrate on the
application-specific functionality that uses the data encoded in the XML.
Table 1 shows only events associated with elements and characters. SAX also
includes facilities for handling other structural features of XML files, such as
entities and processing instructions, but these are beyond the scope of this
article.
The astute reader will notice that an XML document can be represented as a tree
of typed objects, and that the order of the stream of events presented to the
DocumentHandler corresponds to an in-order, depth-first traversal of the
document tree. (It isn't essential to understand this point, but the concept of
an XML document as a tree data structure is useful in more sophisticated types
of document processing, which will be covered in later articles in this series.)

The key to understanding how to use SAX is understanding the DocumentHandler
interface, which I will discuss next.
Customize the parser with org.xml.sax.DocumentHandler
Since the DocumentHandler interface is so central to processing XML with SAX,
it's worthwhile to understand what the methods in the interface do. I'll cover
the essential methods in this section, and skip those that deal with more
advanced topics. Remember, DocumentHandler is an interface, so the methods I'm
describing are methods that you will implement to handle application-specific
functionality whenever the corresponding event occurs.
Document initialization and cleanup
For each document parsed, the SAX XML parser calls the DocumentHandler interface
methods startDocument() (called before processing begins) and endDocument()
(called after processing is complete). You can use these methods to initialize
your DocumentHandler to prepare it for receiving events and to clean up or
produce output after parsing is complete. endDocument() is particularly
interesting, since it's only called if an input document has been successfully
parsed. If the Parser generates a fatal error, it simply aborts the event stream
and stops parsing, and endDocument() is never called.
Processing tags
The SAX parser calls startElement() whenever it encounters an open tag, and
endElement() whenever it encounters a close tag. These methods often contain the
code that does the majority of the work while parsing an XML file.
startElement()'s first argument is a string, which is the tag name of the
element encountered. The second argument is an object of type AttributeList, an
interface defined in package org.xml.sax that provides sequential or random
access to element attributes by name. (You've undoubtedly seen attributes before
in HTML; in the line <TABLE BORDER="1">, BORDER is an attribute whose value is
"1"). Since Listing 1 includes no attributes, they don't appear in Table 1.
You'll see examples of attributes in the sample application later in this
article.
Since SAX doesn't provide any information about the context of the elements it
encounters (that <AUTHOR> appears inside <POEM> in Listing 1 above, for
example), it is up to you to supply that information. Application programmers
often use stacks in startElement() and endElement(), pushing objects onto a
stack when an element starts, and popping them off of the stack when the element
ends.
Process blocks of text
The characters() method indicates character content in the XML document --
characters that don't appear inside an XML tag, in other words. This method's
signature is a bit odd. The first argument is an array of bytes, the second is
an index into that array indicating the first character of the range to be
processed, and the third argument is the length of the character range.
It might seem that an easier API would have simply passed a String object
containing the data, but characters() was defined in this way for efficiency
reasons. The parser has no way of knowing whether or not you're going to use the
characters, so as the parser parses its input buffer, it passes a reference to
the buffer and the indices of the string it is viewing, trusting that you will
construct your own String if you want one. It's a bit more work, but it lets you
decide whether or not to incur the overhead of String construction for content
pieces in an XML file.
The characters() method handles both regular text content and content inside
CDATA sections, which are used to prevent blocks of literal text from being
parsed by an XML parser.
Other methods
There are three other methods in the DocumentHandler interface:
ignorableWhitespace(), processingInstruction(), and setDocumentLocator().
ignorableWhitespace() reports occurrences of white space, and is usually unused
in nonvalidating SAX parsers (such as the one we're using for this article);
processingInstruction() handles most things within <? and ?> delimiters; and
setDocumentLocator() is optionally implemented by SAX parsers to give you access
to the locations of SAX events in the original input stream. You can read up on
these methods by following the links on the SAX interfaces in Resources.
Implementing all of the methods in an interface can be tedious if you're only
interested in the behavior of one or two of them. The SAX package includes a
class called HandlerBase that basically does nothing, but can help you take
advantage of just one or two of these methods. Let's examine this class in more
detail.
HandlerBase: A do-nothing class
Often, you're only interested in implementing one or two methods in an
interface, and want the other methods to simply do nothing. The class
org.xml.sax.HandlerBase simplifies the implementation of the DocumentHandler
interface by implementing all of the interface's methods with do-nothing bodies.
Then, instead of implementing DocumentHandler, you can subclass HandlerBase, and
only override the methods that interest you.
For example, say you wanted to write a program that just printed the title of
any XML-formatted poem (like TitleFinder in Listing 1). You could define a new
DocumentHandler, like the one in Listing 2 below, that subclasses HandlerBase,
and only overrides the methods you need. (See Resources for an HTML file of
TitleFinder.)

012 /**
013 * SAX DocumentHandler class that prints the contents of "TITLE" element
014 * of an input document.
015 */
016 public class TitleFinder extends HandlerBase {
017 boolean _isTitle = false;
018 public TitleFinder() {
019 super();
020 }
021 /**
022 * Print any text found inside a <TITLE> element.
023 */
024 public void characters(char[] chars, int iStart, int iLen) {
025 if (_isTitle) {
026 String sTitle = new String(chars, iStart, iLen);
027 System.out.println("Title: " + sTitle);
028 }
029 }
030 /**
031 * Mark title element end.
032 */
033 public void endElement(String element) {
034 if (element.equals("TITLE")) {
035 _isTitle = false;
036 }
037 }
038 /**
039 * Find contents of titles
040 */
041 public static void main(String args[]) {
042 TitleFinder titleFinder = new TitleFinder();
043 try {
044 Parser parser = ParserFactory.makeParser("com.ibm.xml.parsers.SAXParser");
045 parser.setDocumentHandler(titleFinder);
046 parser.parse(new InputSource(args[0]));
047 } catch (Exception ex) {
048 ; // OK, so sometimes laziness *isn't* a virtue.
049 }
050 }
051 /**
052 * Mark title element start
053 */
054 public void startElement(String element, AttributeList attrlist) {
055 if (element.equals("TITLE")) {
056 _isTitle = true;
057 }
058 }

Listing 2. TitleFinder: A DocumentHandler derived from HandlerBase that prints
TITLEs
This class's operation is very simple. The characters() method prints character
content if it's inside a <TITLE>. The private boolean field _isTitle keeps track
of whether the parser is in the process of parsing a <TITLE>. The startElement()
method sets _isTitle to true when a <TITLE> is encountered, and endElement()
sets it to false when </TITLE> is encountered.
To extract <TITLE> content from <POEM> XML, simply create a <Parser> (I'll show
you how to do this in the sample code below), call the Parser's
setDocumentHandler() method with an instance of TitleFinder, and tell the Parser
to parse XML. The parser will print anything it finds inside a <TITLE> tag.
The TitleFinder class only overrides three methods: characters(),
startElement(), and endElement(). The other methods of the DocumentHandler are
implemented by the HandlerBase superclass, and those methods do precisely
nothing -- just what you would have done if you'd implemented the interface
yourself. A convenience class like HandlerBase isn't necessary, but it
simplifies the writing of handlers because you don't need to spend a lot of time
writing idle methods.
As an aside, sometimes in Sun documentation you'll see javadocs with method
descriptions like "deny knowledge of child nodes." Such a description has
nothing to do with paternity suits or Mission: Impossible; instead, it is a dead
giveaway that you're looking at a do-nothing convenience class. Such classes
often have the words Base, Support, or Adapter in their names.
A convenience class like HandlerBase does the job, but still isn't quite smart
enough. It doesn't limit you to a <TITLE> element inside a <POEM>; it would
print the titles of HTML files, too, for example. And any tags inside a <TITLE>,
such as <B> tags for bolding, would be lost. Since SAX is a simplified
interface, it's left up to the application developer to handle things like tag
context.
Now you've seen a useless, simple example of SAX. Let's get into something more
functional and interesting: an XML language for specifying AWT menus.
An applied example: AWT menus as XML
Recently I needed to write a menu system for a Java program I was developing.
Writing menus in Java 1.1 is really quite easy. The top-level object in a menu
structure is either a MenuBar or a PopupMenu object. A MenuBar contains sub-Menu
objects, while PopupMenu and Menu objects can contain Menus, MenuItems, and
CheckboxMenuItems. Typically, objects of this type are constructed manually in
Java code, and built into a menu tree via calls to the add() methods of the
parent object.
Listing 3 shows the Java code that creates the menu shown in Figure 1.
MenuBar menubarTop = new MenuBar();
Menu menuFile = new Menu("File");
Menu menuEdit = new Menu("Edit");

menubarTop.add(menuFile);
menubarTop.add(menuEdit);

menuFile.add(new MenuItem("Open"));
menuFile.add(new MenuItem("Close"));
menuFile.add(new MenuItem("And so on..."));
menuEdit.add(new MenuItem("Cut"));
menuEdit.add(new MenuItem("Paste"));
menuEdit.add(new MenuItem("Delete"));

Frame frame = new Frame("ManualMenuDemo");
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
frame.setMenuBar(menubarTop);
frame.pack();
frame.show();
Listing 3. Creating a simple menu
Figure 1 below shows the simple menu that was handcoded in Java from Listing 3.

Figure 1. The resulting menu of Listing 3 (below)

Simple enough, right? Well, not for me. Remember, I'm a lazy programmer, and I
don't like having to write all of this code to create these menus. And I haven't
even begun to write all of the ActionListener and ItemListener classes I need to
actually make these menus operate. No, I want something easier.
I'd much rather have a menu specification language that lets me specify the menu
structurally, and notifies my program through a single interface when user
events occur. I also want to be able to reconfigure my menus without having to
rewrite any code. I want to create menu structures for naive or expert users
simply by changing the menu specification, and possibly rename the menu items
without changing any code. I want lots of functionality, and I don't want to
have to work for it.
Since I'm lazy, I'll choose an off-the-shelf SAX XML parser to do my work for
me. I'll specify the file format as an XML file. Then I'll create a class called
SaxMenuLoader that uses a SAX XML parser to create menu structures defined by
XML, stores the menus in a Hashtable, and then returns the menus when I ask for
them by name.
This SaxMenuLoader will also listen for ActionEvents and ItemEvents from the
menu items it creates, and will call appropriate handler methods to handle the
actions. Once I've written this SaxMenuLoader, all I need to do in the future is
create a SaxMenuLoader instance and tell it to load my XML menu specification;
then I can ask it by name for the MenuBars and PopupMenus defined in the XML.
(Well, I'll also have to write and name the handlers, but that's application
functionality. This system can't do everything for me. Yet.)
Menu XML
For this example, I've created a little language I'll call Menu XML. Depending
on your application, you may want to implement a standard XML dialect, defined
in a document type definition (DTD) by a standards organization or some other
group. In this case, I'm just using XML for controlling the configuration of my
application, so I don't care if the XML is standardized.
I'll introduce Menu XML with an example, which appears in Listing 4. (See
Resources for an HTML file for Menu XML.)
001 <?xml version="1.0"?>
002
003 <Menus>
004
005 <!-- The menu bar at the top of the frame -->
006 <MenuBar NAME="TopMenu">
007
008 <Menu NAME="File" HANDLER="FileHandler">
009 <MenuItem NAME="FileOpen" LABEL="Open..."/>
010 <MenuItem NAME="FileSave" LABEL="Save"/>
011 <MenuItem NAME="FileSaveAs" LABEL="Save As..."/>
012 <MenuItem NAME="FileExit" LABEL="Exit"/>
013 </Menu>
014
015 <Menu NAME="Edit" HANDLER="EditHandler">
016 <MenuItem NAME="EditUndo" LABEL="Undo"/>
017 <MenuItem NAME="EditCut" LABEL="Cut"/>
018 <MenuItem NAME="EditPaste" LABEL="Paste"/>
019 <MenuItem NAME="EditDelete" LABEL="Delete"/>
020 <CheckboxMenuItem NAME="EditReadOnly" LABEL="Disable Button 1"
021 HANDLER="Button1Enabler"/>
022 </Menu>
023
024 <Menu NAME="Help" HANDLER="HelpHandler">
025 <MenuItem NAME="HelpAbout" LABEL="About"/>
026 <MenuItem NAME="HelpTutorial" LABEL="Tutorial"/>
027 </Menu>
028
029 </MenuBar>
030
031 <PopupMenu NAME="Pop1" HANDLER="PopupHandler">
032 <Menu NAME="Sub Menu 1" HANDLER="SubMenu1Handler">
033 <MenuItem NAME="Item 1" COMMAND="Item One"/>
034 <MenuItem NAME="Item 2" COMMAND="Item Two"/>
035 </Menu>
036 <MenuItem NAME="Item 3" COMMAND="Item Three"/>
037 <MenuItem NAME="Item 4" COMMAND="Item Four"/>
038 <MenuItem NAME="Item 5" COMMAND="Item Five"
039 HANDLER="com.javaworld.feb2000.sax.DynamicMenuItemHandler"/>
040 </PopupMenu>
041
042 </Menus>
fListing 4. Sample Menu XML to be processed by sample code
This language has just a few tags and attributes:
<Menus>: This is the document element for this language. The <menus> tag
simply groups all of the menus below it.
<MenuBar NAME="name">: The <MenuBar> tag defines a new java.awt.MenuBar
object. When parsing is completed, the menu bar will be accessible by the
given name.
<PopupMenu NAME="name">: The <PopupMenu> tag defines a new java.awt.PopupMenu
object. When parsing is completed, the popup menu will be accessible by the
given name.
<MenuItem NAME="name" [LABEL="label"] [COMMAND="command"]>: This tag defines a
java.awt.MenuItem. The item's label defaults to its name, but can be set with
the LABEL attribute. The default actionCommand for the item is also the item's
name, but may be set with the COMMAND attribute.
<CheckboxMenuItem NAME="name" [LABEL="label"] [COMMAND="command"]>: This tag
defines a java.awt.CheckboxMenuItem. It's just like a MenuItem, except that
the menu item checks and unchecks when selected, instead of executing an
action.
Any of these tags may optionally take an attribute HANDLER="handlerName", which
indicates the name of the handler for that object and all of its children
(unless one of its children overrides the current handler by defining its own
handler). The handler name indicates what object and method are to be called
when the menu item is activated. The mechanism for associated handler names with
their handler objects is explained in the implementation discussion below.
The containment relationship among the tags directly reflects the containment
relationship of the resulting objects. So, for example, the PopupMenu called
Pop1 defined in Listing 4, line 31, contains a single Menu and three MenuItems.
As the SaxMenuLoader class parses the XML file, it creates appropriate Java menu
objects and connects them to reflect the XML structure. Let's look at the code
for SaxMenuLoader.
Load Menu XML with SAX: The SaxMenuLoader class
The following is a list of SaxMenuLoader's responsibilities:
Parses the Menu XML file using a SAX parser.
Builds the menu tree.
Acts as a repository for the MenuBar and PopupMenu items defined in the Menu
XML.
Maintains a repository of event handler objects that are called when the user
selects menu items. An event handler object is any object that implements
interface MenuItemHandler, defined by this package to unify action and item
events from menu items. Any object that implements this interface can receive
events from MenuItems defined in Menu XML. (I'll cover the MenuItemHandler in
more detail shortly.)
Acts as an ActionListener and ItemListener for all menu items.
Dispatches ActionEvents and ItemEvents to the appropriate handlers for the
menu items.
Use SaxMenuLoader
The MenuDemo class takes two arguments: the name of the Menu XML file to parse,
and the name of the MenuBar to place in the application. MenuDemo.main() simply
creates a MenuDemo instance, and calls that instance's runDemo() method. The
method MenuDemo.runDemo(), shown in Listing 5, demonstrates how to use the
SaxMenuLoader in use. (See Resources for an HTML file of SaxMenuLoader and
MenuDemo.)
094 public void runDemo(String[] args) {
095 SaxMenuLoader sml = new SaxMenuLoader();
096
097 // Bind names of handlers to the MenuItemHandlers they represent
098 sml.registerMenuItemHandler("FileHandler", this);
099 sml.registerMenuItemHandler("EditHandler", this);
100 sml.registerMenuItemHandler("HelpHandler", this);
101 sml.registerMenuItemHandler("PopupHandler", this);
102 sml.registerMenuItemHandler("SubMenu1Handler", this);
103 sml.registerMenuItemHandler("Button1Enabler", this);
104
105 // Parse the file
106 sml.loadMenus(args[0]);
107
108 // If menu load succeeded, show the menu in a frame
109 MenuBar menubarTop = sml.menubarFind(args[1]);
110 if (menubarTop != null) {
111 Frame frame = new Frame("Menu demo 1");
112 frame.addWindowListener(new WindowAdapter() {
113 public void windowClosing(WindowEvent e) {
114 System.exit(0);
115 }
116 });
117 frame.setMenuBar(menubarTop);
118 _b1 = new Button("Button");
119 _b1.addMouseListener(new MenuPopper(_b1, sml, "Pop1"));
120 frame.add(_b1);
121 frame.pack();
122 frame.show();
123 } else {
124 System.out.println(args[1] + ": no such menu");
125 }
126 }
Listing 5. Using the SaxMenuLoader in the MenuDemo class
In Listing 5, line 95 creates the SaxMenuLoader. Then, lines 98 through 103
register the MenuDemo instance (this) as the MenuItemHandler for all of the
handler names referenced in the Menu XML file. Since MenuDemo implements
MenuItemHandler, it can receive callbacks from the menu items created in the
Menu XML. These registrations are what associate the symbolic menu item handler
names with the application objects that actually do the work. Line 106 tells the
SaxMenuLoader to load the file, and line 109 gets the menu named MenuTop from
the SaxMenuLoader.
The rest of the code is straightforward AWT, except for line 119, which uses a
MenuPopper object to associate a Button object with a pop-up menu. MenuPopper is
a convenience class I wrote that looks up a named pop-up menu from a given
SaxMenuLoader, and associates the pop-up menu with the given AWT component. A
MenuPopper is also a MouseListener, so that when the user clicks the center or
left mouse button on the MenuPopper's component, the MenuPopper shows the pop-up
menu on top of that component.
This is all the code necessary to get menus from a Menu XML file. You might have
noticed that this is about as many lines of code as it took to create a small
menu manually. But this technique provides much more power. You can reconfigure
the menus without recompiling or redistributing any class files. What's more,
you can extend the application with new menu items and handlers for those items
without recompiling. (I'll discuss how to dynamically extend a running
application with dynamic menu item handlers in the "Dynamic Menu Item Handlers"
section later in the article.) From now on, creating extensible application
menus is a lazy person's job!
So far, I've shown you how to use the SaxMenuLoader. Now let's take a look at
how it works.
Parse the XML with SAX
You'll remember that an object that implements DocumentHandler can receive
events from a SAX parser. Well, the SaxMenuLoader has a SAX parser and it also
implements DocumentHandler, so it can receive events from that parser.
SaxMenuLoader's loadMenus() method is overloaded for multiple types of inputs
(File, InputStream, and so forth), but all eventually call the method shown in
Listing 6.
279 public void loadMenus(Reader reader_) {
280 if (_parser == null)
281 return;
282 _parser.setDocumentHandler(this);
283 try {
284 _parser.parse(new InputSource(reader_));
285 } catch (SAXException ex) {
286 System.out.println("Parse error: " + ex.getMessage());
287 } catch (Exception ex) {
288 System.err.println("SaxMenuFactory.loadMenus(): " + ex.getClass().getName()
+
289 ex.getMessage());
290 ex.printStackTrace();
291 }
292 }
Listing 6. loadMenus() uses a SAX parser to parse menus
There's not much to this method -- it simply sets the parser's DocumentHandler
to this, calls the parser's parse() method, and handles any exceptions. How
could this possibly build a menu?
The answer is in the implementation of DocumentHandler. Since SaxMenuLoader
implements DocumentHandler, all of the menu-building functionality (which is
specific to this application) occurs in the DocumentHandler implementation
methods -- primarily in startElement().
SaxMenuLoader.startElement()
Listing 7 shows the implementation of startElement() that creates the MenuBar,
PopupMenu, Menu, MenuItem, and CheckboxMenuItem objects and associates them with
one another. As the parser parses the XML, it calls SaxMenuLoader.startElement()
each time it encounters an opening XML tag, passing the tag name and the list of
attributes for the tag. startElement() simply calls an appropriate protected
method within SaxMenuLoader based on the tag name.
445 public void startElement(String sName_, AttributeList attrs_) {
446
447 // Anything may override handler for its context
448 String sHandler = attrs_.getValue("HANDLER");
449 pushMenuItemHandler(sHandler);
450
451 // If "menubar", we're building a MenuBar
452 if (sName_.equals("MenuBar")) {
453 defineMenuBar(attrs_);
454 }
455
456 // If "popupMenu", we're building a PopupMenu
457 else if (sName_.equals("PopupMenu")) {
458 definePopupMenu(attrs_);
459 }
460
461 // If "menu", then create a menu.
462 else if (sName_.equals("Menu")) {
463 defineMenu(attrs_);
464 }
465
466 else if (sName_.equals("MenuItem")) {
467 defineMenuItem(attrs_);
468 }
469
470 else if (sName_.equals("CheckboxMenuItem")) {
471 defineCheckboxMenuItem(attrs_);
472 }
473 }
Listing 7. SaxMenuLoader.startElement()
This method does one additional thing: as noted above, any tag in Menu XML can
include an optional HANDLER name, which defines the handler for all items that
element contains. For example, line 8 of Listing 4 defines FileHandler as the
name of the handler to call when any item in the File menu is selected.
startElement() implements this functionality in lines 448 and 449 by detecting
the HANDLER attribute on any tag and calling pushMenuItemHandler, which pushes
the named MenuItemHandler onto a stack maintained by the SaxMenuLoader.
Therefore, whatever is on top of the MenuItemHandler stack is always the
appropriate handler for any item to be created. startElement() always pushes a
handler (unless none has ever been specified); when an element doesn't specify a
HANDLER, pushMenuItemHandler pushes another copy of whatever is on top of the
stack. Later, endElement() always pops a handler off of the stack if it can, so
the balance between stack pushes and pops is always maintained.
The methods called by startElement do the actual work of creating the menu tree.
I'll cover those next.
Create the Menu tree
Listing 8 shows defineMenuBar, which is called when startElement receives a
MenuBar element.
154 protected void defineMenuBar(AttributeList attrs_) {
155 String sMenuName = attrs_.getValue("NAME");
156 _menubarCurrent = new MenuBar();
157 if (sMenuName != null) {
158 _menubarCurrent.setName(sMenuName);
159 }
160 register(_menubarCurrent);
161 }
...
190 protected void definePopupMenu(AttributeList attrs_) {
191 String sMenuName = attrs_.getValue("NAME");
192 _popupmenuCurrent = new PopupMenu();
193 if (sMenuName != null) {
194 _popupmenuCurrent.setName(sMenuName);
195 }
196 register(_popupmenuCurrent);
197 }
Listing 8. defineMenuBar() and definePopupMenu()
As you can see, defineMenuBar() does very little: it simply creates a new
MenuBar, assigns it a name if one is provided, and then registers it. The
register() method simply stores the MenuBar in a protected hash table, so that
you can retrieve it by name using the method menuBarFind() (as in Listing 5,
line 109). definePopupMenu() works just like defineMenuBar(), except it creates
a PopupMenu object and registers it so that popupmenuFind() can return the new
PopupMenu by name.
The private static fields _menubarCurrent and _popupmenuCurrent contain a
reference to the current MenuBar or PopupMenu being built, to which subsequent
menus or menu items are added. Listing 9 shows the definition of a new Menu
object.
052 protected void add(Menu menu_) {
053 Menu menuCurrent = menuCurrent();
054 if (menuCurrent != null) {
055 menuCurrent.add(menu_);
056 } else {
057 if (_menubarCurrent != null) {
058 _menubarCurrent.add(menu_);
059 }
060 if (_popupmenuCurrent != null) {
061 _popupmenuCurrent.add(menu_);
062 }
063 }
064 }
...
130 protected void defineMenu(AttributeList attrs_) {
131 String sMenuName = attrs_.getValue("NAME");
132
133 Menu menuNew = new Menu(sMenuName);
134 if (sMenuName != null) {
135 menuNew.setName(sMenuName);
136 } else {
137 sMenuName = menuNew.getName();
138 }
139 System.out.print("Created menu " + sMenuName);
140
141 // Add to current context and make new menu the current menu to build
142 add(menuNew);
143 pushMenu(menuNew);
144 }
Listing 9. add(Menu) and defineMenu()
defineMenu() is only slightly more complicated than defineMenuBar(), because the
menu being created is added to whatever is currently being built, whether that
is a MenuBar, a PopupMenu, or another Menu. The defineMenu() method creates a
new Menu object, sets its name, and then calls add(Menu), which adds the given
Menu either to the top menu of the menu stack (a private field), the current
MenuBar, or the PopupMenu under construction. After adding the new Menu to the
appropriate parent, defineMenu() pushes the new menu onto the menu stack.
Anything contained inside the current menu in the XML file will be added to the
current menu at the top of the stack, so the resulting menu structure reflects
the XML structure. endElement() always calls popMenu() when it receives a <Menu>
tag, so the top of the stack always refers to the menu currently under
construction.
These stacks are necessary because, as stated before, SAX doesn't keep track of
tag context; that's part of the application-specific functionality that SAX
leaves up to you.
MenuItem and CheckboxMenuItems are created by the code shown in Listing 10, and
work in a fashion very similar to defineMenu().
104 protected void defineCheckboxMenuItem(AttributeList attrs_) {
105
106 // Get attributes
107 String sItemName = attrs_.getValue("NAME");
108 String sItemLabel = attrs_.getValue("LABEL");
109
110 // Create new item
111 CheckboxMenuItem miNew = new CheckboxMenuItem(sItemName);
112
113 if (sItemName != null) {
114 miNew.setName(sItemName);
115 } else {
116 sItemName = miNew.getName();
117 }
118
119 // Set menu attributes
120 if (sItemLabel != null) {
121 miNew.setLabel(sItemLabel);
122 } else {
123 miNew.setLabel(sItemName);
124 }
125
126 // Add menu item to whatever's currently being built
127 add(miNew);
128 miNew.addItemListener(this);
129 }
...
155 protected void defineMenuItem(AttributeList attrs_) {
156
157 // Get attributes
158 String sItemName = attrs_.getValue("NAME");
159 String sItemLabel = attrs_.getValue("LABEL");
160
161 // Create new item
162 MenuItem miNew = new MenuItem(sItemName);
163 if (sItemName != null) {
164 miNew.setName(sItemName);
165 } else {
166 sItemName = miNew.getName();
167 }
168
169 // Set menu attributes
170 if (sItemLabel != null) {
171 miNew.setLabel(sItemLabel);
172 } else {
173 miNew.setLabel(sItemName);
174 }
175
176 // Add menu item to whatever's currently being built
177 add(miNew);
178 miNew.addActionListener(this);
179 }
Listing 10. defineMenuItem() and defineCheckboxMenuItem()
Both of these methods create an object of the appropriate type (MenuItem or
CheckboxMenuItem), set the new object's name and label, and add() the object to
whatever is on top of the menu stack (or to the PopupMenu under construction --
MenuItems can't be added to MenuBars). The only real difference between the two
is that a MenuItem notifies ActionListeners of user actions, and a
CheckboxMenuItem notifies ItemListeners. In either case, the SaxMenuLoader
instance itself is listening for the item events, so that it can dispatch them
to the appropriate MenuItemHandler when the ActionEvent or ItemEvent occurs.
When the parser successfully completes parsing, the MenuItemHandler stack and
the Menu stack will both be empty, and the hash tables will hold all of the the
MenuBar and PopupMenu objects, indexed by their names. You can ask for MenuBars
and PopupMenus by name, since they're built and waiting to be requested.
Let's now turn our attention to the runtime behavior of these menus.
SaxMenuLoader menus at runtime
I've described how menus are created when the menu is parsed, but how do menus
actually appear in an application?
You'll recall that the top-level menu bar comes from the SaxMenuLoader, when you
fetch it by name from the SaxMenuLoader (if you don't recall, see Listing 5 and
the following discussion).
When the user selects a menu item, all of that menu item's listeners are
notified of the selection, right? Well, Listing 10 above shows that it is the
SaxMenuLoader itself that is listening for these events. A menu item selected by
a user notifies the SaxMenuLoader by calling its actionPerformed() or
itemStateChanged() method (depending on whether the item was a regular or
checkbox menu item). Listing 11 shows actionPerformed() and itemStateChanged()
of SaxMenuLoader.
038 public void actionPerformed(ActionEvent e) {
039 Object oSource = e.getSource();
040 if (oSource instanceof MenuItem) {
041 MenuItem mi = (MenuItem) oSource;
042 MenuItemHandler mih = menuitemhandlerFind(mi);
043 if (mih != null) {
044 mih.itemActivated(mi, e, mi.getActionCommand());
045 }
046 }
047 }
...
203 public void itemStateChanged(ItemEvent e) {
204 Object oSource = e.getSource();
205 if (oSource instanceof MenuItem) {
206 MenuItem mi = (MenuItem) oSource;
207 MenuItemHandler mih = menuitemhandlerFind(mi);
208 if (mih != null) {
209 if (e.getStateChange() == ItemEvent.SELECTED) {
210 mih.itemSelected(mi, e, mi.getActionCommand());
211 } else {
212 mih.itemDeselected(mi, e, mi.getActionCommand());
213 }
214 }
215 }
216 }
Listing 11. actionPerformed() and itemStateChanged() receive notification from
menu items
actionPerformed() gets the source object that caused the action; if that action
was a MenuItem, it looks up that item's handler and calls the handler's
itemActivated() method. itemStateChanged() is similar, except that it calls the
handler's itemSelected() or itemDeselected() methods, depending on the state
change indicated by the ItemEvent passed in.
Notice that in both cases, menuitemHandlerFind() is used to find a handler for
the menu item. Remember that you register the menu item handlers with the
SaxMenuLoader (Listing 5, lines 098 through 103). But reexamine for a moment
Listing 4, lines 038 through 039:
038 <MenuItem NAME="Item 5" COMMAND="Item Five"
039 HANDLER="com.javaworld.feb2000.sax.DynamicMenuItemHandler"/>

Instead of a registered handler name, the value of the attribute HANDLER is a
class name. This is how I implemented menu item handlers that are loaded at
runtime, so that menus can be extended without recompiling the application.
Dynamic menu item handlers
Just a few lines of code allow a Menu XML file to specify any Java class name as
a MenuItemHandler (assuming that the class is accessible and indeed implements
that interface). Listing 12 shows how to do this.
340 protected MenuItemHandler menuitemhandlerFind(String sName_) {
341 if (sName_ == null)
342 return null;
343 MenuItemHandler mih = (MenuItemHandler) _htMenuItemHandlers.get(sName_);
344
345 // Not registered. See if it's a class name, and if it is, create an
346 // instance of that class and register it.
347 if (mih == null) {
348 try {
349 Class classOfHandler = Class.forName(sName_);
350 MenuItemHandler newHandler = (MenuItemHandler)classOfHandler.newInstance();
351 registerMenuItemHandler(sName_, newHandler);
352 mih = newHandler;
353 } catch (Exception ex) {
354 System.err.println("Couldn't find menu item handler '" + sName_ +
355 ": no such registered handler, and couldn't create");
356 System.err.println(sName_ + ": " + ex.getClass().getName() + ": " +
ex.getMessage());
357 }
358 }
359 return mih;
360 }
...

406 protected void pushMenuItemHandler(String sName_) {
407 MenuItemHandler l = menuitemhandlerFind(sName_);
408 if (l == null)
409 l = menuitemhandlerCurrent();
410 pushMenuItemHandler(l);
411 }
Listing 12. Implementation of dynamic item handlers
Remember that each time SaxMenuLoader encounters a HANDLER attribute, it calls
pushMenuItemHandler (see Listing 7). Listing 12 (lines 406 through 411) shows
that pushMenuItemHandler(String) uses menuitemhandlerFind(String) to look up the
handler by name. menuitemhandlerFind(String) tries to find the item handler in
the protected _htMenuItemHandlers hash table. If no such handler is registered,
it assumes the name of the handler is a class name. It tries to load the class
whose name is the handler name; if it succeeds, it creates an instance of that
class. menuitemhandlerFind(String) returns the resulting handler, which was
either found in the hash table or loaded on the fly.
The Menu XML package now provides a flexible, easy facility for defining the
menus of an application, and extending them without recompiling. I can add items
to the menu at will, and define handlers for those new menu items that are
dynamically loaded at runtime. Menus are now easy!
Conclusion
SAX is a powerful tool for simple XML processing. With a little headwork, it's
easy to create applications that take advantage of XML's extensibility,
flexibility, and standardization. In this article, you've seen how SAX works,
and have been introduced to a useful example of XML in action.
In the next article in this series, I'll show how to use a validating SAX
parser, which detects errors in the input XML by checking its structure against
a grammar called a document type definition (DTD). I'll also present a special
DocumentHandler class called LAX (the Lazy API for XML), which makes writing
document handler classes a piece of cake. Tune in next month!
About the author
Mark Johnson works in Ft. Collins, Colo., as a designer and developer for
Velocity. by day, and as a JavaWorld columnist by night -- very late at
night.

Home | Mail this Story | Resources and Related Links
Advertisement: Support JavaWorld, click here!

(c) Copyright 2000 ITworld.com, Inc., an IDG Communications company
Resources
"XML for the Absolute Beginner," Mark Johnson (JavaWorld, April 1999):
http://www.javaworld.com/javaworld/jw-04-1999/jw-04-xml.html
David Megginson, creator of SAX, has an excellent SAX site:
http://www.megginson.com/SAX/index.html
"Portable Data/Portable Code: XML & Java Technologies," JP Morgenthal -- Sun
whitepaper on the combination of XML and Java:
http://java.sun.com/xml/ncfocus.html
"XML and Java: A Potent Partnership, Part 1," Todd Sundsted (JavaWorld, June
1999) gives an example of how XML and SAX can be useful for enterprise
application integration:
http://www.javaworld.com/javaworld/jw-06-1999/jw-06-howto.html
"Why XML is Meant for Java," Matt Fuchs (WebTechniques, June 1999) is an
excellent article on XML and Java:
http://www.webtechniques.com/archives/1999/06/fuchs/
Download the source files for this article in one of the following formats:
In jar format (with class and java files):
http://www.javaworld.com/javaworld/jw-03-2000/xmlsax/SAXMar2000.jar
In tgz format (gzipped tar):
http://www.javaworld.com/javaworld/jw-03-2000/xmlsax/SAXMar2000.tgz
In zip format:
http://www.javaworld.com/javaworld/jw-03-2000/xmlsax/SAXMar2000.zip
Feedback: jweditors@javaworld.com
Technical difficulties: webmaster@javaworld.com
URL: http://www.javaworld.com/jw-03-2000/jw-03-xmlsax.html
Last modified: Monday, April 10, 2000

--
什么时候发了，要把微软给买了，不过没想好有什么用，
或许给解散了，为人类作点贡献。

※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.25.111]
返回上一页 回到目录 回到页首 下一篇


Programming XML in Java, Part 2

 发信人: maht (Trill-TimeKiller), 信区: XML
标 题: Programming XML in Java, Part 2
发信站: BBS 水木清华站 (Wed Apr 12 16:46:23 2000)

原文：
http://www.javaworld.com/javaworld/jw-04-2000/jw-0407-advsax_p.html

XML Extra
Programming XML in Java, Part 2
Experience the joy of SAX, LAX, and DTDs
Summary
The first article in this series introduced SAX, the Simple API for XML. This
article delves further into using SAX in your applications. First, you'll read
about document type definitions (DTDs), which specify the structure of an XML
document. You'll learn about LAX, the Lazy API for XML (developed for this
article), which makes using SAX even simpler. You'll then see LAX applied in a
small document-processing system that uses the same XML data to generate
documents for multiple purposes. (3,600 words)
By Mark Johnson

f you read last month's article, you already understand how you can use SAX (the
Simple API for XML) to process XML documents. (If you haven't read it yet, you
may want to start there; see "Read the Whole Series!" below). In that article, I
explained how application writers implement the SAX DocumentHandler interface,
which takes a specific action when a particular condition (such as the start of
a tag) occurs during the parsing of an XML document. But what good is that
function? Read on.
Programming XML in Java: Read the whole series!
Part 1. Use the Simple API for XML (SAX) to process XML in Java
easily
Part 2. Learn about SAX and XML validation through illustrative
examples

You'll also remember that an XML parser checks that the document is well formed
(meaning that roughly all of the open and close tags match and don't overlap in
nonsensical ways). But even well-formed documents can contain meaningless data
or have a senseless structure. How can such conditions be detected and reported?

This article answers both questions through an illustrative example. I'll start
first with the latter question: once the document is parsed, how do you ensure
that the XML your program is processing actually makes sense? Then I'll
demonstrate an extension to XML that I call LAX (the Lazy API for XML), which
makes writing handlers for SAX events even easier. Finally, I'll tie all of the
themes together and demonstrate the technology's usefulness with a small example
that produces both formatted recipes and shopping lists from the same XML
document.
Garbage in, garbage out
One thing you may have heard about XML is that it lets the system developer
define custom tags. With a nonvalidating parser (discussed in Part 1 of this
series), you certainly have that ability. You can make up any tag you want and,
as long as you balance your open and close tags and don't overlap them in absurd
ways, the nonvalidating SAX parser will parse the document without any problems.
For example, a nonvalidating SAX parser would correctly parse and fire events
for the document in Listing 1.
Listing 1. A well-formed, meaningless document
001 <?xml version="1.0">
002 <Art CENTURY="20">
003 <Dada>

004 <Author CENTURY="18" NOMDEPLUME="Voltaire">
005 Fran&ccedil;ois-Marie Arouet
006 </Author>
007 <Tree SPECIES="Maple">
008 <Yes/>
009 <Book AUTHOR="Musashi, Miyamoto">
010 <Title LANG="English">The Book of Five Rings</Title>
011 <Title LANG="Nihongo">Go Rin No Sho</Title>
012 <Filter POLY="Chebyshev" POLES="2"/>
013 <Title LANG="Espanol">El Libro de Cinco Anillos</Title>
014 <Title LANG="Francais">Le Livre de Cinq Bagues</Title>
015 </Book>
016 <Bahrain FORMAT="MP3">
017 <Cathedral CITTA="Firenze">
018 <Nome>Santa Maria del Fiore</Nome>
019 <Architetto>Brunelleschi, Filippo (1377-1466)</Architetto>
020 <Ora FORMAT="DMY24">22032000134591</Ora>
021 </Cathedral>
022 </Bahrain>
023 <Phobias>
024 <Herbs NAME="Ma Huang"/>
025 <Appliance COLOR="Harvest Gold">Yuck</Appliance>
026 </Phobias>
027 </Tree>
028 </Dada>
029 </Art>

A nonvalidating SAX parser would produce a valid event stream for the document
in Listing 1 because the input document is well formed. It's really stupid
input, but it is well formed. Every opening tag has a corresponding close tag,
and the tags don't overlap (meaning there are no combinations of tags like
<A><B></A></B>). So a nonvalidating SAX parser will have no problem with Listing
1.
Unfortunately, if you write a program that, for example, summarizes museum
collections, formats architectural information, or prints multilingual card
catalogs for libraries, your program could read this really stupid XML and
produce really stupid output, because it might pull out tags it recognizes (like
<Dada>, <Cathedral>, or <Book>). As the saying goes, "Garbage in, garbage out."
To minimize the chance that your program produces garbage you should devise a
way to detect and reject garbage in the input. Then, given meaningful input, you
can focus on creating reasonable output.
Think of a document as having three levels of correctness: lexical, syntactic,
and semantic. Lexical correctness is what I mean when I say "well formed": the
basic structure of the document is reasonable and correct, but nothing about the
content of the tags is checked. Any tag can occur inside any other tag any
number of times, any tag can take any attribute, and attributes can take on any
value. So, Listing 1 is well formed, but it makes no sense, because there is no
control over what tags and attributes appear in the structure, and where.
Syntactic correctness means that the document is not only well formed, but that
it also contains certain tags, in certain combinations. An XML document can
include a section, called a document type definition (DTD), that specifies the
rules for syntactic correctness.
A DTD lets a system designer create a custom markup language, a dialect of XML.
A DTD indicates which tags may (or must) occur inside other specified tags, what
attributes a tag may have, the required order of the tags, and so on. A
validating parser uses a DTD to check the document it is parsing for syntactic
correctness. The parser prints error and warning messages for any problems it
finds, and then rejects any document that doesn't conform to the DTD. The
application programmer can then write code assuming that the structure of the
document is correct, because the parser already checked it.
So, for example, in Listing 1 a designer might write a DTD that defines a <Book>
tag as containing only one or more <Title> tags. The parser would report the
presence of the <Filter> tag in line 12 as an error, because the DTD doesn't
allow it.
A DTD is also an excellent way to specify the input to your program. An XML
input document either corresponds to a particular DTD or it doesn't. Your
program can correctly process any input that conforms to a given DTD. A DTD also
lets you test your application for correctness or completeness; if an input
document conforms to the DTD, but your program doesn't process it properly, then
you have a bug or a missing feature.
XML parsers don't provide much in the way of checking for semantic correctness.
Semantic correctness means that the actual instance data is true for the
purposes of the application. A validating parser could report an error when it
finds a FORMAT attribute on a <Bahrain> tag (as occurs in line 16, Listing 1).
But it's a lot to ask any parser to check whether the Cathedral of Santa Maria
del Fiore is in Bahrain or in Italy. Semantic correctness remains the domain of
your application: it's up to you to add meaning to the XML document you've
defined. A validating XML parser and a DTD help to automate the detection of
gross lexical and syntactic errors in the input to your program, allowing you to
focus on the data's meaning.
By the way, the HTML used for creating Web pages is specified in a DTD, although
it's an SGML DTD, which is considerably more complex and expressively powerful
than an XML DTD. XML DTDs are essentially a subset of SGML DTDs, with some minor
notational differences. The HTML DTD exists as an unambiguous specification of
what input an HTML-processing program must accept. XHTML, an XML-compatible
version of HTML just released by the World Wide Web Consortium (W3C), unifies
HTML and XML, and specifies an XML DTD for HTML, which is then called XHTML. In
the next section, I'll create a DTD for a small XML dialect for describing
recipes.
Parlez-vous DTD?
Two people generally can't talk to one another unless they speak a mutually
understood language. Likewise, two programs can't communicate via XML unless the
programs agree on the XML language they use. A DTD defines a set of rules for
the allowable tags and attributes in an XML document, and the order and
cardinality of the tags. Programs using the DTD must still agree on what the
tags mean (semantics again), but a DTD defines the words (or, the tags) and the
grammatical rules for a particular XML dialect.
Listing 2 shows a simple DTD for a tiny XML language I call Recipe XML.
Listing 2. The DTD for Recipe XML
001 <!ELEMENT Recipe (Name, Description?, Ingredients?, Instructions?)>
002
003 <!ELEMENT Name (#PCDATA)>
004
005 <!ELEMENT Description (#PCDATA)>
006
007 <!ELEMENT Ingredients (Ingredient)*>
008
009 <!ELEMENT Ingredient (Qty, Item)>
010 <!ATTLIST Ingredient
011 vegetarian CDATA "true">
012
013 <!ELEMENT Qty (#PCDATA)>
014 <!ATTLIST Qty
015 unit CDATA #IMPLIED>
016
017 <!ELEMENT Item (#PCDATA)>
018 <!ATTLIST Item
019 optional CDATA "0">
020
021 <!ELEMENT Instructions (Step)+>
022 <!ELEMENT Step (#PCDATA)>

The DTD in Listing 2 defines a complete, tiny language for transmitting recipes.
Programs that use this DTD can count on the structure of conforming files to
match the rules in the DTD.
I'll go over this file, line by line:
001 <!ELEMENT Recipe (Name, Description?, Ingredients?, Instructions?)>

This line defines a tag using <!ELEMENT. The entire line from the opening
<!ELEMENT to the closing > is called an element type declaration. The
declaration says that a Recipe is composed of a Name, followed by the optional
occurrence of a Description, Ingredients, and Instructions. The comma operator
(,) indicates the valid tags the defined tag may contain, and the order in
which those tags must appear. The question mark operator (?) indicates that
the item to its left is optional. Since Name has only a comma operator after
it, a Recipe must have precisely one Name. The parentheses are for grouping,
and don't appear in the input document.
Therefore, the sequence:
<Recipe><Name>Zabaglione</Name><Recipe>

is a valid Recipe, because it matches the DTD (that is, it consists of a
<Name> followed optionally by a <Description>.) However:
<Recipe>
<Description>Italian dessert</Description>
<Name>Zabaglione</Name>
<Recipe>

is not a valid Recipe, because the Description comes before the Name.
003 <!ELEMENT Name (#PCDATA)>

This line states that a Name tag (or element) contains no other tag types, and
may contain text between its open and close tags. A validating parser will
mark any tag within a Name tag as an error.
007 <!ELEMENT Ingredients (Ingredient)*>

This line states that an Ingredients tag may contain zero or more Ingredient
tags. The asterisk or star operator (*) indicates the tag's zero-or-more
cardinality.
010 <!ATTLIST Ingredient
011 vegetarian CDATA "true">

An attribute list declaration, which uses <!ATTLIST, defines the attributes
for a tag. Only attributes within the attribute list declaration for a tag are
allowed. This line says that the Ingredient tag previously defined has a
single attribute, vegetarian, which is character data (CDATA), and whose
default value is "true". Attribute list declarations all follow this pattern;
one may define multiple attributes, each with a type and default value,
following the tag name.
014 <!ATTLIST Qty
015 unit CDATA #IMPLIED>

This attribute list declaration defines the default value for the unit
attribute as #IMPLIED. That means that the attribute may or may not appear
with the tag; if it doesn't appear, the application supplies the value. This
is how you create an optional attribute.
021 <!ELEMENT Instructions (Step)+>
This line states that an Instructions tag, if present, must contain at least
one Step. The plus-sign operator (+) indicates one or more occurrences of the
item to its left.
DTDs have more operators and conventions, but this example covers the basics.
(You can find out the whole scoop on DTDs in XML in the XML recommendation; see
Resources.)
DTDs are meta-information; that is, they are information about information. You
may already be familiar with this concept. A table in a relational database has
a schema describing such things as the column names, data types, sizes, and
default values for its data. But the table description doesn't contain data
values, it contains a description of the values. Likewise, a DTD is a simple
sort of schema that defines what may be in a particular document type. (There is
currently an effort underway to create an XML schema that is much more like a
database schema; see Resources.)
DTDs are also a bit like BNF, or Backus-Naur Form (see Resources for a
discussion), which describes transformation rules for grammars; however, BNF can
express structures that XML DTDs cannot.
An XML document declares its DTD with a <!DOCTYPE declaration, as shown in
Listing 3. The document type specifies the external DTD used to validate the
document. The top-level tag of the document must be the same as the document
defined by the <!DOCTYPE (in this case, it's Recipe.)
Listing 3. Using an external DOCTYPE declaration
001 <?xml version="1.0"?>
002
003 <!DOCTYPE Recipe SYSTEM "example.dtd">
004
005 <Recipe>
006 <Name>Lime Jell-O Marshmallow Cottage Cheese Surprise</Name>
007 <Description>My grandma's favorite (may she rest in peace.)</Description>
008 <Ingredients>
...<!-- and so on... -->

Line 3 in Listing 3 states that the document that follows must conform to the
DTD contained in the given file, or the file itself is syntactically invalid.
A DTD may also be specified internally, as shown in Listing 4. Note that in
Listing 4, the DTD is terminated by the ]> in line 19.
Listing 4. Internal document type declaration
001 <?xml version="1.0"?>
002
003 <!DOCTYPE Recipe [
004 <!ELEMENT Recipe (Name, Description?, Ingredients?, Instructions?)>
005 <!ELEMENT Name (#PCDATA)>
006 <!ELEMENT Description (#PCDATA)>
007 <!ELEMENT Ingredients (Ingredient)*>
008 <!ELEMENT Ingredient (Qty, Item)>
009 <!ATTLIST Ingredient
010 vegetarian CDATA "true">
011 <!ELEMENT Qty (#PCDATA)>
012 <!ATTLIST Qty
013 unit CDATA #IMPLIED>
014 <!ELEMENT Item (#PCDATA)>
015 <!ATTLIST Item
016 optional CDATA "0">
017 <!ELEMENT Instructions (Step)+>
018 <!ELEMENT Step (#PCDATA)>
019 ]>
020 <Recipe>
021 <Name>Lime Jell-O Marshmallow Cottage Cheese Surprise</Name>
022 <Description>My grandma's favorite (may she rest in peace.)</Description>
...<!-- and so on... -->

The full-text versions of these sample files, which I'll use later, are included
in the source code archives for this article. Download the source files from
Resources and experiment with the SimpleValidatingSaxReporter class, which
creates a validating SAX parser and then parses and validates the document
against the DTD. The main program for this class appears in Listing 5.
Listing 5. Using a validating SAX parser
083 public static void main(String args[]) {
084 SimpleValidatingSaxReporter ssr = new SimpleValidatingSaxReporter();
085 try {
086 ssr.parseDocument(true, ssr, args[0]);
087 } catch (Exception ex) {
088 System.err.println(ex);
089 }
090 }
...
099 protected void parseDocument(boolean isValidating, HandlerBase handler,
String sFilename) {
100 try {
101 // Get a "parser factory", an object that creates parsers
102 SAXParserFactory saxParserFactory = SAXParserFactory.newInstance();
103
104 // Set up the factory to create the appropriate type of parser
105 saxParserFactory.setValidating(isValidating);
106 saxParserFactory.setNamespaceAware(false); // Not this month...
107
108 SAXParser parser = saxParserFactory.newSAXParser();
109
110 parser.parse(new File(sFilename), handler);
111 } catch (Exception ex) {
112 System.err.println("Exception: " + ex);
113 System.exit(2);
114 }
115 }

Line 102 in Listing 5 creates a SAXParserFactory, an object that creates
parsers. Lines 105 to 106 tell the parser factory what kind of parser to create,
and line 108 creates the parser. Line 110 then tells the parser to parse the
file, using the handler passed from main() to handle the events. The handler is
the SimpleValidatingSaxReporter itself, since that class implements HandlerBase.
The result is a stream of SAX events, as long as the input is valid with respect
to its DTD. Experiment with the code by adding and deleting items from the
sample XML files in the source archive.
You'll notice that there are errors in example2.xml, as the parser reports:
e: file:C:/mj-java/XMLSAX2/example2.xml: line 30: org.xml.sax.SAXParseException:
Element "Ingredient" does not allow "Item" here.

The parser recognizes that the order of the Qty and Item tags is reversed. If
you remove the <!DOCTYPE declaration from example2.xml, you get the following
error message, printed by the error handler:
w: file:C:/mj-java/XMLSAX2/example2.xml: line 6: org.xml.sax.SAXParseException:
Valid documents must have a <!DOCTYPE declaration.
e: file:C:/mj-java/XMLSAX2/example2.xml: line 6: org.xml.sax.SAXParseException:
Element type "Recipe" is not declared.

It prints this error message because it has no DTD to check against, so it can't
find the definition of the Recipe tag. Play around with this class to get a feel
for the kind of errors the parser can catch.
Notice that since the ErrorHandler instance you're using merely reports errors,
and doesn't exit when it receives them, the parser continues to try parsing the
file. Whoever writes the error handler (that's you) is responsible for deciding
what to do when errors occur.
Now you finally know enough about using SAX and a validating parser to create an
XML application. I decided to make the process easy on myself, so I created LAX,
which I'll explain next.
LAX: The Lazy API for XML
Writing a document handler for a SAX parser is pretty easy: just subclass
HandlerBase, override the appropriate methods, and do whatever you like in
response to the events coming from the parser. Being a lazy, and therefore
virtuous, programmer (see Part 1 for an explanation), I decided to do some extra
work only once in order to simplify programming in SAX for subsequent projects.
Writing SAX handlers is just too much work.
You see, when you override startElement(), endElement, or characters(), you
always have to check the tag name to decide what to do. So, these methods
typically become large if-then-else blocks. It requires a lot of typing, which
always opens the door for errors, plus I simply can't be bothered to do it. So,
I created LAX, the Lazy API for XML.
LAX lets any class use only naming conventions to handle SAX events, in much the
same way JavaBeans introspection identifies properties and event sets by
examining a class's method signatures. A class can become an event handler
simply by defining methods with the appropriate name and signature. There's no
need for a class to override HandlerBase, since LAX does that for you. To use
LAX, simply create a LAX object, register it as a document handler for the
parser, then register your handler objects with LAX. LAX translates the stream
of XML events into method calls on your objects.
LAX uses Java reflection to find methods in your classes to handle tags in the
XML being parsed. When LAX encounters a tag called, say, <Tag>, it searches
through all of its handlers (instances of classes that you've written), looking
for objects that have either method void startTag() or void
startTag(AttributeList list), and calls that method on any such object it finds.
When it encounters the end tag </Tag>, it searches all of its handlers for a
method called void endTag(), and calls any such methods it finds. When LAX
encounters characters (in its own characters() method), it remembers the current
tag, and searches for and calls all methods with the signature void
textOfTag(String string).
As a result, you don't need to write huge if-then-else statements, implement
DocumentHandler, or extend HandlerBase. Simply write methods with the
appropriate signatures, register an instance of your class with LAX, and parse
the input document with the LAX object as a document handler. What could be
easier?
The source code for LAX is in the source archive for this article, available in
Resources below. Now I'll develop a sample program using LAX.
Managing recipes with LAX
I often get email from readers who want to know how to use Java to process XML
into HTML (or other formats) for display. The following example shows one way to
use the same XML to create HTML files for different purposes, with different
formatting, in a single processing step. The popularity of CGI, ASP (Active
Server Pages), and JSP (JavaServer Pages) notwithstanding, I oppose writing any
code that has hard-coded print statements spitting out HTML. Style languages
such as CSS (Cascading Style Sheets), DSSSL (Document Style Semantics and
Specification Language, SGML's style language), and XSL (Extensible Stylesheet
Language) are more appropriate for the task of transforming data into something
presentable. (Why that's true is material for another time -- it's a big topic.)
Nevertheless, I understand that using coded programs to create HTML is commonly
used, and it makes for an enlightening example of using SAX to turn XML into
some other useful form.
For this example, I have two valid Recipe XML files: example4.xml, my standard
heinous lime Jell-O creation; and a new recipe for Nanner Pah, example3.xml, a
big hit at all the Lutheran church dinners I went to as a kid.
I decided I wanted to use LAX to write a program that produces two files: a
well-formatted recipe page for a cookbook, and a shopping list for the recipe,
also attractively formatted. To accomplish that, I created two classes:
RecipeWriter and ShoppingListWriter. I'll go over each class in turn, and then
show how you can use them both with LAX.
Formatting a recipe
The RecipeWriter class has start, end, and textOf methods for each tag type in
the Recipe DTD. I'll discuss how a couple of them work so you can get a feel for
what the class does. You can follow along in the source code for
RecipeWriter.java.
The RecipeWriter constructor, which takes a filename as an argument, creates the
named file and opens it for writing. Subsequent method calls cause HTML to be
written to the output file, and endRecipe() eventually closes it.
The top-level tag of the Recipe XML is <Recipe>, but RecipeWriter doesn't have a
startRecipe() method, so that event is skipped. When LAX encounters characters
inside a <Name> tag, though, it finds the RecipeWriter's textOfName() method,
which it calls with the text of the recipe name. textOfName() calls
titlePrint(), which sets up the HTML page, sets the body background image, and
opens up a TABLE (which will be closed by endRecipe()). startDescription(),
startIngredients(), and startInstructions() all produce rows in the table with
attractive background colors and large header text.
This cookbook is designed to be used by both vegetarians and nonvegetarians, so
notice that RecipeWriter has a boolean variable called _isVegetarian, which is
set to "false" if any nonvegetarian ingredient is encountered by
startIngredients. After parsing is completed, endRecipe() checks this flag, and
places an indication after the recipe of whether the recipe is vegetarian.
Likewise, startItem checks for the OPTIONAL attribute, and prints "(optional)"
after each optional ingredient.
You can see the results of running the RecipeWriter on example4.xml in
example4-recipe.html and on example3.xml in example3-recipe.html.
Formatting a shopping list
At the same time that the recipe is being formatted by RecipeWriter, LAX also
maintains an instance of ShoppingListWriter, which is creating a different file.
You can follow along in the source code for ShoppingListWriter.java.
Like RecipeWriter, ShoppingListWriter creates and opens its output file in its
constructor. Since a shopping list is primarily concerned with <Ingredients>, it
doesn't print anything until LAX calls startIngredients() (startName() saves the
name in an instance field for use in startIngredients). The program builds an
HTML table on top of a spiral-notebook background, and prints all optional
attributes in red (so if you don't bring enough money to the grocery store,
you'll know what you can do without.)
You can see the results of the ShoppingListWriter in example4-list.html and
example3-list.html. Currently, you can't merge, sort, or add the contents of the
two lists -- n recipes gives you n lists. But there's no reason you couldn't
write a class that does any or all of those things.
The main LAX program
Listing 6 shows the main() method for LAX. You can read the full source code in
Lax.java.
Listing 6. LAX main() method
133 public static void main(String args[]) {
134 if (args.length < 1) {
135 System.err.println("Usage: lax inputFile.xml [parserClass]");
136 System.exit(1);
137 }
138
139 String sInputFile = args[0];
140 String sRecipeFile;
141 String sShoppingListFile;
142 String sBase = sInputFile;
143
144 if (sBase.length() > 4 && sBase.toLowerCase().endsWith(".xml")) {
145 sBase = sBase.substring(0, sBase.length() - 4);
146 } else {
147 sInputFile = sBase + ".xml";
148 }
149 sRecipeFile = sBase + "-recipe.html";
150 sShoppingListFile = sBase + "-list.html";
151
152 Lax lax = new Lax();
153
154 ShoppingListWriter slw = new ShoppingListWriter(sShoppingListFile);
155 lax.addHandler(slw);
156
157 RecipeWriter rw = new RecipeWriter(sRecipeFile);
158 lax.addHandler(rw);
159
160 lax.parseDocument(true, lax, sInputFile);
161
162
163 }

Lines 139 through 150 build the output filenames, which are used to create the
ShoppingListWriter (line 154) and the RecipeWriter (line 157) for LAX. Line 152
creates an instance of LAX, and in lines 155 and 158, LAX gets the
ShoppingListWriter and RecipeWriter objects. Line 160 then parses the file with
a copy of parseDocument() taken directly from SimpleValidatingSaxParser.
As LAX receives each event, it searches both of the handler objects for
appropriate methods, and calls the methods when they are found. As a result,
both output files are written in one pass of the parser. That's all there is to
it! All of the application logic (to create the HTML) occurs in the handler
objects, and LAX handles dispatching the tag names in the events to the methods
in the handlers.
Using XML and SAX in this way opens a lot of doors. With a little imagination,
it's easy to envision a servlet that reads a directory of XML files and creates
pages of links to the formatted recipes and shopping lists. The formatted
recipes and shopping lists could even be created on the fly by the servlet from
the XML. Updating an XML file with new information would then automatically
update both the recipe and the shopping list -- they would never get out of
sync. This data consistency is one of the benefits of using XML to represent
information and then styling the XML for various presentations.
Final notes about XML and DTDs
Note that, in this Recipe example, the recipe's content was separate from its
presentation; that is, the XML represented the information in the recipe, while
the LAX handler classes formatted and displayed that information. A different
LAX class could display the document in an entirely different way, or even read
it aloud, yet the underlying XML document would not have changed at all. This
separation of content and presentation is one of the key themes in the
architecture of modern document-processing systems.
In addition, while creating a DTD might seem like a simple proposition, it's
actually one of the most difficult parts of creating large integrated
document-management systems. The syntax of DTDs isn't too difficult once you get
accustomed to it, but getting the DTD right requires a great deal of analysis,
and the consequences of poor DTD design can haunt a project forever. DTD design
has quite a lot in common with database design, especially in terms of
normalization and denormalization of the information being represented.
DTDs are particularly useful for describing standard document formats for
information interchange between open systems. Many groups and consortia are
currently working out XML DTDs for everything from vector graphics to chemical
formulas and molecules to shoe inventories.
Conclusion
This article has covered a lot of ground: you've learned what DTDs are and how
they work, you've discovered LAX (which I think will make SAX even easier for
you to use), and you've seen how you can use a single XML document in different
contexts. I hope these small examples get you thinking about how you can use the
technology.
SAX is an excellent way to process XML for many applications, but for complex
transformations of XML data, it's sometimes necessary to get at nodes all over
the document "tree." You can also use XML as a serialization mechanism; that is,
for creating documents that represent arbitrary structures of objects, and
recreating those object structures from documents. For those purposes, the
Document Object Model (DOM) can be useful. In the next article in this series,
you'll learn how to use the DOM to do more sophisticated processing of XML
documents.
About the author
Mark Johnson works as a designer and developer for OrganicNet in Fort
Collins, Colo., by day, and as a JavaWorld columnist by night -- very late
at night.

Home | Mail this Story | Resources and Related Links
Advertisement: Support JavaWorld, click here!

(c) Copyright 2000 ITworld.com, Inc., an IDG Communications company
Resources
Download the source code and class files for this article

In jar format (with class and java files):
http://www.javaworld.com/jw-04-2000/advsax/advsax.jar
In .tgz format (gzipped tar):
http://www.javaworld.com/jw-04-2000/advsax/advsax.tgz
In zip format:
http://www.javaworld.com/jw-04-2000/advsax/advsax.zip
Additional resources
This month's sample code uses Sun's Java extension for XML; download it at:
http://java.sun.com/products/xml/index.html
Find out more about SAX at the SAX Website:
http://www.megginson.com/SAX/index.html
The latest version of the W3C XML Recommendation (currently 1.0) can always be
found on the W3C Website at:
http://www.w3.org/TR/REC-xml
Read about XML Schema at: http://www.w3.org/TR/xmlschema-1/ and
http://www.w3.org/TR/xmlschema-2/
An article on Extended Backus-Naur form as it relates to the parsing of XML
appears on XML.com at:
http://www.xml.com/pub/98/10/guide5.html
For more on XML and Java together, see "Why XML is Meant for Java," Matthew
Fuchs (Web Techniques, June 1999):
http://www.webtechniques.com/archives/1999/06/fuchs/
The spiral-notebook graphic included in the recipe example was used by
permission of its creator, Stephanie Baker-Thomas. See her Ulead PhotoImpact
Tutorial site at:
http://www.eastofthesun.com/pi/index.htm
The cow and alligator graphics in the recipe example are courtesy of Tony
Martin of Noetic Clipart at:
http://www.noeticart.com/na_clipart.html
Feedback: jweditors@javaworld.com
Technical difficulties: webmaster@javaworld.com
URL: http://www.javaworld.com/jw-04-2000/jw-0407-advsax.html
Last modified: Friday, April 07, 2000

--
什么时候发了，要把微软给买了，不过没想好有什么用，
或许给解散了，为人类作点贡献。

※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.25.111]
上一篇 返回上一页 回到目录 回到页首


实践出真知 (BM: inannan)

编号 | 类别 | 标题 | 编辑日期
1 | 目录 | 嘿，朋友们，咱们来实践吧 (BM: inannan) | 2001.05.25
2 | 目录 | 网站的是我来负责弄起来，大家等几天 (BM: inannan) | 2001.05.25
3 | 文件 | 欢迎大家来测试一个结合XML和ASP+的技术?inannan | 2001.05.30
4 | 文件 | 用ASP+VML开发了一些在Web实现动态报表的 inannan | 2001.05.30
5 | 目录 | 一个异想天开的问题 (BM: inannan) | 2001.05.30
6 | 文件 | 关于建立新技术论坛的构想 inannan | 2001.05.30
返回上一页 回到上一级目录


嘿，朋友们，咱们来实践吧 (BM: inannan)

编号 | 类别 | 标题 | 编辑日期
1 | 文件 | 嘿，朋友们，咱们来实践吧 inannan | 2001.05.25
2 | 文件 | Re: 嘿，朋友们，咱们来实践吧 inannan | 2001.05.25
3 | 文件 | Re: 嘿，朋友们，咱们来实践吧 inannan | 2001.05.25
4 | 文件 | Re: 嘿，朋友们，咱们来实践吧 inannan | 2001.05.25
5 | 文件 | Re: 嘿，朋友们，咱们来实践吧 inannan | 2001.05.25
返回上一页 回到上一级目录


嘿，朋友们，咱们来实践吧

 发信人: cynicis (熊熊要睡觉), 信区: XML
标 题: 嘿，朋友们，咱们来实践吧
发信站: BBS 水木清华站 (Tue Apr 18 21:40:19 2000)

我在bbs.mit.edu上看几个一个虫虫自己申请了一个网站，然后几个虫虫一起去建设
我觉得这个办法好
既然大家都对xml感兴趣，了解的又都不多，不如大家申请个网站，所有的东西都用xml
写，实践，实践

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 159.226.41.166]
返回上一页 回到目录 回到页首 下一篇


Re: 嘿，朋友们，咱们来实践吧

 发信人: veb (君), 信区: XML
标 题: Re: 嘿，朋友们，咱们来实践吧
发信站: BBS 水木清华站 (Wed Apr 19 10:44:40 2000)

【 在 cynicis (熊熊要睡觉) 的大作中提到: 】
∶ 我在bbs.mit.edu上看几个一个虫虫自己申请了一个网站，然后几个虫虫一起去建设
∶ 我觉得这个办法好
∶ 既然大家都对xml感兴趣，了解的又都不多，不如大家申请个网站，所有的东西都用xml
∶ 写，实践，实践

mit早就有一个xml版，当时文章很少，
不知道现在文章有没有我们的多//有点坐井观天了，不在实验室，出不去 : (
谁能提供一个穿梭的办法？谢了先

--

Powered by eXtensible Markup Language

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.112.99.209]


Re: 嘿，朋友们，咱们来实践吧

 发信人: starw (☆★永恒の孤星★☆), 信区: XML
标 题: Re: 嘿，朋友们，咱们来实践吧
发信站: BBS 水木清华站 (Wed Apr 19 18:29:48 2000)

bbs.xanet.edu.cn可以的

【 在 veb (君) 的大作中提到: 】
∶ mit早就有一个xml版，当时文章很少，
∶ 不知道现在文章有没有我们的多//有点坐井观天了，不在实验室，出不去 : (
∶ 谁能提供一个穿梭的办法？谢了先

--

寒山惟白云，寂寂绝埃尘。草座山家有，孤灯明月轮。
石床临碧沼，鹿虎每为邻。自羡幽居乐，长为世外人。

※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.167.185]


Re: 嘿，朋友们，咱们来实践吧

 发信人: mission (心灵捕手～为何不让我隐身?), 信区: XML
标 题: Re: 嘿，朋友们，咱们来实践吧
发信站: BBS 水木清华站 (Wed Apr 19 23:40:50 2000)

支持，有什么事情别忘了叫上我:)
【 在 cynicis (熊熊要睡觉) 的大作中提到: 】
∶ 我在bbs.mit.edu上看几个一个虫虫自己申请了一个网站，然后几个虫虫一起去建设
∶ 我觉得这个办法好
∶ 既然大家都对xml感兴趣，了解的又都不多，不如大家申请个网站，所有的东西都用xml
∶ 写，实践，实践

--
有貌愿而益，有长若不肖，有慎狷而达，有坚而缦，有缓而悍。...故君子远使之而
观其忠，近使之而观其敬，烦使之而观其能，卒然问焉而观其知，急与之期而观其信，
委之以财而观其仁，告之以危而观其节，醉之以酒而观其侧，杂之以处而观其色。

※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.142.158]


Re: 嘿，朋友们，咱们来实践吧

 发信人: bubbling (泡泡★领悟真谛), 信区: XML
标 题: Re: 嘿，朋友们，咱们来实践吧
发信站: BBS 水木清华站 (Sun Apr 23 16:19:32 2000)

是西安交大可以穿梭到bbs.mit.edu?

【 在 starw (☆★永恒の孤星★☆) 的大作中提到: 】
∶ bbs.xanet.edu.cn可以的

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.168.37]
上一篇 返回上一页 回到目录 回到页首


网站的是我来负责弄起来，大家等几天 (BM: inannan)

编号 | 类别 | 标题 | 编辑日期
1 | 文件 | 网站的是我来负责弄起来，大家等几天 inannan | 2001.05.25
2 | 文件 | Re: 网站的是我来负责弄起来，大家等几天 inannan | 2001.05.25
3 | 文件 | Re: 网站的是我来负责弄起来，大家等几天 inannan | 2001.05.25
4 | 文件 | Re: 网站的是我来负责弄起来，大家等几天 inannan | 2001.05.25
5 | 文件 | Re: 网站的是我来负责弄起来，大家等几天 inannan | 2001.05.25
6 | 文件 | Re: 网站的是我来负责弄起来，大家等几天 inannan | 2001.05.25
7 | 文件 | Re: 网站的是我来负责弄起来，大家等几天 inannan | 2001.05.25
8 | 文件 | Re: 网站的是我来负责弄起来，大家等几天 inannan | 2001.05.25
9 | 文件 | Re: 网站的是我来负责弄起来，大家等几天 inannan | 2001.05.25
10 | 文件 | Re: 网站的是我来负责弄起来，大家等几天 inannan | 2001.05.25
11 | 文件 | Re: 网站的是我来负责弄起来，大家等几天 inannan | 2001.05.25
12 | 文件 | Re: 网站的是我来负责弄起来，大家等几天 inannan | 2001.05.25
13 | 文件 | Re: 网站的是我来负责弄起来，大家等几天 inannan | 2001.05.25
14 | 文件 | Re: 网站的是我来负责弄起来，大家等几天 inannan | 2001.05.25
15 | 文件 | Re: 网站的是我来负责弄起来，大家等几天 inannan | 2001.05.25
16 | 文件 | Re: 网站的是我来负责弄起来，大家等几天 inannan | 2001.05.25
17 | 文件 | Re: 网站的是我来负责弄起来，大家等几天 inannan | 2001.05.25
18 | 文件 | Re: 网站的是我来负责弄起来，大家等几天 inannan | 2001.05.25
19 | 文件 | Re: 网站的是我来负责弄起来，大家等几天 inannan | 2001.05.25
20 | 文件 | Re: 网站的是我来负责弄起来，大家等几天 inannan | 2001.05.25
21 | 文件 | Re: 网站的是我来负责弄起来，大家等几天 inannan | 2001.05.25
返回上一页 回到上一级目录


网站的是我来负责弄起来，大家等几天

 发信人: veb (君), 信区: XML
标 题: 网站的是我来负责弄起来，大家等几天
发信站: BBS 水木清华站 (Wed Apr 19 10:10:37 2000)

这些天一直再酝酿这个事情，
本周内可能搞定?nbsp;
//可能速度不是很快，再北大某实验室
//要是再我这个地址就更慢了 : ((
有兴趣的再re一下该文吧，统计起来方便。
谢谢大家！！

--

Powered by eXtensible Markup Language

※ 修改:·veb 於 Apr 19 10:10:57 修改本文·[FROM: 202.112.99.209]
※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.112.99.209]
返回上一页 回到目录 回到页首 下一篇


Re: 网站的是我来负责弄起来，大家等几天

 发信人: huahua (摇摆你的幽默), 信区: XML
标 题: Re: 网站的是我来负责弄起来，大家等几天
发信站: BBS 水木清华站 (Wed Apr 19 10:35:57 2000)

let me try
【 在 veb (君) 的大作中提到: 】
∶ 这些天一直再酝酿这个事情，
∶ 本周内可能搞定?nbsp;
∶ //可能速度不是很快，再北大某实验室
∶ //要是再我这个地址就更慢了 : ((
∶ 有兴趣的再re一下该文吧，统计起来方便。
∶ 谢谢大家！！

--
我们是爱好和平的,但我们不畏惧任何形式的战争!

※ 来源:·BBS 水木清华站 smth.org·[FROM: 159.226.41.166]


Re: 网站的是我来负责弄起来，大家等几天

 发信人: stn (45#钢[http://flashop.home.chinaren.net]), 信区: XML
标 题: Re: 网站的是我来负责弄起来，大家等几天
发信站: BBS 水木清华站 (Wed Apr 19 10:44:23 2000)

我就re一下
到时候灌水没问题的说

【 在 veb (君) 的大作中提到: 】
∶ 这些天一直再酝酿这个事情，
∶ 本周内可能搞定?nbsp;
∶ //可能速度不是很快，再北大某实验室
∶ //要是再我这个地址就更慢了 : ((
∶ 有兴趣的再re一下该文吧，统计起来方便。
∶ 谢谢大家！！

--

http://flashop.home.chinaren.net

+

愤怒从愚蠢开始,以失败而告终.

※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.169.99]


Re: 网站的是我来负责弄起来，大家等几天

 发信人: aBadBoy (死烂死烂的坏坏小子), 信区: XML
标 题: Re: 网站的是我来负责弄起来，大家等几天
发信站: BBS 水木清华站 (Wed Apr 19 12:23:22 2000)

网站的事是指什么事呀？是前面文章说得用xml来建一个网站吗？
我对xml很感兴趣，很想做这样的事情。
【 在 veb (君) 的大作中提到: 】
∶ 这些天一直再酝酿这个事情，
∶ 本周内可能搞定?nbsp;
∶ //可能速度不是很快，再北大某实验室
∶ //要是再我这个地址就更慢了 : ((
∶ 有兴趣的再re一下该文吧，统计起来方便。
∶ 谢谢大家！！

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 162.105.170.66]


Re: 网站的是我来负责弄起来，大家等几天

 发信人: veb (君), 信区: XML
标 题: Re: 网站的是我来负责弄起来，大家等几天
发信站: BBS 水木清华站 (Wed Apr 19 14:18:49 2000)

【 在 aBadBoy (死烂死烂的坏坏小子) 的大作中提到: 】
∶ 网站的事是指什么事呀？是前面文章说得用xml来建一个网站吗？
∶ 我对xml很感兴趣，很想做这样的事情。

就是建立一个大家交流的地方。
bbs虽好，对html，xml支持太差。
用html,xml做都可以。看做的人选什么了。
不过我倾向于xml，这样不就同时长经验值吗？ : )
而且再也没有人说"我的xml只显示远文件了。"

其实xml一方面有很多要进行理论探讨的问题，
也有很多需要实践证实的问题。

--

Powered by eXtensible Markup Language

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.112.99.209]


Re: 网站的是我来负责弄起来，大家等几天

 发信人: th (戒情人~决口不提爱你), 信区: XML
标 题: Re: 网站的是我来负责弄起来，大家等几天
发信站: BBS 水木清华站 (Wed Apr 19 16:22:31 2000)

我也参与一个
不过的从头学起
hehe

【 在 aBadBoy (死烂死烂的坏坏小子) 的大作中提到: 】
∶ 网站的事是指什么事呀？是前面文章说得用xml来建一个网站吗？
∶ 我对xml很感兴趣，很想做这样的事情。

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.167.60]


Re: 网站的是我来负责弄起来，大家等几天

 发信人: starw (☆★永恒の孤星★☆), 信区: XML
标 题: Re: 网站的是我来负责弄起来，大家等几天
发信站: BBS 水木清华站 (Wed Apr 19 17:51:04 2000)

地址？可以的话偶可以弄两个mirror....
有163上的

【 在 veb (君) 的大作中提到: 】
∶ 这些天一直再酝酿这个事情，
∶ 本周内可能搞定?nbsp;
∶ //可能速度不是很快，再北大某实验室
∶ //要是再我这个地址就更慢了 : ((
∶ 有兴趣的再re一下该文吧，统计起来方便。
∶ 谢谢大家！！

--

寒山惟白云，寂寂绝埃尘。草座山家有，孤灯明月轮。
石床临碧沼，鹿虎每为邻。自羡幽居乐，长为世外人。

※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.167.185]


Re: 网站的是我来负责弄起来，大家等几天

 发信人: reedlotus (晨曦中的剪影), 信区: XML
标 题: Re: 网站的是我来负责弄起来，大家等几天
发信站: BBS 水木清华站 (Wed Apr 19 18:03:05 2000)

算我一个,hehe,则要准备开始实践了

【 在 veb (君) 的大作中提到: 】
∶ 这些天一直再酝酿这个事情，
∶ 本周内可能搞定?nbsp;
∶ //可能速度不是很快，再北大某实验室
∶ //要是再我这个地址就更慢了 : ((
∶ 有兴趣的再re一下该文吧，统计起来方便。
∶ 谢谢大家！！

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.114.1.206]


Re: 网站的是我来负责弄起来，大家等几天

 发信人: SmileFat (胖胖), 信区: XML
标 题: Re: 网站的是我来负责弄起来，大家等几天
发信站: BBS 水木清华站 (Wed Apr 19 19:26:01 2000)

【 在 reedlotus (晨曦中的剪影) 的大作中提到: 】
∶ 算我一个,hehe,则要准备开始实践了

我也来吧，我可以长期的搞，不过，现在我基本上是个零，呵呵。

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.179.89]


Re: 网站的是我来负责弄起来，大家等几天

 发信人: cterm (马儿※吃草吃肉※), 信区: XML
标 题: Re: 网站的是我来负责弄起来，大家等几天
发信站: BBS 水木清华站 (Wed Apr 19 19:56:38 2000)

你来了，岂有不算我的道理？
我要开始进入xml意识形态的研究了。自然也要加入。:)

【 在 reedlotus (晨曦中的剪影) 的大作中提到: 】
∶ 算我一个,hehe,则要准备开始实践了

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.125.2]


Re: 网站的是我来负责弄起来，大家等几天

 发信人: winterspring (今东明春), 信区: XML
标 题: Re: 网站的是我来负责弄起来，大家等几天
发信站: BBS 水木清华站 (Wed Apr 19 21:40:03 2000)

我的论文跟这有关,很有兴趣要。

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.119.9.156]


Re: 网站的是我来负责弄起来，大家等几天

 发信人: luxiaoyun (小云), 信区: XML
标 题: Re: 网站的是我来负责弄起来，大家等几天
发信站: BBS 水木清华站 (Thu Apr 20 11:39:12 2000)

我也想呀，我re:一个

【 在 cterm (马儿※吃草吃肉※) 的大作中提到: 】
∶ 你来了，岂有不算我的道理？
∶ 我要开始进入xml意识形态的研究了。自然也要加入。:)

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.205.14.91]


Re: 网站的是我来负责弄起来，大家等几天

 发信人: aBadBoy (死烂死烂的坏坏小子), 信区: XML
标 题: Re: 网站的是我来负责弄起来，大家等几天
发信站: BBS 水木清华站 (Thu Apr 20 12:24:05 2000)

我的论文也是xml相关的。
//hand
【 在 winterspring (今东明春) 的大作中提到: 】
∶ 我的论文跟这有关,很有兴趣要。

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 162.105.170.66]


Re: 网站的是我来负责弄起来，大家等几天

 发信人: dency (舞), 信区: XML
标 题: Re: 网站的是我来负责弄起来，大家等几天
发信站: BBS 水木清华站 (Thu Apr 20 12:58:20 2000)

算我一个

【 在 veb (君) 的大作中提到: 】
∶ 这些天一直再酝酿这个事情，
∶ 本周内可能搞定?nbsp;
∶ //可能速度不是很快，再北大某实验室
∶ //要是再我这个地址就更慢了 : ((
∶ 有兴趣的再re一下该文吧，统计起来方便。
∶ 谢谢大家！！

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.158.9]


Re: 网站的是我来负责弄起来，大家等几天

 发信人: lyrich (ly), 信区: XML
标 题: Re: 网站的是我来负责弄起来，大家等几天
发信站: BBS 水木清华站 (Sat Apr 22 14:31:38 2000)

我也参加

【 在 SmileFat (胖胖) 的大作中提到: 】
∶ 我也来吧，我可以长期的搞，不过，现在我基本上是个零，呵呵。

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: image.ee.tsingh]


Re: 网站的是我来负责弄起来，大家等几天

 发信人: arches (Sam), 信区: XML
标 题: Re: 网站的是我来负责弄起来，大家等几天
发信站: BBS 水木清华站 (Mon Apr 24 16:10:51 2000)

【 在 stn (45#钢[http://flashop.home.chinaren.net]) 的大作中提到: 】
∶ 我就re一下
∶ 到时候灌水没问题的说
我对xml看了一些文档,也很有兴趣!就是美实践过!也向参加!
技术上帮不上什么忙!只是希望大家有共同爱好的人都认识起来,
有机会的话一起做些更有实际意义的事情!

--
无论生活多么艰难,
他都保持乐观!

※ 来源:·BBS 水木清华站 smth.org·[FROM: 210.78.134.185]


Re: 网站的是我来负责弄起来，大家等几天

 发信人: zhouxx (CBA China Beat America), 信区: XML
标 题: Re: 网站的是我来负责弄起来，大家等几天
发信站: BBS 水木清华站 (Mon Apr 24 21:02:11 2000)

偶也同样,先向斑竹报个名先
另外,偶的课题也要用到,锻炼锻炼自己吧
【 在 arches (Sam) 的大作中提到: 】
∶ 我对xml看了一些文档,也很有兴趣!就是美实践过!也向参加!
∶ 技术上帮不上什么忙!只是希望大家有共同爱好的人都认识起来,
∶ 有机会的话一起做些更有实际意义的事情!

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.44.32]


Re: 网站的是我来负责弄起来，大家等几天

 发信人: huangcyy (受伤的心), 信区: XML
标 题: Re: 网站的是我来负责弄起来，大家等几天
发信站: BBS 水木清华站 (Mon Apr 24 21:22:01 2000)

我不是情话的，不知行不行，但对XML很感兴趣。。【 在 arches (Sam) 的大作中提到: 】
∶ 我对xml看了一些文档,也很有兴趣!就是美实践过!也向参加!
∶ 技术上帮不上什么忙!只是希望大家有共同爱好的人都认识起来,
∶ 有机会的话一起做些更有实际意义的事情!

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 48h36.xjtu.edu.]


Re: 网站的是我来负责弄起来，大家等几天

 发信人: typin (Tiger), 信区: XML
标 题: Re: 网站的是我来负责弄起来，大家等几天
发信站: BBS 水木清华站 (Mon Apr 24 21:35:58 2000)

我也很感兴趣
很想参加这样的开发组
我有很多年的软件开发经验
【 在 huangcyy (受伤的心) 的大作中提到: 】

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: xdwan.nuaa.edu.]


Re: 网站的是我来负责弄起来，大家等几天

 发信人: watery (云之风~~水云间), 信区: XML
标 题: Re: 网站的是我来负责弄起来，大家等几天
发信站: BBS 水木清华站 (Tue May 2 21:01:14 2000)

【 在 veb (君) 的大作中提到: 】
∶ 这些天一直再酝酿这个事情，
∶ 本周内可能搞定?nbsp;
∶ //可能速度不是很快，再北大某实验室
∶ //要是再我这个地址就更慢了 : ((
∶ 有兴趣的再re一下该文吧，统计起来方便。
∶ 谢谢大家！！

我可以做什么呢?

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.11.162]


Re: 网站的是我来负责弄起来，大家等几天

 发信人: rooter (老大), 信区: XML
标 题: Re: 网站的是我来负责弄起来，大家等几天
发信站: BBS 水木清华站 (Wed May 3 10:48:16 2000)

【 在 lyrich (ly) 的大作中提到: 】
∶ 我也参加
我也报个名，我将来就是搞这个的。
email:dcg2000@263.net

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.112.134.60]
上一篇 返回上一页 回到目录 回到页首


欢迎大家来测试一个结合XML和ASP+的技术论坛

 发信人: Jobs (温少), 信区: XML
标 题: 欢迎大家来测试一个结合XML和ASP+的技术论坛
发信站: BBS 水木清华站 (Wed Oct 4 08:20:01 2000)

http://sunrise.szu.edu.cn/NewTechForum/

自从上个月26日打算做一个新技术论坛开始，花了一个星期的空余时间，
我负责写程序，Jaga（深大的）负责设计界面，终于把一个用新技术做的技
术论坛的基本的功能做出来了。原来设计的一些动态更宽界面的功能还没有
完成，不过由于由于设计的时候考虑了这方面的扩展，应该不久就能够实现。

这个论坛运用了XML和MS .Net技术中的ASP+和ADO+。服务器端的语言用
ASP +内置支持的VB（可能是VB 7.0），数据库用MS SQL Server 2000，大部
分的工作在数据库端通过Trigger实现，如保证数据库的完整性，通过冗余来
提高查询效率的工作也是在数据库端通过Trigger来实现。

首页还不是XML版本，而是一个普通的ASPX，不过XML的版本也已经有了，
应该很快就可以用上。出了首页之外的其他很多的地方完全应用了XML+XSL，
计划是以后在服务器端判断，如果客户端的浏览器是IE 5.0或更高版本则把
XML和XSL直接发给客户端，把一部分的计算任务交给客户端，如果客户端的
浏览器不是IE 5或更高版本，可能不支持XML+XSL显示，则把XML+XSL在服务器
端合并产生HTML文本输出到客户端。由于内容（XML）和显示方式分开，所以
很容易做到更换界面的功能。

其实这个论坛还没有完成，现在是Beta版本，欢迎大家测试……

同时希望各位大虾多多指教，指出不足之处！谢谢

--

※ 修改:·Jobs 於 Oct 4 08:27:10 修改本文·[FROM: 210.39.3.50]
※ 来源:·BBS 水木清华站 smth.org·[FROM: 210.39.3.50]
返回上一页 回到目录 回到页首 下一篇


用ASP+VML开发了一些在Web实现动态报表的系统

 发信人: Jobs (温少), 信区: XML
标 题: 用ASP+VML开发了一些在Web实现动态报表的系统
发信站: BBS 水木清华站 (Tue Oct 10 12:33:45 2000)

能够实现Excel中的各种图形，很漂亮，通过I E 5.0观看，不用安装
插件，能完全实现目前网上所产生的一些动态图形的功能，包括最常见的
股价图。很漂亮，可扩展性很强。现在我们应用于做一个站点分析系统，
动态产生一些图形报表，但是我觉得那是大材小用了。想用它来做些事情，
但是找不到市场的需求或好的市场。

有兴趣的朋友可以发信到：sunrise@szu.edu.cn（温少）

--

※ 来源:·BBS 水木清华站 smth.org·[FROM: 210.39.3.50]


一个异想天开的问题 (BM: inannan)

编号 | 类别 | 标题 | 编辑日期
1 | 文件 | Re: 一个异想天开的问题 inannan | 2001.05.30
2 | 文件 | Re: 一个异想天开的问题 inannan | 2001.05.30
3 | 文件 | Re: 一个异想天开的问题 inannan | 2001.05.30
4 | 文件 | Re: 一个异想天开的问题 inannan | 2001.05.30
5 | 文件 | Re: 一个异想天开的问题 inannan | 2001.05.30
返回上一页 回到上一级目录


Re: 一个异想天开的问题

 发信人: zixia (Do you zixia!?), 信区: XML
标 题: Re: 一个异想天开的问题
发信站: BBS 水木清华站 (Tue Nov 7 20:45:35 2000)

一个 udp 包， 只需要一个发送操作，而且因为很短小，

出现错误的几率会较小。

一个 tcp 连接，要三次握手，然后再发送数据，再三次握手结束会话。

SOAP 还要加上 XML 以及 SOAP 协议的额外开销。

据个例子来说，你 ping 一个站点，如果丢包率为 50%...

那么平均发 2 个 UDP 就可以传送到的信息，

使用 SOAP 后，系统无法正常工作。(即使用TCP连接无法传送数据）

知道致命点在哪里了吧。

当然，以后 GB 网的时代另算。。。

即使如此，带宽也是用来用到应该用的地方的，而不是用来浪费的。

【 在 zerro (伤心的人) 的大作中提到: 】
∶ 如果用基于xml的soap协议实现oicq系统
∶ （服务商的服务器当然要用biztalk）
∶ 是不是以后oicq就不需要用socket代理了？？？
∶ 好像应该是的！！
∶ 不知道实现起来性能方面能不能让人满意？？
∶ 我对技术的细节知道的不多
∶ 希望猛人们对这个想法提提意见

--
正确的说法是什么呢？ NT=No Thanks, WWW=World Wide Wait
Do you zixia!?[=S [=Mhttp://zixia.net (Powered by GNU/Linux)[=S
    Linux，RedHat发行 或 Linux，TLC发行。如果嫌长也可以说RedHat或TLC。
    说RedHat、TLC就别提Linux，要提Linux的名字就得说成Linux，RedHat发行。
    在这方面Debian和Slackware作的好，在政治上正确！
Linux和自由软件是观念上的革命，它不是商业活动！[题未明: http://www.zixia.net[m[32m][m[u[23;0H

※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.167.50]
返回上一页 回到目录 回到页首 下一篇


Re: 一个异想天开的问题

 发信人: zixia (Do you zixia!?), 信区: XML
标 题: Re: 一个异想天开的问题
发信站: BBS 水木清华站 (Tue Nov 7 21:42:58 2000)

OICQ 的消息传递属于很底层了，

在线30万人，从效率、IO、速度上看都要保证，

SOAP 有优点：可以穿透防火墙。

但是并不是所有需要穿透防火墙的活都适合与SOAP解决。

SOAP 可以做一些很高层的应用，比如，我要电子商务，

一个 SOAP 调用可以可以成交一份商品...

呵呵，以及把自己的货物用 XML 列表出来，方便交流...

我是这么认为的。

比如我的 FTP 服务器，可以用 XML/SOAP 做数据查询（方便搜索引擎）

但是具体到下载操作这一层，是没有理由使用 XML/SOAP 的。

【 在 zerro (伤心的人) 的大作中提到: 】
∶ 那soap适合做些什么呢？？
∶ 毕竟微软以后还要靠这个挣钱呢
∶ 应该不会一无是处吧
∶ 能不能讲几个适合soap协议的应用呢？？

--
正确的说法是什么呢？ NT=No Thanks, WWW=World Wide Wait
Do you zixia!?[=S [=Mhttp://zixia.net (Powered by GNU/Linux)[=S
    Linux，RedHat发行 或 Linux，TLC发行。如果嫌长也可以说RedHat或TLC。
    说RedHat、TLC就别提Linux，要提Linux的名字就得说成Linux，RedHat发行。
    在这方面Debian和Slackware作的好，在政治上正确！
Linux和自由软件是观念上的革命，它不是商业活动！[题未明: http://www.zixia.net[m[32m][m[u[23;0H

※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.167.50]


Re: 一个异想天开的问题

 发信人: flier (小海 //爱喝可乐^_^), 信区: XML
标 题: Re: 一个异想天开的问题
发信站: BBS 水木清华站 (Wed Nov 8 16:27:11 2000)

【 在 zixia (Do you zixia!?) 的大作中提到: 】
∶ OICQ 的消息传递属于很底层了，
∶ 在线30万人，从效率、IO、速度上看都要保证，
∶ SOAP 有优点：可以穿透防火墙。
∶ 但是并不是所有需要穿透防火墙的活都适合与SOAP解决。
∶ SOAP 可以做一些很高层的应用，比如，我要电子商务，
∶ 一个 SOAP 调用可以可以成交一份商品...
∶ 呵呵，以及把自己的货物用 XML 列表出来，方便交流...
∶ 我是这么认为的。
∶ 比如我的 FTP 服务器，可以用 XML/SOAP 做数据查询（方便搜索引擎）
∶ 但是具体到下载操作这一层，是没有理由使用 XML/SOAP 的。
我觉得soap的关键并不在于他用什么协议，http也好，其他什么的也好
对于soap来说，协议只是一个载体，并不是决定性的……
偏激一点的话，偶可以用平信发一份符合soap规范的订货单
然后电子商务公司ocr……呵呵 :)

如果作为数据传送载体的话，xml的优势只是对信息的表述
完全可以开发一套xicq,用xml描述其信息，通过udp发送
只不过在这方面，还没有迫切的对xml这样较高级表述方法的需求
毕竟技术是以需求为导向，而需求不是以技术为导向的 :)
--
. 生命的意义在于 /\ ____\ /\_ \ /\_\ .
. 希望 \ \ \___/_\/\ \ \/_/__ __ _ _★ .
. 工作 \ \ ____\\ \ \ /\ \ /'__`\ /\`'_\ .
. 爱你的人 \ \ \___/ \ \ \___\ \ \/\ __//\ \ \/ .
. 和你爱的人 \ \___\ \ \_____\ \__\ \____\ \ \_\ .
. …… \/___/ \/_____/\/__/\/____/ \/_/ @126.com .

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.114.32.14]


Re: 一个异想天开的问题

 发信人: scaner (Jabber.Jabber), 信区: XML
标 题: Re: 一个异想天开的问题
发信站: BBS 水木清华站 (Thu Nov 9 02:16:02 2000)

做个千万的IM系统, jabber绝对比oicq来的简单

【 在 zixia (Do you zixia!?) 的大作中提到: 】
∶ OICQ 的消息传递属于很底层了，
∶ 在线30万人，从效率、IO、速度上看都要保证，
∶ SOAP 有优点：可以穿透防火墙。
∶ 但是并不是所有需要穿透防火墙的活都适合与SOAP解决。
∶ SOAP 可以做一些很高层的应用，比如，我要电子商务，
∶ 一个 SOAP 调用可以可以成交一份商品...
∶ 呵呵，以及把自己的货物用 XML 列表出来，方便交流...
∶ 我是这么认为的。
∶ 比如我的 FTP 服务器，可以用 XML/SOAP 做数据查询（方便搜索引擎）
∶ 但是具体到下载操作这一层，是没有理由使用 XML/SOAP 的。

--
Jabber & Jabber ...
Jabber Home Page: http://www.jabber.org
Jabber Server: com.is-andy.com
Jabber Client: http://com.is-andy.com/jabbersetup.exe
Jabber Address: jabber:scaner@com.is-andy.com/

※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.215.235]


Re: 一个异想天开的问题

 发信人: Jobs (温少), 信区: XML
标 题: Re: 一个异想天开的问题
发信站: BBS 水木清华站 (Thu Nov 9 12:17:52 2000)

压缩、分类还有其它的一些功能，如确保事务的完成等，我也不是
很清楚，我只是听到 Intel的代表介绍的……呵呵

【 在 kafa (让爱象大海深深蓝蓝地) 的大作中提到: 】
∶ 加速的原理是什么？
∶ 压缩？

--

※ 来源:·BBS 水木清华站 smth.org·[FROM: 210.39.3.50]
上一篇 返回上一页 回到目录 回到页首


关于建立新技术论坛的构想

 发信人: Jobs (温少), 信区: XML
标 题: 关于建立新技术论坛的构想
发信站: BBS 水木清华站 (Sat Nov 18 08:07:53 2000)

前段时间曾经想过一个新技术论坛的解决方案，方案大概如下：

服务器使用MS SQL Server 2000，利用它对XML支持的功能，所有
返回的数据都是XML，但是这样还是存在很大的局限，因为通过关系数
据库来存数大文本存在问题，同时发表带图片的文章的问题无法解决。
现在，有了一个新的构想，如下：

Exchange Server 2000带来了一个Web Storage System的功能，
他具备数据库的一些特性，他也支持Schema的定义，也支持通过ADO
使用SQL语言来访问存储的数据。更有意义的是，他支持多种协议的访
问，而不是他使得论坛不但可以通过HTTP协议访问，还可以使用其它
协议访问，例如：可以通过MAPI、NNTP、IMAP4等协议来访问，这个
的意义是很大，这样它就可以通过EMail在论坛中来发表文章。通过
EMail来发表文章的意义是很大的，例如我在Microsoft网站上看到了
一片很好，我可以通过IE提供的功能，把整个页面做为一封HTTM Body
的EMail发给服务器接受，其他用户浏览论坛的时候，论坛的文章是
保留原有的格式的，并且图片等全部保留，甚至有些网页中使用Script
结合CSS实现的效果仍然能够保留。无可否认，News是一种方便的问题
讨论方式，通过Web Storage System对NNTP的支持，人们可以通过News
的方式对问题进行讨论，每个NewsGroup就相当于现在论坛的一个Board，
而且功能完备。

用户管理就使用ADSI来进行管理，安装Exchange Server 2000的机器
都必须安装有Active Directory，每个注册用户都为其开始一个Actory
Directory用户账号，并且开设一个邮件账号。用户存取信件可以Exchange
Server 2000提供的Outlook Web Access功能访问，也可以通过邮件收发工
具来收发邮件，包括Outlook等。这样论坛就具备了收发信件功能。

论坛需要的一个功能就是用户之间需要即时的信息交互，如聊天等。
这可以通过Exchange Server 2000提供的Conference Server来解决，用户
可以通过NetMeeting、Messenger等来进行用户之间的信息交互，不但可以
文本的方式聊天，还可以进行语音聊天、视频会议、文件传输等。

论坛的功能具备很大的扩展性，它可以存储各类的数据，包括文本、
图像、声音、视频等。以后可把论坛扩展成知识管理的解决方案等，象前段
时间炒得很热的21drive.com的网络硬盘功能，在这个论坛中，是内置的功能。

现在网上有很多各种各样的论坛，还有很多的BBS，我想通过Exchange
Server 来构建的论坛的解决方案优势是其他方式不可以比拟的。

论坛的建设应该很快就进入实施的阶段，欢迎大家来与我进行关于新技术
论坛建设的讨论，我的EMail：Jobs@sunrise.szu.edu.cn，我叫温少，请多多
指教！

--

※ 来源:·BBS 水木清华站 smth.org·[FROM: 210.39.3.50]
上一篇 返回上一页 回到目录 回到页首


文档编写 (BM: inannan)

编号 | 类别 | 标题 | 编辑日期
1 | 目录 | jaxp解析DTD的例子 (BM: inannan) | 2001.05.25
2 | 文件 | Re: xsl一问 inannan | 2001.05.30
3 | 文件 | 贴一个有点意思的例子，有些长 inannan | 2001.05.30
返回上一页 回到上一级目录


jaxp解析DTD的例子 (BM: inannan)

编号 | 类别 | 标题 | 编辑日期
1 | 文件 | jaxp解析DTD的例子。 inannan | 2001.05.25
2 | 文件 | Re: jaxp解析DTD的例子。 inannan | 2001.05.25
3 | 文件 | Re: jaxp解析DTD的例子。 inannan | 2001.05.25
返回上一页 回到上一级目录


jaxp解析DTD的例子。

 发信人: yangxuu (据说江西出美女), 信区: XML
标 题: jaxp解析DTD的例子。
发信站: BBS 水木清华站 (Wed May 3 00:07:46 2000)

上文winday问怎么解析的，我临时编了一个小测试程序，
相信想知道jaxp包如何进行DTD解析的人，看了这个简单例子就明白了。
1：类DTDTest源程序；
2：用于测试的DTD文档：boolk-order.dtd；
3：程序输出结果。
至于jaxp包，可从sun的网站得到。

1: DTDTest.java:
import org.xml.sax.InputSource;
import com.sun.xml.parser.Parser;
import java.io.*;
import org.xml.sax.*;
import com.sun.xml.parser.DtdEventListener;

public class DTDTest implements DtdEventListener{
private Parser parser;
private String dtdSource;
private InputSource buf;
public DTDTest(){
parser=new Parser();
parser.setDTDHandler(this);
File f=new File("file:book-order.dtd");
dtdSource=f.getPath();
byte[] data=("<!DOCTYPE UNKNOWN SYSTEM \""+dtdSource+"\"> <x />").getBytes();

buf=new InputSource(new ByteArrayInputStream(data));
String parent=f.getParent();
if(parent==null)parent=".\\";
buf.setSystemId(parent);
}

public void parse() throws Exception{
parser.parse(buf);
}
public static void main(String args[]){
DTDTest dtdtest=new DTDTest();
try { dtdtest.parse();}
catch (Exception e){}
}

/**The following will implement methods in DtdEventListener interface******/
public void notationDecl(String name,String publicId,String systemId){}
public void unparsedEntityDecl(String name,String publicId,String systemId,String notationName){}

public void startDtd (String rootName) throws SAXException{
System.out.println("Now begin to start to parse DTD File!");
if (rootName!=null) System.out.println("rootName: "+rootName);
System.out.println("");
}

public void externalDtdDecl (String publicId, String systemId) throws SAXException{
System.out.println("Now begin to do externalDtdDecl!");
if (publicId!=null) System.out.println("publicId: "+publicId);
if (systemId!=null) System.out.println("syutemId: "+systemId);
System.out.println("");
}

public void internalDtdDecl (String internalSubset) throws SAXException{
System.out.println("Now show internalDtdDecl!");
if (internalSubset!=null) System.out.println("internalSubset: "+internalSubset);
System.out.println("");
}

public void internalEntityDecl (String name, String value) throws SAXException{
System.out.println("Now show internalEntityDecl!");
if (name!=null) System.out.println("name: "+name);
if (value!=null) System.out.println("value: "+value);
System.out.println("");
}
public void externalEntityDecl (String name,String publicId, String systemId)
throws SAXException{
System.out.println("Now show externalEntityDecl!");
if (name!=null) System.out.println("name: "+name);
if (publicId!=null) System.out.println("publicId: "+publicId);
if (systemId!=null) System.out.println("systemId: "+systemId);
System.out.println("");

}
public void elementDecl (String elementName, String contentModel)
throws SAXException{
System.out.println("Now show elementDecl!");
if (elementName!=null) System.out.println("elementName: "+elementName);
if (contentModel!=null) System.out.println("contentModel: "+contentModel);
System.out.println("");

}
public void attributeDecl (String elementName,String attributeName,
String attributeType,String options [],
String defaultValue,boolean isFixed,
boolean isRequired) throws SAXException{
System.out.println("Now show attributeDecl!");
if (elementName!=null) System.out.println("elementName: "+elementName);
if (attributeName!=null) System.out.println("attributeName: "+attributeName);
if (attributeType!=null) System.out.println("attributeType: "+attributeType);
if (defaultValue!=null) System.out.println("defaultValue: "+defaultValue);
if (options!=null)
{
System.out.println("attribute value options: ");
for (int i=0;i<options.length;i++) System.out.println(options[i]);
}
System.out.println("");

}

public void endDtd () throws SAXException{
System.out.println("parse DTDFile is end!");
System.out.println("bye-bye");
}
}

2: book-order.dtd:

<!ELEMENT Order (Customer,Manifest,Receipt)>
<!ATTLIST Order xmlns CDATA #FIXED "">http://www.example.com/myschema.xml">

<!ELEMENT Customer (Name, Cardnum)>
<!ELEMENT Name (#PCDATA)>
<!ELEMENT Cardnum (#PCDATA)>

<!ELEMENT Manifest (Item*)>

<!ELEMENT Item (ID,Title,Quantity,UnitPrice)>
<!ELEMENT ID (#PCDATA)>
<!ELEMENT Title (#PCDATA)>
<!ELEMENT Quantity (#PCDATA)>
<!ELEMENT UnitPrice (#PCDATA)>

<!ELEMENT Receipt (Subtotal,Tax,Total)>
<!ELEMENT Subtotal (#PCDATA)>
<!ELEMENT Tax (#PCDATA)>
<!ELEMENT Total (#PCDATA)>

3: 程序输出结果：
Now begin to start to parse DTD File! rootName: UNKNOWN Now begin to
do externalDtdDecl! syutemId: file:book-order.dtd Now show elementDecl!
elementName: Order contentModel: (Customer,Manifest,Receipt) Now show
attributeDecl!
elementName: Order attributeName: xmlns attributeType: CDATA
defaultValue: http://www.example.com/myschema.xml Now show elementDecl!
elementName: Customer contentModel: (Name,Cardnum) Now show elementDecl!
elementName: Name
contentModel: (#PCDATA) Now show elementDecl! elementName: Cardnum
contentModel: (#PCDATA) Now show elementDecl! elementName: Manifest
contentModel: (Item*) Now show elementDecl! elementName: Item
contentModel: (ID,Title,Quantity,UnitPrice) Now show elementDecl!
elementName: ID contentModel: (#PCDATA) Now show elementDecl!
elementName: Title contentModel: (#PCDATA) Now show elementDecl!
elementName: Quantity contentModel: (#PCDATA) Now show elementDecl!
elementName: UnitPrice contentModel: (#PCDATA) Now show elementDecl!
elementName: Receipt contentModel: (Subtotal,Tax,Total) Now show
elementDecl! elementName:
Subtotal contentModel: (#PCDATA) Now show elementDecl!
elementName: Tax contentModel: (#PCDATA) Now show elementDecl!
elementName: Total contentModel: (#PCDATA)
parse DTDFile is end!
bye-bye
Process Exit...

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.136.36]
返回上一页 回到目录 回到页首 下一篇


Re: jaxp解析DTD的例子。

 发信人: winday (贪玩的知了~~反省中), 信区: XML
标 题: Re: jaxp解析DTD的例子。
发信站: BBS 水木清华站 (Wed May 3 09:19:30 2000)

太搞了，拿我的程序来教我 ：）

我就是不想用ByteArrayInputStream，因为这样做其实还是在

解析XML，DTD只是“顺便”被解析了。

如果有什么接口能够直接以DTD为参数就好了。

【 在 yangxuu (据说江西出美女) 的大作中提到: 】
∶ 上文winday问怎么解析的，我临时编了一个小测试程序，
∶ 相信想知道jaxp包如何进行DTD解析的人，看了这个简单例子就明白了。
∶ 1：类DTDTest源程序；
∶ 2：用于测试的DTD文档：boolk-order.dtd；
∶ 3：程序输出结果。
∶ 至于jaxp包，可从sun的网站得到。
∶ 1: DTDTest.java:
∶ import org.xml.sax.InputSource;
∶ import com.sun.xml.parser.Parser;
∶ import java.io.*;
∶ import org.xml.sax.*;
∶ import com.sun.xml.parser.DtdEventListener;
∶ public class DTDTest implements DtdEventListener{
∶ private Parser parser;
∶ private String dtdSource;
∶ private InputSource buf;
∶ public DTDTest(){
∶ parser=new Parser();
∶ parser.setDTDHandler(this);
∶ File f=new File("file:book-order.dtd");
∶ dtdSource=f.getPath();
∶ byte[] data=("<!DOCTYPE UNKNOWN SYSTEM \""+dtdSource+"\"> <x />").getBytes();
∶ buf=new InputSource(new ByteArrayInputStream(data));
∶ String parent=f.getParent();
∶ if(parent==null)parent=".\\";
∶ buf.setSystemId(parent);
∶ }
∶ public void parse() throws Exception{
∶ parser.parse(buf);
∶ }
∶ public static void main(String args[]){
∶ DTDTest dtdtest=new DTDTest();
∶ try { dtdtest.parse();}
∶ catch (Exception e){}
∶ }
∶ /**The following will implement methods in DtdEventListener interface******/
∶ public void notationDecl(String name,String publicId,String systemId){}
∶ public void unparsedEntityDecl(String name,String publicId,String systemId,String notationName){}
∶ public void startDtd (String rootName) throws SAXException{
∶ System.out.println("Now begin to start to parse DTD File!");
∶ if (rootName!=null) System.out.println("rootName: "+rootName);
∶ System.out.println("");
∶ }
∶ public void externalDtdDecl (String publicId, String systemId) throws SAXException{
∶ System.out.println("Now begin to do externalDtdDecl!");
∶ if (publicId!=null) System.out.println("publicId: "+publicId);
∶ if (systemId!=null) System.out.println("syutemId: "+systemId);
∶ System.out.println("");
∶ }
∶ public void internalDtdDecl (String internalSubset) throws SAXException{
∶ System.out.println("Now show internalDtdDecl!");
∶ if (internalSubset!=null) System.out.println("internalSubset: "+internalSubset);
∶ System.out.println("");
∶ }
∶ public void internalEntityDecl (String name, String value) throws SAXException{
∶ System.out.println("Now show internalEntityDecl!");
∶ if (name!=null) System.out.println("name: "+name);
∶ if (value!=null) System.out.println("value: "+value);
∶ System.out.println("");
∶ }
∶ public void externalEntityDecl (String name,String publicId, String systemId)
∶ throws SAXException{
∶ System.out.println("Now show externalEntityDecl!");
∶ if (name!=null) System.out.println("name: "+name);
∶ if (publicId!=null) System.out.println("publicId: "+publicId);
∶ if (systemId!=null) System.out.println("systemId: "+systemId);
∶ System.out.println("");
∶ }
∶ public void elementDecl (String elementName, String contentModel)
∶ throws SAXException{
∶ System.out.println("Now show elementDecl!");
∶ if (elementName!=null) System.out.println("elementName: "+elementName);
∶ if (contentModel!=null) System.out.println("contentModel: "+contentModel);
∶ System.out.println("");
∶ }
∶ public void attributeDecl (String elementName,String attributeName,
∶ String attributeType,String options [],
∶ String defaultValue,boolean isFixed,
∶ boolean isRequired) throws SAXException{
∶ System.out.println("Now show attributeDecl!");
∶ if (elementName!=null) System.out.println("elementName: "+elementName);
∶ if (attributeName!=null) System.out.println("attributeName: "+attributeName);
∶ if (attributeType!=null) System.out.println("attributeType: "+attributeType);
∶ if (defaultValue!=null) System.out.println("defaultValue: "+defaultValue);
∶ if (options!=null)
∶ {
∶ System.out.println("attribute value options: ");
∶ for (int i=0;i<options.length;i++) System.out.println(options[i]);
∶ }
∶ System.out.println("");
∶ }
∶ public void endDtd () throws SAXException{
∶ System.out.println("parse DTDFile is end!");
∶ System.out.println("bye-bye");
∶ }
∶ }
∶ 2: book-order.dtd:
∶ <!ELEMENT Order (Customer,Manifest,Receipt)>
∶ <!ATTLIST Order xmlns CDATA #FIXED "">http://www.example.com/myschema.xml">
∶ <!ELEMENT Customer (Name, Cardnum)>
∶ <!ELEMENT Name (#PCDATA)>
∶ <!ELEMENT Cardnum (#PCDATA)>
∶ <!ELEMENT Manifest (Item*)>
∶ <!ELEMENT Item (ID,Title,Quantity,UnitPrice)>
∶ <!ELEMENT ID (#PCDATA)>
∶ <!ELEMENT Title (#PCDATA)>
∶ <!ELEMENT Quantity (#PCDATA)>
∶ <!ELEMENT UnitPrice (#PCDATA)>
∶ <!ELEMENT Receipt (Subtotal,Tax,Total)>
∶ <!ELEMENT Subtotal (#PCDATA)>
∶ <!ELEMENT Tax (#PCDATA)>
∶ <!ELEMENT Total (#PCDATA)>
∶ 3: 程序输出结果：
∶ Now begin to start to parse DTD File! rootName: UNKNOWN Now begin to
∶ do externalDtdDecl! syutemId: file:book-order.dtd Now show elementDecl!
∶ elementName: Order contentModel: (Customer,Manifest,Receipt) Now show
∶ attributeDecl!
∶ elementName: Order attributeName: xmlns attributeType: CDATA
∶ defaultValue: http://www.example.com/myschema.xml Now show elementDecl!
∶ elementName: Customer contentModel: (Name,Cardnum) Now show elementDecl!
∶ elementName: Name
∶ contentModel: (#PCDATA) Now show elementDecl! elementName: Cardnum
∶ contentModel: (#PCDATA) Now show elementDecl! elementName: Manifest
∶ contentModel: (Item*) Now show elementDecl! elementName: Item
∶ contentModel: (ID,Title,Quantity,UnitPrice) Now show elementDecl!
∶ elementName: ID contentModel: (#PCDATA) Now show elementDecl!
∶ elementName: Title contentModel: (#PCDATA) Now show elementDecl!
∶ elementName: Quantity contentModel: (#PCDATA) Now show elementDecl!
∶ elementName: UnitPrice contentModel: (#PCDATA) Now show elementDecl!
∶ elementName: Receipt contentModel: (Subtotal,Tax,Total) Now show
∶ elementDecl! elementName:
∶ Subtotal contentModel: (#PCDATA) Now show elementDecl!
∶ elementName: Tax contentModel: (#PCDATA) Now show elementDecl!
∶ elementName: Total contentModel: (#PCDATA)
∶ parse DTDFile is end!
∶ bye-bye
∶ Process Exit...

--
对很坚持生活中的平衡感和美感秩序的天秤座而言，千禧年这个循环将是一段有自
我怀疑、有自我对抗，但最终将变得更加坚强的转型期。这段期间最大的挑战，不是来
自外在，而是源自他们内心。

※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.136.23]


Re: jaxp解析DTD的例子。

 发信人: yangxuu (据说江西出美女), 信区: XML
标 题: Re: jaxp解析DTD的例子。
发信站: BBS 水木清华站 (Wed May 3 12:32:22 2000)

【 在 winday (贪玩的知了~~反省中) 的大作中提到: 】
∶ 太搞了，拿我的程序来教我 ：）
呵呵，确实原来在教研组看过你的程序，但这个程序可是我在看到
你的文章后，15分钟内编出的，不存在剽窃一说吧。另外编这个程序
旨在把这个共享出来，或许别的网友在需要解析DTD的时候能用得上。

∶ 我就是不想用ByteArrayInputStream，因为这样做其实还是在
∶ 解析XML，DTD只是“顺便”被解析了。
∶ 如果有什么接口能够直接以DTD为参数就好了。
你是想直接得到DTD的结构树吧？呵呵，是不是太懒了？
jaxp都把一个个零件给你卸下来了，组装一下有什么难的。

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.136.36]
上一篇 返回上一页 回到目录 回到页首


Re: xsl一问

 发信人: awake (我做过的), 信区: XML
标 题: Re: xsl一问
发信站: BBS 水木清华站 (Tue Sep 26 10:05:03 2000)

<xsl:element name={qname}
namespace={uri-reference}
use-attribute-sets=qnames>
<!--Content:template-->
</xsl:element>

【 在 welkin2000 (天空) 的大作中提到: 】
∶ 请问xsl中的<xsl:element>是如何使用的?
∶ thx

--

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.112.101.154]
返回上一页 回到目录 回到页首 下一篇


贴一个有点意思的例子，有些长

 发信人: alou (lou), 信区: XML
标 题: 贴一个有点意思的例子，有些长
发信站: BBS 水木清华站 (Wed Nov 15 09:47:21 2000)

这个例子主要说明如何在客户端对XML文档进行显示和输出，以及将XML文档发送到服务器
进行处理。
周一的时候我检查信箱（近两个星期没时间看，几个列表的信都堆成山了），偶然发现一
个客户端排序的例子，茅塞顿开，就改出个翻页的东西，心情大好，兴冲冲的上来要灌水
没想到遇上了众所周知的事情，一下子就没有心情了。这时看到上面的问题，闲来无事做
着玩，加了个客户端的增删元素和一个ASP做server端处理，就成了现在这个样子。
我的环境是NT4.0SP6, IE5, IIS4。用PWS做server应该也可以。如果没有server，直接打
开.html文档可以看分页和增删。
一共涉及4个文件，都放在一个目录下（比如inetpub/wwwroot目录下）。
xxx.1.html 主页面
beatles.xml XML文档（太懒了，把别人的例子原封搬过来了）
style.xsl XSL样式表，用来显示xml文档
namesUp.asp server端的处理程序，将所有名字的字母变成大写
访问的时候，
如果是安装在服务器上，用http://<安装路径的URL>/xxx.1.html，
如果是没有服务器，直接双击xxx.1.html，当然，如前所述，不是所有的功能都可以使用

//ps. 哪位大哥有MS XML SDK 2.5的文档，M$的连接有问题，以前我用Teleport扒的又不
全。或者，唔，根据3.0开发的程序在IE5下能够正常运行吗？要不我用3.0的好了，不过
还是却一个M$ installer，真烦。

少说废话，下面就是又长又臭的文件了！
//xxx.1.html
<html>
<head><title>XML Client Manupulation Demo</title></head>
<body onload="init()">
<form name="pageForm">
<input type="button" value="prev" onclick="displayRecords(0)"/>&nbsp;&nb
sp;
<input type="button" value="next" onclick="displayRecords(1)"/>&nbsp;&nb
sp;
<input type="button" value="new" onclick="newRecord()"/>&nbsp;&nbsp;
<input type="button" value="submit update" onclick="submitUpdate()"/>&nb
sp;&nbsp;
Page size&nbsp;<input type="text" name="pageSize" value="2"/>
</form>
<xml id="xmlstyle" src="style.xsl">
</xml>
<div id="results"></div>
</body>
</html>
<script language="JavaScript">
var xmldata;
function submitUpdate( )
{
var xmlReq = new ActiveXObject( "Microsoft.XMLHTTP" );
xmlReq.open( "POST", "namesUp.asp", false );
xmlReq.send( xmldata );
xmldata = xmlReq.responseXML;
results.innerHTML = xmldata.transformNode(xmlstyle.documentElement);
}
function deleteRecord( btn )
{
var pos = btn.pos;
//alert( pos )
xmldata.documentElement.removeChild( xmldata.documentElement.childNodes.it
em( pos-1 ) )
results.innerHTML = xmldata.transformNode(xmlstyle.documentElement);
}
function newRecord( )
{
var newNode = xmldata.createElement( "beatle" );
xmldata.selectSingleNode( "/beatles" ).appendChild( newNode )
var lname = xmldata.createElement( "lname" );
lname.appendChild( xmldata.createTextNode( "S." ) );
newNode.appendChild( lname );
var fname = xmldata.createElement( "fname" );
fname.appendChild( xmldata.createTextNode( "Alou" ) );
newNode.appendChild( fname );
var bday = xmldata.createElement( "bday" );
bday.appendChild( xmldata.createTextNode( "000000" ) );
newNode.appendChild( bday );
var bdaytext = xmldata.createElement( "bdaytext" );
bdaytext.appendChild( xmldata.createTextNode( "You really want it?" ) );
newNode.appendChild( bdaytext );
results.innerHTML = xmldata.transformNode(xmlstyle.documentElement);
}
function displayRecords( direction )
{
var pageSize = document.pageForm.pageSize.value
//The pre-standard version of XSLT released with IE does not support templ
ate.
var oldSelStr = xmlstyle.selectSingleNode("//xsl:for-each/@select").text;

var idx1, idx2, recFrom, recTo;
idx1 = oldSelStr.indexOf( "'", 0 ) + 1;
idx2 = oldSelStr.indexOf( "'", idx1 );
recFrom = parseInt( oldSelStr.substring( idx1, idx2 ) );
idx1 = oldSelStr.indexOf( "'", idx2 + 1 ) + 1;
idx2 = oldSelStr.indexOf( "'", idx1 );
recTo = parseInt( oldSelStr.substring( idx1, idx2 ) );
var recCount = xmldata.selectNodes( "//beatle" ).length;
if( direction == 0 ) //Prev
{
if( recFrom > 0 )
recFrom = recFrom - pageSize;
else
alert( "we are at the beginning!" )
}
else //Next
{
if( recTo < recCount )
recFrom = recTo;
else
alert( "We've come to the end of the road!" )
}
if( recFrom < 0 )
recFrom = 0;
//MY GOD, once I don't tell it, all are treated as strings!
//Can anyone help me to avoid such ugly code?
recTo = parseInt(recFrom) + parseInt(pageSize)
//alert( "From: " + recFrom + "\n" + "To: " + recTo + "\n" + "Size: " + p
ageSize )
xmlstyle.selectSingleNode("//xsl:for-each/@select").text = "beatles/beat
le[index() $ge$ '" + recFrom + "' and index() $lt$ '" + recTo + "']";
results.innerHTML = xmldata.transformNode(xmlstyle.documentElement);
}
function init() {
var pageSize = document.pageForm.pageSize.value
xmldata = new ActiveXObject( "Microsoft.XMLDOM" );
xmldata.async = false;
xmldata.load( "beatles.xml" );
xmlstyle.selectSingleNode("//xsl:for-each/@select").text = "beatles/beat
le[index() $ge$ '0' and index() $lt$ '" + pageSize + "']";
results.innerHTML = xmldata.transformNode(xmlstyle.documentElement);
}
</script>

//beatles.xml
<?xml version="1.0"?>
<beatles>
<beatle>
<lname>Harrison</lname>
<fname>George</fname>
<bday>430225</bday>
<bdaytext>Feb. 25, 1943</bdaytext>
</beatle>
<beatle>
<lname>McCartney</lname>
<fname>J.Paul</fname>
<bday>420618</bday>
<bdaytext>June 18, 1942</bdaytext>
</beatle>
<beatle>
<lname>Lennon</lname>
<fname>John</fname>
<bday>401009</bday>
<bdaytext>Oct. 9, 1940</bdaytext>
</beatle>
<beatle>
<lname>Starr</lname>
<fname>Ringo</fname>
<bday>400707</bday>
<bdaytext>July 7, 1940</bdaytext>
</beatle>
</beatles>

//style.xsl
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="">http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">
<hr/>
<table border="1">
<tr>
<th>Pos</th>
<th>Last Name</th>
<th>First Name</th>
<th>Born</th>
<th>Operations</th>
</tr>
<xsl:for-each select="beatles/beatle[index() $ge$ 'recFrom' and index()
$lt$ 'recTo']">
<tr>
<td><xsl:eval>childNumber(this)</xsl:eval></td>
<td><xsl:value-of select="lname"/></td>
<td><xsl:value-of select="fname"/></td>
<td><xsl:value-of select="bdaytext"/></td>
<td>
<input type="button" name="delete" value="Delete" onclick="deleteRec
ord(this)">
<xsl:attribute name="pos"><xsl:eval>childNumber(this)</xsl:eval></x
sl:attribute>
</input>
</td>
</tr>
</xsl:for-each>
</table>
</xsl:template>
</xsl:stylesheet>

//namesUp.asp
<%
set reqXML = server.createObject( "MSXML.DOMDocument" )
reqXML.load( request )
set nodes = reqXML.documentElement.selectNodes( "beatle/lname | beatle/fname" )
for i = 0 to nodes.length - 1
nodes.item(i).text = UCase( nodes.item(i).text )
next
response.contentType = "text/xml"
response.write( reqXML.xml )
%>

啊！这下我该满意了吧！

--

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.112.101.154]
发信人: alou (lou), 信区: XML
标 题: Re: 贴一个有点意思的例子，有些长
发信站: BBS 水木清华站 (Wed Nov 15 16:52:10 2000)

有点小问题，改变pageSize之后回车它会重新init。
架上个form.onsubmit滤一下，改一改displayRecord增加不前不后的
就正常了。

--

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.112.101.154]
上一篇 返回上一页 回到目录 回到页首


JAVA与XML (BM: inannan)

编号 | 类别 | 标题 | 编辑日期
1 | 目录 | 看来XML微软要领先了 (BM: inannan) | 2001.05.26
2 | 文件 | Re: 呵呵,我拿到了index.xsl,menu.xsl inannan | 2001.05.27
3 | 文件 | 今天居然这么多文章 inannan | 2001.05.27
4 | 文件 | Re: XML与Java是相互依存还是排斥？（nul inannan | 2001.05.30
返回上一页 回到上一级目录


看来XML微软要领先了 (BM: inannan)

编号 | 类别 | 标题 | 编辑日期
1 | 文件 | Re: 看来XML微软要领先了 inannan | 2001.05.26
2 | 文件 | Re: 看来XML微软要领先了 inannan | 2001.05.26
3 | 文件 | Re: 看来XML微软要领先了 inannan | 2001.05.26
4 | 文件 | Re: 看来XML微软要领先了 inannan | 2001.05.26
返回上一页 回到上一级目录


Re: 看来XML微软要领先了

 发信人: zixia (Powered by GNU/Linux), 信区: XML
标 题: Re: 看来XML微软要领先了
发信站: BBS 水木清华站 (Sat May 13 08:35:05 2000)

呵呵，没想到兄弟这么愤慨，估计和 shinewu 是一伙的.. :)

只是讨论一下啊，发表了一下自己的观点嘛...

【 在 weffen (wef) 的大作中提到: 】
∶ 不知道你这句话时什么意思, 如果你觉得你觉得java是垃圾, 那么请你
∶ 指教你凭什么说java是垃圾? 你这个xml斑竹凭什么还G这样的文章?
^^^^^^^^^^这个问题，首先的来于偶最初学习Java的体会 :P
那时候，偶用 P166 32M 的机器，用JDK学习Java,
首先写了一个 Hello World, 编译用了 1.5 分钟左右，
然后启动又用了 1.5 分钟左右，我的 Hello World 运行成功...

因为当时Java风头正旺，个大媒体轮流吹嘘，这种动力使偶在这种
速度下实现了偶的一个简单的网络 Server 程序和
一个 AWT 的图形程序... 以这种速度进行 DEBUG, RECOMPLIE...

之后，偶就对 Java 仇恨至极，呵呵……

其次，我从一开始对于 Java 这种一次编写，到处运行的口号
就没有好感，呵呵，说出来肯定有Java牛人来攻击偶，偶觉得
Java 的 JVM 充其量算个高级Basic 解释器吧（至少功能上差不多）
嘿嘿，连续投换几次概念，就变成无所不能的Java了... FAINT

∶ 真不知道你这个斑竹怎么当, 不知所谓!
hehe... 偶都不知道偶的文章会被斑竹g呢，//bow 版主先

∶ xml如果没有java的支持那才是垃圾! xml的parse应用势必要分布运算,
^^^^^^^^^^^^^^呵呵，从这句里看的出，你受Java的
骗太重啦... 或者说你是Java的强烈爱好者，支持者吧...
为什么 XML 没有了 Java 就变成垃圾了？呵呵，
相信制定 XML 规范的组织不是因为有 Java 才制定 XML
协议的吧，而对于大多数开发 XML 人员来说，Java只是
很多的 XML 解释器中的一个而已，Java并不是整个世界 :)

∶ java的rmi, corba和ejb非常系统地, 有效地全面解决这个问题.
令人很 FAINT, CORBA 竟然在概念中被换成了
“Java 的 CORBA”，呵呵... 偶觉得 Java 有很多地方都是这么
偷偷的弄晕人的（当初可能也是导致我学习Java的原因？:P）

∶ 我也曾经用过perl的xmlparser做过一个project,但是并没有jaxp用的
∶ 好, 感觉expat还是适合小xml project, 并没有java好, perl的xml
∶ parser--expat虽然是C些, 表面上以为是很快, 但是当你的project一大,
∶ 你的负荷一大, 就算用汇编写也不行, java就不同, 首先,它支持绝大
∶ 多数的charset,当然包括gb2312, perl 的expat, 目前只默认有big5,
∶ gb2312还要自己做unicode 的map, 也是真够小气.其次, java的
∶ corba/rmi接口可以将你的xml parser以ejb等方式嵌入到不同的机器分布
∶ 运算, 同时parse, 非常健壮.
偶现在是 Java/XML 盲，呵呵，所以不敢乱说话...
但是偶觉得你的分析方式真是完全继承了 Java 的特点，
呵呵，偶觉得你是 Java 真正的高手，完完全全的学到了
Java的精髓……
您先说您用Perl和Java都写过XML的项目，然后说感觉Perl不如Java...
为什么呢？你就说Perl是C写的... C 写的应该很快啊？
你又说汇编写都不行～那什么行啊～Java....
Java为什么行？因为他支持更多的Charset... :P
典型的投换概念吖...

最后才提到分布的问题... 呵呵，好像 rmi/ejb 确实有用...
但是条条大陆通罗马，嘿嘿，并不是只有 Java 可以做这种事情的...
实现方式不同罢了... C/Perl/VB谁不能啊...

∶ 不懂不要瞎说!懂java的就说理由. 不要说这么恶心的的话.
NOD... 做 Java 盲真不好，说起 Java 想扁 shinewu 的时候找不到理由 :(

--
正确的说法是什么呢？ NT=No Thanks, WWW=World Wide Wait
诚邀阁下光临{题未明}站: http://www.zixia.net
    Linux，RedHat发行 或 Linux，TLC发行。如果嫌长也可以说RedHat或TLC。
    说RedHat、TLC就别提Linux，要提Linux的名字就得说成Linux，RedHat发行。
    在这方面Debian和Slackware作的好，在政治上正确！
Linux和自由软件是观念上的革命，它不是商业活动！[题未明: http://www.zixia.net[m[32m][m[u[23;0H

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.112.45.46]
返回上一页 回到目录 回到页首 下一篇


Re: 看来XML微软要领先了

 发信人: shinewu (with fun), 信区: XML
标 题: Re: 看来XML微软要领先了
发信站: BBS 水木清华站 (Sat May 13 11:44:12 2000)

【 在 zixia (Powered by GNU/Linux) 的大作中提到: 】
∶ 呵呵，没想到兄弟这么愤慨，估计和 shinewu 是一伙的.. :)
战友而已，我还不认识他 :)
∶ 只是讨论一下啊，发表了一下自己的观点嘛...
∶ ^^^^^^^^^^这个问题，首先的来于偶最初学习Java的体会 :P
∶ 那时候，偶用 P166 32M 的机器，用JDK学习Java,
∶ 首先写了一个 Hello World, 编译用了 1.5 分钟左右，
∶ 然后启动又用了 1.5 分钟左右，我的 Hello World 运行成功...
∶ 因为当时Java风头正旺，个大媒体轮流吹嘘，这种动力使偶在这种
∶ 速度下实现了偶的一个简单的网络 Server 程序和
∶ 一个 AWT 的图形程序... 以这种速度进行 DEBUG, RECOMPLIE...
∶ 之后，偶就对 Java 仇恨至极，呵呵……
java现在又要重新向desktop的client进军
你要是用了sun java hotspot
你就不会那么凄惨了
再说了，编译程序本来就是很费时间
比如vc++的hello world
你那机器上面转一转也得一会
如果你用了jdk1.3编译tomcat
几百个java文件编译起来也就是一会
∶ 其次，我从一开始对于 Java 这种一次编写，到处运行的口号
∶ 就没有好感，呵呵，说出来肯定有Java牛人来攻击偶，偶觉得
∶ Java 的 JVM 充其量算个高级Basic 解释器吧（至少功能上差不多）
∶ 嘿嘿，连续投换几次概念，就变成无所不能的Java了... FAINT
说实在话，你要是指望java的GUI程序
一次编译到处运行是不现实的
但是java在server side是完全可以做到的
因为server side更看中的是基本的数据库连接,
io,事务处理等等
这些在java里面是非常方便的
而且java native支持socket,thread不也是很爽的说
chinaren的聊天室不也是这么做的吗
再说一点
chinaren的邮件系统如果真的是用tomcat的话
那么整个系统是很容易分布的
而且你可以利用nt,solaris等一切有java环境的
平台，这样的技术方案能最大限度的利用用户的现有资源
当然如果你是重头作起,不在乎money那就另说
∶ hehe... 偶都不知道偶的文章会被斑竹g呢，//bow 版主先
∶ ^^^^^^^^^^^^^^呵呵，从这句里看的出，你受Java的
∶ 骗太重啦... 或者说你是Java的强烈爱好者，支持者吧...
∶ 为什么 XML 没有了 Java 就变成垃圾了？呵呵，
这句话是不对
但是现阶段大量的xml工具
都是用java写的这是不争的事实
而且企业应用xml好像还是java的
多些，主要他们核心的parser还有处理程序
都是用java写的
∶ 相信制定 XML 规范的组织不是因为有 Java 才制定 XML
∶ 协议的吧，而对于大多数开发 XML 人员来说，Java只是
∶ 很多的 XML 解释器中的一个而已，Java并不是整个世界 :)
∶ 令人很 FAINT, CORBA 竟然在概念中被换成了
∶ “Java 的 CORBA”，呵呵... 偶觉得 Java 有很多地方都是这么
∶ 偷偷的弄晕人的（当初可能也是导致我学习Java的原因？:P）
corba把本身不属于java
但是orb却大都是用java写的
当然有c，c++的实现
不过还是java写的更多
这也是事实，而且主流应用
也是在java范畴
∶ 偶现在是 Java/XML 盲，呵呵，所以不敢乱说话...
∶ 但是偶觉得你的分析方式真是完全继承了 Java 的特点，
∶ 呵呵，偶觉得你是 Java 真正的高手，完完全全的学到了
∶ Java的精髓……
∶ 您先说您用Perl和Java都写过XML的项目，然后说感觉Perl不如Java...
∶ 为什么呢？你就说Perl是C写的... C 写的应该很快啊？
∶ 你又说汇编写都不行～那什么行啊～Java....
∶ Java为什么行？因为他支持更多的Charset... :P
∶ 典型的投换概念吖...
瞎扯，一点不懂，乱讲话
∶ 最后才提到分布的问题... 呵呵，好像 rmi/ejb 确实有用...
∶ 但是条条大陆通罗马，嘿嘿，并不是只有 Java 可以做这种事情的...
∶ 实现方式不同罢了... C/Perl/VB谁不能啊...
∶ NOD... 做 Java 盲真不好，说起 Java 想扁 shinewu 的时候找不到理由 :(
你来呀
有胆子来java板
大家在干一场
∶)

--
很久以来一直想劝自己戒网
直到有一天发现自己已经离不开网络
从那以后就告诫自己不要尝试远离网络
就好比鱼儿不要远离池塘一样

※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.173.62]


Re: 看来XML微软要领先了

 发信人: scaner (当我想起你的时候), 信区: XML
标 题: Re: 看来XML微软要领先了
发信站: BBS 水木清华站 (Mon May 15 17:52:04 2000)

我觉得java确实不怎么样。我觉得
xml就酸不用java也没有什么。

比起python来,java没有什么优势的。
总觉得层次越简单，越可靠，分布的parse我看
根本谈不上什么健壮，也没有任何的实际意义。
不知道将来的牛机器，什么东西处理不了？
xml parser多的很，不是除了expat就没有什么
别的非java实现了。
【 在 weffen (wef) 的大作中提到: 】
∶ 不知道你这句话时什么意思, 如果你觉得你觉得java是垃圾, 那么请你
∶ 指教你凭什么说java是垃圾? 你这个xml斑竹凭什么还G这样的文章?
∶ 真不知道你这个斑竹怎么当, 不知所谓!
∶ xml如果没有java的支持那才是垃圾! xml的parse应用势必要分布运算,
∶ java的rmi, corba和ejb非常系统地, 有效地全面解决这个问题.
∶ 我也曾经用过perl的xmlparser做过一个project,但是并没有jaxp用的
∶ 好, 感觉expat还是适合小xml project, 并没有java好, perl的xml
∶ parser--expat虽然是C些, 表面上以为是很快, 但是当你的project一大,
∶ 你的负荷一大, 就算用汇编写也不行, java就不同, 首先,它支持绝大
∶ 多数的charset,当然包括gb2312, perl 的expat, 目前只默认有big5,
∶ gb2312还要自己做unicode 的map, 也是真够小气.其次, java的
∶ corba/rmi接口可以将你的xml parser以ejb等方式嵌入到不同的机器分布
∶ 运算, 同时parse, 非常健壮.
∶ 不懂不要瞎说!懂java的就说理由. 不要说这么恶心的的话.

--
I forget, I forgive

※ 来源:·BBS 水木清华站 smth.org·[FROM: 210.76.97.249]


Re: 看来XML微软要领先了

 发信人: zixia (Powered by GNU/Linux), 信区: XML
标 题: Re: 看来XML微软要领先了
发信站: BBS 水木清华站 (Tue May 16 05:32:09 2000)

一种及其类似 Java 的，也类似 Perl 的东西 FAINT

在 Linux 下输入 python 回车 :)

一个叫做 zope 的 WebServer 就是用 python 写的，据说效率还可以...

语法也是 import 一个类，然后再用什么 Socket.connect 之流...

封装了好多的功能模块

【 在 Kop2000 (海盗王) 的大作中提到: 】
∶ 请教一下，python是什么

--
正确的说法是什么呢？ NT=No Thanks, WWW=World Wide Wait
诚邀阁下光临{题未明}站: http://www.zixia.net
    Linux，RedHat发行 或 Linux，TLC发行。如果嫌长也可以说RedHat或TLC。
    说RedHat、TLC就别提Linux，要提Linux的名字就得说成Linux，RedHat发行。
    在这方面Debian和Slackware作的好，在政治上正确！
Linux和自由软件是观念上的革命，它不是商业活动！[题未明: http://www.zixia.net[m[32m][m[u[23;0H

※ 修改:·zixia 於 May 16 05:35:33 修改本文·[FROM: 202.112.45.46]
※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.112.45.46]
上一篇 返回上一页 回到目录 回到页首


Re: 呵呵,我拿到了index.xsl,menu.xsl

 发信人: flier (小海 //爱喝可乐^_^), 信区: XML
标 题: Re: 呵呵,我拿到了index.xsl,menu.xsl
发信站: BBS 水木清华站 (Fri Jul 28 17:47:17 2000)

【 在 veb (昵称显示失败...) 的大作中提到: 】
∶ 你的best总有好几个,而这几个自己差别还不少.呵呵
∶ 我知道的最著名的是clark的c/c++ parser,也是实际使用最多的.
∶ 能表现xml的两个都是c/c++
∶ 用java编的多是多,但是...
∶ 你没有看见一种东西实现了,然后出来一篇文章:****的java实现?
∶ c/c++的东西perl可以用.
∶ 偶是perl初学者,但是已经体会到perl+xml的优势.
∶ 一句话,perl的文本处理能力.这点是比较独特的,
∶ java和c/c++比,抛开虚的,就是跨平台.而这个perl有,c/c++也有(不严格,呵呵)
∶ 但是需要java这种跨平台特征的,主要是代码移动的应用.这个在www上有时不能忍受.
∶ **********咱们主要讨论java等语言对xml的处理*********
∶ ...................
我觉得在目前的硬件和软件发展水平上，JAVA还只是一个比较虚的概念
就像计算机发展史上曾经有一段时间爆炒分布式计算、并行计算
当时也出了不少所谓支持分布式、并行计算的语言、操作系统等等
但是当时的硬件、软件发展水平限制了其发展规模，后来也就不了了之了
虽然对后来计算机业发展起到了很大的影响作用，但客观上说在当时
是失败的……如果说错误在哪里，只能说他们走得太快了，超过了计算机发展的
物理限制……也走在了市场需求前面……就像当年苹果推出手写电脑牛顿一样……

而JAVA从出现到现在其实也是处于这样一个状态，众人瞩目但是无法切入实际
就国内的情况而言，JAVA的诸多优点根本没有实际需求作为后盾
也就是说大家都知道JAVA好，非常好，非常非常好，非常非常非常好……
但是具体到实际工作中去，有多少人能够下定决心舍弃已经成熟的程序开发架构
开发工具转用时髦的JAVA呢？有，但是很少，起码我没有看到多少 :)
就是在国外，出了一些在这方面有需求的东东，大多数软件还是用的诸如C/C++
之类的“传统”编程语言开发。为什么？还是因为JAVA走得太快了
我们可以预见他在不远的将来能够给我们带来的巨大改变
但是我们在目前的硬件软件发展水平下没有足够的理由让我们自己用它 :)

说了不少题外话，至于JAVA+XML，我觉得的确是好东东，但是在目前来说
出了一些小型应用，大部分任务我还是喜欢用C++做，相信大家应该和我差不多 :)
而诸如PERL PHP ASP之类的脚本语言，我觉得本质上没有太大差别
veb你喜欢用perl,偶喜欢php,他喜欢...也没什么了，萝卜白菜各有所爱嘛，呵呵
语言不过是工具而已，只是用来表达我们的思想的工具而已，没什么太大不同
--
. 生命的意义在于 /\ ____\ /\_ \ /\_\ .
. 工作、 \ \ \___/_\/\ \ \/_/__ __ _ _★ .
. 希望、 \ \ ____\\ \ \ /\ \ /'__`\ /\`'_\ .
. 爱你的人、 \ \ \___/ \ \ \___\ \ \/\ __//\ \ \/ .
. 和你爱的人 \ \___\ \ \_____\ \__\ \____\ \ \_\ .
※ 修改:·flier 於 Jul 28 17:55:36 修改本文·[FROM: 202.114.32.13]
※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.114.32.13]
返回上一页 回到目录 回到页首 下一篇


Re: XML与Java是相互依存还是排斥？（null)

 发信人: justkidding (青蛙王子~~寄托人生), 信区: XML
标 题: Re: XML与Java是相互依存还是排斥？（null)
发信站: BBS 水木清华站 (Mon Oct 9 18:21:19 2000)

【 在 orchid (幽兰) 的大作中提到: 】

虽然都是跨平台，但面向的层次不同啊
XML是数据表述
JAVA是代码执行
至少目前来说结合起来是个不错的选择
但是如果以后类似BizTalk Framework的东东成熟了就难说了
.NET的野心很大的说
--

说了世上一无牵挂为何有悲喜
说了朋友相交如水为何重别离
说了少年笑看将来为何常回忆
说了青春一去无悔为何还哭泣

※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.173.44]
上一篇 返回上一页 回到目录 回到页首


SAX编程入门

 发信人: cloudLo (呵呵), 信区: XML
标 题: SAX编程入门
发信站: BBS 水木清华站 (Sun May 21 20:45:09 2000)

SAX编程入门
作者: 常明 写作日期:2000-04-26
SAX其实就是（Simple Application interface for XML)，这个接口规范是XML分析器和
XML处理器提供的较XML更底层的接口。它能提供应用以较大的灵活性。
SAX诞生是在XML-DEV讨论组上，提出它的原因是有一些情况不适用DOM接口，而且DOM实
现太大而且比较慢。
SAX是一种事件驱动的接口，它的基本原理是，由接口的用户提供符合定义的处理器，X
ML分析时遇到特定的事件，就去调用处理器中特定事件的处理函数。一般SAX都是JAVA的
接口，但其实C++也可以用SAX接口，但C++的分析器比较少。
开发者主要关心的就是，如果我用一个SAX接口的XML分析器或处理器，我需要做些什么
呢？那么，下面我们就看一下程序怎么写吧！
SAX需要用户提供一下几个处理器类的实现：
DocumentHandlerXML：文件事件的处理器；
DTDHandler：DTD中事件的处理器；
ErrorHandler：出错处理器。
写程序就是以下这么几步了：
首先需要从这几个类继承出自己的子类，
重载其中自己感兴趣的事件的处理方法。
向分析器，注册此处理器类，其实告诉分析器使用你的处理器。
启动分析器。
下面是我抓来的一个例子（既然有现成的，自己写好象比较浪费了:PP），这个例子中的
PrettyPrint类就是一个继承DocumentHandler的实现类，大家可以看到PrettyPrint选择
实现了开始元素、结束元素、字符数据、处理指令这样几个事件，最后的结果就是把以
不同深度的缩进表示元素的层次的形式把XML输出。
值得注意的是，在处理函数的参数中包含了与此事件相关的重要信息，处理函数其实就
是对这些数据的处理。比如开始元素事件的参数中就会有元素名，属性列表的信息。
void PrettyPrint::startElement(const XMLCh* const name AttributeList& attri
butes)
{
indent++; // A new element started, //it should be indented one
// level further than the current level
int i;
for(i = 0; i < indent; i++) outStrm << "\t";
outStrm << "<" << name;
unsigned int len = attributes.getLength();
for (unsigned int i = 0; i < len; i++)
{
outStrm << " " << attributes.getName(i) <<
"=\"" << attributes.getValue(i) <<
"\"";
}
outStrm << ">";
}
void PrettyPrint::endElement(const XMLCh* const name)
{ int i; for(i = 0; i < indent; i++)
outStrm << "\t"; outStrm << "</" <<
name << ">";
indent--;
}
void PrettyPrint::characters(const XMLCh* const chars, const unsigned int
length)
{
for (unsigned int index = 0; index < length; index++)
{
switch (chars[index])
{
case chAmpersand : outStrm << "&"; break;
case chOpenAngle : outStrm << "<"; break;
case chCloseAngle: outStrm << ">"; break;
case chDoubleQuote : outStrm << """; break;
default: outStrm << chars[index];
break;
}
}
}
void PrettyPrint::processingInstruction(const XMLCh* const target, const
XMLCh* const data)
{
int i; for(i = 0; i < indent; i++) outStrm << "\t";
outStrm << "<?" << target; if (data) outStrm
<< " " << data; outStrm << "?>\n";
}
看过这个例子，大家应该是比较清楚如何写SAX的处理器了。具体的SAX接口可以在你要
用的分析器的定义中找到，JAVA中就是interface或class，C++中可能就是类的定义。写
好以后就要调用Parser类的以下函数，将处理器设到parser内去：
public abstract void setDTDHandler (DTDHandler handler);
public abstract void setDocumentHandler (DocumentHandler handler);
public abstract void setErrorHandler (ErrorHandler handler);
...
此外SAX接口里有另外的几个由分析器回调的处理器,他们的用法下面一一讲一下：
InputSource:这个处理器的作用是控制XML文件的输入，这样输入就可以有更多种选择，
可以来自文件系统，或Web服务器，甚至数据库。
EntityResolver：解析外部实体用，分析器通过它得到外部实体。
Locator：定位器，作用是分析器用来在文件中定位的。作用之一就是报错时能得到错误
的位置。
这几个的详细用法，如果需要我以后会写文章讲细一些。
DOM也是XML的数据接口，读到这里，有些读者可能会问，SAX和DOM的关系是怎样的呢？
Don Park的SAXDOM实现了从SAX接口实现DOM模型，从这样一个工具我们可以看出SAX是
比DOM更低层的接 口，有了SAX，我们完全可以自己构造出DOM。DOM好用一些，为什么还
要提出SAX呢？DOM模型的建立是分 析完整个XML文件后才能完成，对于某些特殊情况用
DOM实现就不太现实，如XML文件特别大时，在内存建立 一棵它的DOM树是不可想象的，
还有当对于动态生成的XML，还没有完成时，我们就需要知道里面有什么， 这时也不能
用DOM。另外SAX运行很快，对于一些简单的任务，用它效率比较高。所以DOM和SAX各有
千秋， 可以在开发中互补。

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.118.81.11]


使用DOM创建XML(转载)

 发信人: cloudLo (呵呵), 信区: XML
标 题: 使用DOM创建XML(转载)
发信站: BBS 水木清华站 (Sun May 21 21:12:29 2000)

使用DOM创建XML
作者: 常明 写作日期:2000-04-24
我以前在介绍XML和让别人试着使用DOM时，不只一个人问过我用DOM是否能用来凭空直接
生成一个XML文件。
当然，这是当然可以的了，其次是怎么写程序呢。
那我就这个问题，专门在这篇文章中用VB和MSXML的COM接口的DOM实现的一个例子来讲一
下：
首先我要说明的是，我用的MSXML的版本是IE5带的，版本号是5.0.2919.3800，微软的早
期版本的接口和新的有些不一样，所以自己编程时，应该看一下她的接口和说明。
如果你对vb和COM不太熟悉，看下面的就可能比较费劲了，但VB比起其他的语言实现，应
该是比较简单清楚的了。
首先声明下面要用的几个对象的变量:
Dim tempdoc As MSXML.DOMDocument
Dim tempnode As MSXML.IXMLDOMNode
Dim tempelement As MSXML.IXMLDOMElement
Dim tempattribute As MSXML.IXMLDOMElement
Dim root As MSXML.IXMLDOMElement
生成一个XML DOMDocument 对象
Set tempdoc = New MSXML.DOMDocument
生成根节点并把它设置为文件的根
Set root = tempdoc.createElement("MyRoot")
Set tempdoc.documentElement = root
生成孩子节点添加到根节点上去，并且为这个节点设置一个属性
Set tempnode = tempdoc.createNode(MSXML.NODE_ELEMENT, "MyNode", "")
tempnode.Text = "MyNodeValue"
root.appendChild tempnode
取得元素节点的接口，添加属性
Set tempelement = tempnode
tempelement.setAttribute "MyAttribute", "MyAttributeValue"
写xml文件
Open "MyXMLFile.xml" for output as #1
Print #1, root.XML
Close #1
下面就是上面程序生成的XML文件内容：
<MyRoot> <MyNode MyAttribute="MyAttributeValue"> MyNodeValue </MyNode></MyRo
ot>
在MSXML中也有非DOM的接口可以用，这就要看大家自己的用法了。

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.118.81.11]


DOM概览

 发信人: cloudLo (呵呵), 信区: XML
标 题: DOM概览
发信站: BBS 水木清华站 (Sun May 21 21:19:39 2000)

DOM概览
作者: 常明 写作日期:2000-04-26
DOM是对XML开发者相当重要的，对于XML应用开发来说就是一个对象化的XML数据接口。
最基本的XML开发通常都要使用它。简单说，DOM就是一组对象的集合，通过操纵这些对
象，我们就能操纵XML和HTML数据。
DOM全称是Document Object Model,人如其名，DOM就是一个文档对象组成的模型，它不
光用于XML，最先是起于HTML的。对作过Web开发的人，特别是写过动态DHTML的人，应该
对HTML中的文档对象有一定概念，DOM就是这样一个对象模型的标准。
DOM另外又是一个接口，一个与语言无关的接口，应用通过这个接口来和XML或HTML内的
数据打交道。无论是在浏览器里，还是在浏览器外，在服务器上，还是客户端，我们只
要用XML就会碰到DOM。
1. DOM的来由
为什么要定义这样一个接口呢？这样讲吧，我们知道数据库有标准的ODBC/JDBC这样的接
口规范，那么我们使用XML数据如果没有一个统一的接口，我们写程序是不是要每个人都
要自己去处理XML的语法细节，如果我们手头有XML的语法分析器（有人译为解析器）,它
也必然有一个接口让我们通过它访问XML数据，所有语法分析器的接口如果都不相同，我
们开发就必须针对某一个分析器，如果换了分析器，程序就必须重写。到这里，又和数
据库有可比性了，我们编数据库应用可以不管后面的数据库系统究竟是ORACLE还是SYBA
SE,或INFORMIX，是因为有了ODBC，所以要是我们做XML应用开发，就应该有一个统一的
XML数据接口，这个接口就是DOM。
2. DOM的三部分
目前的DOM分为 核心（core）、HTML、XML三部分。
核心：
这部分是结构化文档比较底层的对象的集合，但他们就已经可以表达出任何HTML和XML文
件了。
HTML和XML
这两部分是专为XML和HTML提供的另外的高级接口,使操纵者两类文件更方便。98年的只
有HTML部分。
3.DOM组成
这里有Vance Christiaanse给出的DOM的一个整体的图，可以使大家有一个DOM模型基本
组成的概念。要看此图 请点这里（比较大哦）。
4 文件树
DOM中的最基本对象应该就是Node了。从它又派生出许多类型的node。所有这些node组成
一棵文件树，它包含了XML或 HTML文档的几乎全部信息。
在结构化文档中，信息是按层次化的树形结构组织的。所以结构化文档的模型的组织也
必然是树形的。
如一本书的组成是
书----标题
|
---正文---第一章-----第一节---段
|
--第二章 .....
Node简单的说，就是上面树形结构中的节点，但对XML来说还包括其他XML语法相关的节
点，包括XML声明，文件类型声明，处理指令等等。
Node提供一些基本属性和操作，各种类型的Node则继承Node的属性和操作，同时有各自
特殊的属性和操作。比如ElementNode
5 基本对象
上面已经讲了DOM中最基本的对象就是节点，它的接口定义如下：
从NODE派生出的几个比较重要的节点类型有Document Element, Attribute,Text:
Document是DOM树的根，它代表一个完整的XML文档。它会有一些自己的子节点，至少应
该有一个文档元素的子节点，这个节点类型为Element，是XML文件最外层的根元素，此
外他还可能有DocumentType（唯一），ProcessingInstruction，Comment这几种作为子
节点。
Element代表XML元素，是最常用的节点，它可以组成以它为根的DOM的子树。他还可以有
Element子节点，以及Attribut,Text，ProcessingInstruction，CDATASection，Comme
nt子节点。
Attribute是XML元素的属性，它的父节点必然是Element，它的子节点有Text和EntityR
eference。
除了Node，DOM里还有两个比较重要的对象：
NodeList它实现的一个节点的序列，用于表示有顺序关系的一组节点，比如某个节点的
孩子节点序列，它还出现在一些方法的返回值中，例如GetNodeByName。
NamedNodeMap它表示的是一组节点和其唯一的名字的对应关系，这个对象主要用在属性
节点的表示上。

6 DOM的版本
目前的DOM level one是W3C1998年8月18日通过的，现在w3c正在进行DOM2的制定。
DOM2我们将在以后的文章中介绍。
7 编程
DOM 的具体使用和编程不是很难，现在DOM的实现主要是以部件的形式提供比如MSXML，
和JAVA实现比如XML4J。这两种实现，对我们使用它的接口来说，大同小异，但许多实现
都加了自己的扩展的接口，这也是我们选择时考虑比较多的。
DOM接口的具体的使用，我会在相关的文章中讨论。

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.118.81.11]


其实建立WAP站点还是很容易的!!!

 发信人: JoyKiller ( 默默怀念--闪亮的日子), 信区: XML
标 题: 其实建立WAP站点还是很容易的!!!
发信站: BBS 水木清华站 (Tue Jun 13 18:41:44 2000)

无论是在NT平台还是在LINUX/UNIX下,
从WEB 站点过渡到WAP站点,
作几个改动就可以.
1. 更改MIME类型, 添加支持WAP的MIME类型.
具体的请看前文.
2. 编辑WML文件,
这可以在模拟器上进行,
然后把页面放入相应的目录中.
3. 如果是动态生成WML,
无论是用JAVA, ASP,PHP, PERL等,
都只要更改输出的文件头,
按WML格式输出就行了.

这些天, 实在没有机会上 SMTH BBS,
让大家久等,
实在不好意思.
辛苦VEB斑竹了. //BOW.

--

宠辱不惊花开花落,
去留无意云卷云舒.

※ 来源:·BBS 水木清华站 smth.org·[FROM: bbs.xanet.edu.c]


XML Scriptlet技术及其在ASP环境下的应用

 发信人: cloudLo (呵呵), 信区: XML
标 题: XML Scriptlet技术及其在ASP环境下的应用
发信站: BBS 水木清华站 (Sun Jul 23 21:06:39 2000)

发信人: wsbd (纹丝不动), 信区: COM_DCOM
标 题: XML Scriptlet技术及其在ASP环境下的应用
发信站: 武汉白云黄鹤站 (Sat Mar 25 13:35:59 2000), 站内信件

一、基本概念
作 者 : 仙人掌工作室
     服务器端包含（Server-Side Include，SSI）是一种在多个ASP页面之间共享已有
代码的一种技术。由于SSI有利于脚本代码的重用，因此它很快成为一种广受欢迎的编码
技术。然而，SSI是否是代码重用最好的解决方案呢？我们知道，使用SSI时只需使用下
面这种包含命令：
  < !-- #include file="c:\scripts\myLib.vbs" -->
  < !-- #include virtual="/scripts/myLib2.vbs" -->
     就能够让ASP引擎在定位页面中的自定义函数时自动查找指定的包含文件。包含文
件（或模块）与调用其函数的页面是分离的，从而也有利于减少维护工作量。比如，对
某个包含文件内函数错误的修正将解决所有引用该包含文件的页面中存在的问题。
     然而，当前的脚本编程已经越来越严格地依赖于面向对象的语法，ASP编程也不例
外。那么，是否存在某种方法能够将原来放入包含文件的公用脚本函数以对象的形式定
义并导入ASP应用呢？答案就是本文要介绍的XML Scriptlet。
     ㈠ 什么是XML Scriptlet
     XML Scriptlet是一种遵从XML语法规范的文本文件，这种文本文件定义的是基于脚
本的软件组件，包括组件对象的属性、方法和事件。实际上，XML Scriptlet就象是一种
用VBScript或JScript编写的COM对象。在XML Scriptlet中，XML代码的作用是描述组件
的编程接口，以及实现组件功能的脚本代码的组织。客户程序所看到的XML Scriptlet接
口与普通的COM对象接口一样，而且可以用调用二进制COM对象或ActiveX控件一样的方法
调用XML Scriptlet。
     我们可以简单地将XML Scriptlet理解为一种用脚本代码定义的COM对象。正因为如
此，XML Scriptlet可望成为ASP环境下功能更为强大的服务器端包含的替代技术。使用
XML Scriptlet，我们不仅可以解决代码重用和面向对象脚本的编写问题，而且可以得到
严格遵从COM规范的、非二进制的COM对象，这些对象可以在任何COM兼容应用中使用。
     既然XML Scriptlet可以看成是一种非二进制的COM对象，那么，它又是如何工作的
呢？接下来我们将回答这个问题。
     ㈡ XML Scriptlet的基本工作机制
     XML Scriptlet是一种文本文件，所有这些文本文件共享一个标准的、唯一的运行
时引擎——scrobj.dll。该引擎负责为任何遵从特定格式规则（将在本文后面具体讨论
）的XML Scriptlet文件构造COM接口。
     虽然所有XML Scriptlet共享同一个执行模块scrobj.dll，但XML Scriptlet与所有
其它COM组件一样，它也要用一个128位的CLSID注册。当对象被调用时，scrobj.dll负责
执行XML Scriptlet文件中的代码。文件的URL与对象的CLSID一起存储在注册表中。运行
时所显露的接口也由XML Scriptlet文件定义，并经由scrobj.dll中称为接口句柄的模块
得以体现。当前，仅有有限的几种接口存在上述句柄，它们是：自动化（Automation）
、事件处理（Event Handling）和行为（Behavior）。
     ㈢ 注册与描述信息
     XML Scriptlet文件主要分成三个部分，分别对应三个XML标记：< registration>
、< implements>、和< script>。其中第一个标记< registration>中提供的是一些概
要信息，包括描述文字、progID、版本号、CLSID字符串。CLSID既可以用通用工具Guid
Gen.exe生成，也可以由Microsoft提供的XML Scriptlet向导生成。所有这些概要信息均
通过XML标记的属性给出，下面是一个例子：
  < registration
   description="My First XML Scriptlet"
   progid="First.Scriptlet"
   version="1.00"
   classid="{11DE6520-5E09-11d2-BC00-000005000E23}">
  < /registration>
     注册XML Scriptlet时上述信息将被存储到系统注册表的对应键中。XML Scriptle
t文件通常以.SCT为扩展名。注册这种.SCT文件需要一个专用的regsvr32.exe。您可以从
Microsoft的Scriptlet主页下载这个工具和它的文档。
     ㈣ 显露编程接口
     标记< implements>用于声明XML Scriptlet所实现的COM接口。如前所述，当前能
够定义的接口是有限的，只可以定义那些存在对应接口句柄的接口，其中包括：自动化
、事件处理和IE5的行为（Behavior）。然而，在许多情况下，我们只需要用到自动化，
特别是在编写应用于ASP页面的Scriptlet时。下面是接口声明的一个实例：
  < implements type="Automation">
   < method name="GetDataFromSource">
   < parameter name="providerName" />
   < parameter name="cmdStr" />
   < /method>
   < method name="ConvertDataToXML" />
  < /implements>
     这个Scriptlet显露了两个方法，分别为GetDataFromSource和ConvertDataToXML。
前者需要两个参数，即providerName和查询命令字符串cmdStr。第二个方法不需要参数
。使用类似的方法，我们可以为Scriptlet定义更多它所能提供的功能。可以想象，所有
以前通过SSI提供的公用例程均可以用这种方法重新组织成为基于脚本的COM服务器。
     ㈤ 实现脚本函数
     所有在< implements>标记中声明的函数，以及所有内部支持例程均必须在< scri
pt>标记中给出具体实现。这个< script>标记和我们熟悉的ASP或HTML中的< script>标
记相似。然而，应注意尽量不要使用多种脚本语言。尽管使用多种脚本语言在技术上是
允许的，但频繁地切换脚本解释引擎将引起大量的额外开销。
     另外需要注意的一点就是XML的格式要求。由于XML Scriptlet是用XML编写的，因
此它必须遵从XML的“结构良好”规则，特别是在脚本中用到“< ”和“>”字符的时候
。解决方法是，将所有脚本函数均用字符数据分隔符（< ![CDATA[ ... ]]>）包围，例
如：
  < ![CDATA[
   function Foo(a, b) {
   return (a < b);
   }
  ]]>
二、应用实例
作 者 : 仙人掌工作室
     我们已经知道，XML Scriptlet是一种XML文件，其中包含了将本身描述为一个合格
的COM自动化服务器的文本信息以及脚本代码。使得这种XML文件可以成为COM服务器的关
键在于一个对所有XML Scriptlet都有效的公用运行时引擎。正是由于这个引擎的存在，
我们才可以把XML Scriptlet直接看作是用VBScript或JScript编写的标准COM对象。
     对于ASP开发者来说，由于以下两个原因这种脚本的模块化具有特殊的现实意义：

它提供了一种快速、巧妙地组件化、结构化传统ASP应用的方法，且无需借助于C/C++、
VB这类“真正的”编程语言。
XML Scriptlet所显露的编程接口是Web开发者所熟悉的基于对象的接口。
     接下来，我们将通过一个您可能无数次面对的任务演示XML Scriptlet的应用：获
取一个ADO记录集，并将结果显示为HTML表格。
     ㈠ 任务分析
     显然，上述任务主要包含两部分操作。首先是从指定的数据源提取记录集；其次，
将所获取的记录格式化成表格显示。在一般情况下，区分该任务的两个实例（两次不同
的操作）仅需以下几个参数：
访问数据源的连接字符串；
提取数据的命令文本（SQL查询，存储过程，等等）；
应用于结果表格各个部分的CSS样式；
要求显示的列及其标题、样式。
     该任务的典型实现步骤包括：创建必须的ADO对象，执行提取数据的命令，遍历结
果记录集并使用Response.Write输出结果表格。现假定我们面临的就是这样一个一般化
的应用要求：尽可能地将代码封装进脚本组件，留下尽可能少的页面相关参数。接下来
我们将介绍如何用XML Scriptlet来实现这个任务。
     运行本文代码您需要安装最新版本的Scriptlet SDK，该SDK随同IE4.01 Service
Pack 2 或IE5.0一起发布。它们都可以从http://windowsupdate.microsoft.com下载。

     本文附带的代码包括ASP和SCT两类文件。其中SCT文件实现了两个将在下面具体讨
论的脚本组件。在安装完Scriptlet SDK后，需要注册这些脚本组件。注册方法是在Win
dows资源管理器中右击该文件，选择“注册”。ASP文件是测试页面。示例代码假定系统
中存在一个名为Contacts的DSN。
     ㈡ 提取记录集
     首先我们来分析ServerGetNames.sct。该Scriptlet仅显露一个名为GetRecords()
的方法。该方法要求两个参数：连接字符串conn和查询命令文本cmdText，它的返回值是
一个ADO记录集，它的progID是“Server.GetContacts”。代码清单如下：
  < ?XML version="1.0" encoding="GB2312" ?>
  < scriptlet>
  < registration
   description="访问联系人数据库"
   progid="Server.GetContacts"
   version="1.00"
   classid="{8D9CC880-D79F-11d2-B7C8-00C0DFE39736}">
  < /registration>
  < public>
   < method name="GetRecords">
   < parameter name="conn" />
   < parameter name="cmdText" />
   < /method>
  < /public>
  < implements type="ASP"/>
  < script language="VBScript">

  < ![CDATA[
  Function GetRecords( conn, cmdText )
   Dim rs
   Set rs = CreateObject("ADODB.Recordset")
   rs.CursorType = 3 'adOpenStatic
   rs.Open cmdText, conn
   Set GetRecords = rs
  End Function
  ]]>
  < /script>
  < /scriptlet>
     所有脚本函数的实现封装在一个CDATA块中，其目的是保证代码遵从XML 1.0规范。
和所有普通COM自动化对象一样，该Scriptlet也提供了一个progID和CLSID。在GetReco
rds()中，程序通过ADO访问数据源，从而使得它可以访问任何OLE DB兼容数据源。由此
，发送给GetRecords()的命令字符串可以是除了存储过程名字或SQL查询之外的其他命令
。在注册这个Scriptlet之后，就可以编写使用这个Scriptlet的ASP页面了，请参见下载
包中的GetNames.asp：
  < %
   Set oData = CreateObject("Server.GetContacts")
   Set rs = oData.GetRecords("Contacts", "select * from Contacts")
  %>
     可以看到，GetNames.asp中的结果记录集提取代码比通常用ADO获取记录集的代码
更为简洁。然而，我们仍旧必须在ASP中格式化HTML表格（这部分代码这里没有显示），
因此它还不是最好的方法。
     ㈢ 自动生成表格
     进一步考虑上述Scriptlet，我们希望它能够自动格式化最终输出的表格，就象一
个二进制设计时ActiveX控件一样。换句话说，我们希望Scriptlet能够直接返回一个字
符串，这个字符串包含了一个经适当格式化的HTML表格。如果有了这样一个Scriptlet，
则前面的ASP代码将成为：
  < %
   Set oData = CreateObject("Server.GetContacts")
   Set rs = oData.GetRecords("Contacts", "select * from Contacts")
   Set oPageMaker = CreateObject("Server.RSFormat")
   oPageMaker.SetRS (rs)
   strText = oPageMaker.GetText()
   Response.Write strText
  %>
     这里的strText变量包含了一个代表所有结果记录的HTML表格字符串。为便于格式
化表格内容及其外观，我们还为新的XML Scriptlet增加了几个属性和方法。完整代码请
参见下载包中的ServerGetNames1.sct。下表是其接口说明：
方法 说　　明
AddColumn (headerText, columnName, className) 在结果表格中加入一个列。必须
在参数中指定列标题文本、列名字及其CSS样式。
SetRS(rs) 指定要求格式化的记录集。
GetText() 返回可直接显示的结果字符串。
属性 说　　明
TableStyle 设置整个表格的CSS样式。
HeaderStyle 设置表格标题的CSS样式。
NumberOfCols 设置表格总列数。必须在加入表格列之前调用该函数。
Title 设置在表格前显示的一个提示字符串。
     显示结果记录集时只需设置总列数，依次加入各列即可。下面是新的GetText()函
数的代码（参见ServerGetNames1.sct）：
  Function GetText()
   Dim strText

   ' 设置标题
   strText = m_Title + "(共"+ CStr(m_RS.RecordCount) +"人)< br>< br>" + vbC
rLf
   ' 加入< TABLE>开始标记
   strText = strText + "< TABLE class=" + m_TableStyle + ">" + vbCrLf
   strText = strText + "< TR>" + vbCrLf
   for i=1 to m_colCount
   Dim strName
   strText = strText + " < TH class=" + m_HeaderStyle + ">"
   strText = strText + m_DispCols(i) + "< /TH>" + vbCrLf
   next
   strText = strText + "< /TR>" + vbCrLf
   ' 遍历记录集，添加表格行
   while Not m_RS.EOF
   strRowText = ""
   for i=1 to m_colCount
   Dim strClass
   if VarType(m_ClssCols(i)) < > vbEmpty Then
   strClass = "class=" + m_ClssCols(i)
   end if
   if VarType(m_RS(m_NameCols(i))) = vbNull Then
   strColumn = " "
   else
   strColumn = m_RS(m_NameCols(i))
   end if
   ' 格式化表格行
   strRowText = strRowText + "< TD " + strClass + ">" + vbCrLf
   strRowText = strRowText + strColumn + vbCrLf
   strRowText = strRowText + "< /TD>" + vbCrLf
   next
   ' 将表格行字符串加入strText
   strText = strText + "< TR>" + strRowText + "< /TR>"
   ' 下一记录
   m_RS.MoveNext
   wend
   GetText = strText
  End Function
     ㈣ 最终的ASP页面
     调用上述第二个Scriptlet的ASP页面为Getnames1.asp。该页面包含了一些CSS定义
，获取和显示记录集的代码非常简单，如下所示：
   Set oFormatter = CreateObject("Server.RSFormat")
   oFormatter.SetRS (rs)
   oFormatter.Title = "联系人列表"
   oFormatter.TableStyle = "globTab"
   oFormatter.HeaderStyle = "header"
   oFormatter.NumberOfCols = 4
   oFormatter.AddColumn "姓名", "姓名", ""
   oFormatter.AddColumn "公司", "公司", "company"
   oFormatter.AddColumn "电子邮件", "电子邮件", ""
   strText = oFormatter.GetText()
     可见，这个Scriptlet的应用过程和其他二进制COM对象是一样的，但实际上它们却
是不同的：Scriptlet完全用XML和脚本写成！
     请从这里下载本文的完整代码，11K。

--

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.118.81.11]


xml dom user guide (BM: inannan)

编号 | 类别 | 标题 | 编辑日期
1 | 文件 | Creating a DOMDocument Object inannan | 2001.05.28
2 | 文件 | Loading and Saving XML inannan | 2001.05.28
3 | 文件 | Getting and Setting Parse Flags inannan | 2001.05.28
4 | 文件 | Gathering Document Information inannan | 2001.05.28
5 | 文件 | Accessing the Document Tree inannan | 2001.05.28
6 | 文件 | Creating New Nodes inannan | 2001.05.28
7 | 文件 | Gathering Information About a Node inannan | 2001.05.28
8 | 文件 | Getting and Setting Data Within a Node inannan | 2001.05.28
9 | 文件 | Navigating the Tree inannan | 2001.05.28
10 | 文件 | Manipulating the Children of a Node inannan | 2001.05.28
11 | 文件 | Transforming a Node inannan | 2001.05.28
12 | 文件 | Gathering Information About the Node L inannan | 2001.05.28
13 | 文件 | Navigating the Node List inannan | 2001.05.28
14 | 文件 | Navigating the Named Node Map inannan | 2001.05.28
15 | 文件 | Manipulating a Named Node Map inannan | 2001.05.28
16 | 文件 | Using Collections inannan | 2001.05.28
返回上一页 回到上一级目录


Creating a DOMDocument Object

 发信人: sailor (水手☆梦和理想☆快乐工作), 信区: XML
标 题: Creating a DOMDocument Object
发信站: BBS 水木清华站 (Tue Aug 8 21:37:46 2000)

Creating a DOMDocument Object
Using the XML Document Object Model begins when you create a DOMDocument
object. Then you can begin to load, parse, navigate, and manipulate XML
files.

To create a new, empty DOMDocument object

Using JScript

var mydoc = new ActiveXObject("Microsoft.XMLDOMDocument");
Using VBScript

Dim xmldoc
Set xmldoc = CreateObject("Microsoft.XMLDOMDocument")
Using Visual Basic

Dim xmldoc = new DOMDocument

--
我所深信的智慧是一种灵气，一种机敏但不狡猾的为人处世，
上帝也许是公平的，也许具有这样一种智慧的女孩她外表未必卓然出众，
但她所流露出的聪慧的气质会令她的外表十分动人
所以，智慧-->美丽

※ 来源:·BBS 水木清华站 smth.org·[FROM: 211.99.237.3]
返回上一页 回到目录 回到页首 下一篇


Loading and Saving XML

 发信人: sailor (水手☆梦和理想☆快乐工作), 信区: XML
标 题: Loading and Saving XML
发信站: BBS 水木清华站 (Tue Aug 8 21:38:49 2000)

Loading and Saving XML
Use the load method to load an XML file by path name, by URL, or as an
IIS Request object.

The following example loads an XML file by URL:

XMLDoc.load("http://xmlfiles/reports.xml")
The document object, XMLDoc, now contains a tree consisting of the
parsed contents of reports.xml.

You can also load an XML file as a string using the loadXML method:

XMLDoc.loadXML("<customer><first_name>Joe</first_name>
<last_name>Smith</last_name></customer>")
The loading and parsing of an XML file occurs asynchronously by default.
You can choose to load the XML file synchronously by setting the
async property to false. To abort an asynchronous download, call the
abort method on the document object.

You can assign a new document to a document object by assigning the
document a new root element using the documentElement property:

XMLDoc.documentElement = XMLNode
It is important to remember that assigning the document object a new
document element does not change the other children of the document. For
instance, the doctype element will not change.

To save a parsed XML document to a file or to another object, use the
save method. The save method takes either a file name as a string, an
Active Server Pages (ASP) Response object, an DOMDocument object, or any
custom object that supports persistence. The following example is
part of an ASP file that saves the XML document to a file:

<%
dim xmldoc
set xmldoc = Server.CreateObject("Microsoft.XMLDOM")
xmldoc.async = false
xmldoc.load(Request)
xmldoc.save(Server.MapPath("sample.xml"))
%>

--
我所深信的智慧是一种灵气，一种机敏但不狡猾的为人处世，
上帝也许是公平的，也许具有这样一种智慧的女孩她外表未必卓然出众，
但她所流露出的聪慧的气质会令她的外表十分动人
所以，智慧-->美丽

※ 来源:·BBS 水木清华站 smth.org·[FROM: 211.99.237.3]


Getting and Setting Parse Flags

 发信人: sailor (水手☆梦和理想☆快乐工作), 信区: XML
标 题: Getting and Setting Parse Flags
发信站: BBS 水木清华站 (Tue Aug 8 21:39:34 2000)

Getting and Setting Parse Flags
The DOMDocument object exposes four properties that allow the user to
change parsing behavior at run time: async, validateOnParse,
resolveExternals, and preserveWhiteSpace. Each of these properties takes
and returns a Boolean value. The default value for async,
validateOnParse, and resolveExternals is true; the default value for
preserveWhiteSpace is false.

The following sample code loads and parses an XML file synchronously;
however, the XML document is not validated as it is parsed:

XMLDoc.async = false
XMLDoc.validateOnParse = false
XMLDoc.load("sample.xml")
Note Although not explicitly indicated in this code, by default the
parser will resolve externals and will not honor the value of the xml:
space attribute.

Asynchronous parsing allows your application to do other things (such as
display a progress bar) while the file is being parsed. After loading
the XML document but before working with it, be sure to check the
readyState property to ensure that the document has been fully loaded
and that the DOM is available.

--
我所深信的智慧是一种灵气，一种机敏但不狡猾的为人处世，
上帝也许是公平的，也许具有这样一种智慧的女孩她外表未必卓然出众，
但她所流露出的聪慧的气质会令她的外表十分动人
所以，智慧-->美丽

※ 来源:·BBS 水木清华站 smth.org·[FROM: 211.99.237.3]


Gathering Document Information

 发信人: sailor (水手☆梦和理想☆快乐工作), 信区: XML
标 题: Gathering Document Information
发信站: BBS 水木清华站 (Tue Aug 8 21:40:47 2000)

Gathering Document Information
The following properties allow you to retrieve information about the
document: doctype, implementation, parseError, readyState, and url.
You can access these properties to retrieve the Document Type
Declaration (DTD) accompanying the document; the implementation for
the document; the last error to occur while parsing; information about
the state of the XML document; and the URL, if any, of the XML file
being loaded and parsed. For more information about error reporting, see
XMLDOMParseError.

The following JScript/HTML example demonstrates the sequence of ready
states when asynchronously loading a document:

<script>
var xmldoc;
function Load()
{
xmldoc = new ActiveXObject("Microsoft.XMLDOM");
xmldoc.onreadystatechange = CheckState;
xmldoc.load(URL.value);
}
function CheckState()
{
var state = xmldoc.readyState;
RESULTS.innerHTML += "readyState = " + state + "<BR>"
if (state == 4)
{
var err = xmldoc.parseError;
if (err.errorCode != 0)
RESULTS.innerHTML += err.reason + "<BR>"
else
RESULTS.innerHTML +="success" + "<BR>"
}
}
</script>
URL: <input type=text size=60 id=URL>
<input type=button value=LOAD onclick="jscript:Load()">
<div id=RESULTS style="color:red; font-weight:bold;"></div>

--
我所深信的智慧是一种灵气，一种机敏但不狡猾的为人处世，
上帝也许是公平的，也许具有这样一种智慧的女孩她外表未必卓然出众，
但她所流露出的聪慧的气质会令她的外表十分动人
所以，智慧-->美丽

※ 来源:·BBS 水木清华站 smth.org·[FROM: 211.99.237.3]


Accessing the Document Tree

 发信人: sailor (水手☆梦和理想☆快乐工作), 信区: XML
标 题: Accessing the Document Tree
发信站: BBS 水木清华站 (Tue Aug 8 21:41:40 2000)

Accessing the Document Tree
You can access the tree for an XML document either by beginning at the
root element and walking down the tree or by querying for a specific
node or nodes. You can navigate to the root element of the document by
using the documentElement property. This property returns the root
element as an XMLDOMNode object.

Consider the following XML file (Books.xml):

<COLLECTION>
<BOOK>
<TITLE>Cosmos</TITLE>
<AUTHOR>Carl Sagan</AUTHOR>
<PUBLISHER>Ballantine Books</PUBLISHER>
</BOOK>
<BOOK>
<TITLE>Catwings</TITLE>
<AUTHOR>Ursula K. Le Guin</AUTHOR>
<PUBLISHER>Scholastic</PUBLISHER>
</BOOK>
<BOOK>
<TITLE>Home Town</TITLE>
<AUTHOR>Tracy Kidder</AUTHOR>
<PUBLISHER>Random House</PUBLISHER>
</BOOK>
</COLLECTION>
You can walk the tree this way using VBScript:

Dim root
Dim xmlDoc
Dim child

Set xmlDoc = CreateObject("Microsoft.XMLDOM")
xmlDoc.async = False
xmlDoc.load("c:\books.xml")
'Set root to the XML document's root element, COLLECTION:
Set root = xmlDoc.documentElement
'Walk from the root to each of its child nodes:
For Each child In root.childNodes
MsgBox child.text
Next
When this example runs, it displays the text of each of the root's child
nodes (BOOK).

You can navigate to a specific node or nodes deep within the tree
using either the nodeFromID method or getElementsByTagName method. The
nodeFromID method takes a unique ID, defined within an XML Schema or
DTD, and returns the node corresponding to that specific ID (see the
Extreme XML column Cross-Reference Your XML Data for more information on
how to use IDs and IDREFs). The getElementsByTagName method takes a
string representing a specific tag name and returns all element nodes
with this tag name.

Using the file Books.xml, you can retrieve all nodes containing the
AUTHOR tag with the following code:

Dim ElemList
Dim xmlDoc
Set xmlDoc = CreateObject("Microsoft.XMLDOM")
xmlDoc.async = False
xmlDoc.load("c:\xml\books.xml")
Set ElemList = xmlDoc.getElementsByTagName("AUTHOR")
For i=0 To (ElemList.length -1)
MsgBox ElemList.item(i).xml
Next
The XMLDOMNode object's selectNodes method offers a more flexible way of
accessing nodes

--
我所深信的智慧是一种灵气，一种机敏但不狡猾的为人处世，
上帝也许是公平的，也许具有这样一种智慧的女孩她外表未必卓然出众，
但她所流露出的聪慧的气质会令她的外表十分动人
所以，智慧-->美丽

※ 来源:·BBS 水木清华站 smth.org·[FROM: 211.99.237.3]


Creating New Nodes

 发信人: sailor (水手☆梦和理想☆快乐工作), 信区: XML
标 题: Creating New Nodes
发信站: BBS 水木清华站 (Tue Aug 8 21:44:17 2000)

Creating New Nodes
The DOMDocument object exposes the createNode method, which allows you
to create a qualified node by supplying the node type, name, and
namespaceURI of the new node.

The DOMDocument object also exposes the following eight methods, which
allow you to create specific DOM nodes. (These methods are defined in
the W3C DOM recommendation.)

createAttribute method
createCDATASection method
createComment method
createDocumentFragment method
createElement method
createEntityReference method
createProcessingInstruction method
createTextNode method
The methods that create specific DOM nodes return specific objects and
interfaces, which are outlined in the XML DOM Reference. These
specific objects and interfaces expose properties and methods associated
with that node. For example, the following sample code assigns an
XMLDOMElement object with the name of "item" to the variable "xmlElem":

xmlElem = xmlDoc.createElement("item")
You can then add an attribute to that element by calling the
setAttribute method and passing that method a string containing the
attribute name and a string containing the attribute value:

xmlElem.setAttribute("id","bar")
Using Books.xml again as an example (see Accessing the Document Tree),
the following code creates a new element, PAGES, and uses the
appendChild method to add it to the second child node of the root,
COLLECTION. It then sets the text property for the new element to
"400":

Dim xmlDoc
Dim root
Dim newElem
Set xmlDoc = CreateObject("Microsoft.XMLDOM")
xmlDoc.async = False
xmlDoc.load("c:\books.xml")
Set root = xmlDoc.documentElement
Set newElem = xmlDoc.createElement("PAGES")
root.childNodes.item(1).appendChild newElem
root.childNodes.item(1).lastChild.text = "400"
MsgBox root.childNodes.item(1).xml

--
我所深信的智慧是一种灵气，一种机敏但不狡猾的为人处世，
上帝也许是公平的，也许具有这样一种智慧的女孩她外表未必卓然出众，
但她所流露出的聪慧的气质会令她的外表十分动人
所以，智慧-->美丽

※ 来源:·BBS 水木清华站 smth.org·[FROM: 211.99.237.3]


Gathering Information About a Node

 发信人: sailor (水手☆梦和理想☆快乐工作), 信区: XML
标 题: Gathering Information About a Node
发信站: BBS 水木清华站 (Tue Aug 8 21:45:32 2000)

Gathering Information About a Node
The following properties allow you to get information about the node:

hasChildNodes
namespaceURI
nodeName
nodeType
nodeTypeString
parsed
specified
xml
You can access these properties to get information concerning the type
of the node, the name of the node, whether the node has any children,
whether the node is explicitly specified in the XML file or implied
within the Document Type Definition (DTD) or XML Schema, the namespace
to which the node belongs, whether the node has been parsed, and the
string representation of the node.

The following sample code tests to see if the node is of type "element."
If the node is of type "element," the string representation of the node
is loaded into a document object through the loadXML method.

if (xmlNode.nodeTypeString == "element")
XMLDoc.loadXML(xmlNode.xml)

--
我所深信的智慧是一种灵气，一种机敏但不狡猾的为人处世，
上帝也许是公平的，也许具有这样一种智慧的女孩她外表未必卓然出众，
但她所流露出的聪慧的气质会令她的外表十分动人
所以，智慧-->美丽

※ 来源:·BBS 水木清华站 smth.org·[FROM: 211.99.237.3]


Getting and Setting Data Within a Node

 发信人: sailor (水手☆梦和理想☆快乐工作), 信区: XML
标 题: Getting and Setting Data Within a Node
发信站: BBS 水木清华站 (Tue Aug 8 21:46:38 2000)

Getting and Setting Data Within a Node
The data marked up within the XML file is exposed in the DOM as node
values. These values might be the value of an attribute, for instance,
or the text within an XML element. There are three ways to access the
value of a node. The nodeValue property gives you access to values of
certain nodes. The nodes that contain a value that can be accessed
through the nodeValue property are attributes, text nodes, comments,
processing instructions, and CDATA sections. The following code sets the
value of an attribute to "hello world":

newAttNode = XMLDoc.createAttribute("newAtt")
newAttNode.nodeValue = "hello world"
There are three ways to access text within an element node:

Navigate down to the element's children (the text nodes within) and call
nodeValue on them.
Call the text property. This property returns the text within the
element. The text within an element can also be changed using the text
property. The following sample code tests to see if the text within
the element elem1 is equal to "hello world." If it is, it assigns that
element the text "hi! world."
if (elem1.text == "hello world")
elem1.text = "hi! world"
Access the text through the nodeTypedValue property. This property is
part of the data type support built into the Internet Explorer 5 XML
parser and returns the typed value of the node. This property is
strictly for typed elements. In conjunction with this property is the
dataType property, which returns the data type of the element. The
nodeTypedValue and datatype properties can both be set. However, the
parser will return an error if the new nodeTypedValue is of the wrong
data type or if the new data type does not match the nodeTypedValue. For
more information about data type support, see the XML Data Types
Reference.

--
我所深信的智慧是一种灵气，一种机敏但不狡猾的为人处世，
上帝也许是公平的，也许具有这样一种智慧的女孩她外表未必卓然出众，
但她所流露出的聪慧的气质会令她的外表十分动人
所以，智慧-->美丽

※ 来源:·BBS 水木清华站 smth.org·[FROM: 211.99.237.3]


Navigating the Tree

 发信人: sailor (水手☆梦和理想☆快乐工作), 信区: XML
标 题: Navigating the Tree
发信站: BBS 水木清华站 (Tue Aug 8 21:48:39 2000)

Navigating the Tree
From the XMLDOMNode object, you can navigate directly to its parent node
(parentNode), children (childNodes, firstChild, lastChild), siblings
(previousSibling, nextSibling), or the document object to which the node
belongs (ownerDocument). If the node is of type element, attribute,
or entityReference, you can call the definition property to navigate
to the schema definition of the node. In addition, if the node is of
type element, processingInstruction, documentType, entity, or notation,
you can navigate to the attributes on the node using the attributes
property. The following code tests to see if the elem1 element has any
element children. If so, it navigates from elem1 to that element's first
child. The text of that first child is then changed to "I'm the first
child of elem1."

if (elem1.hasChildNodes == true && elem1.firstChild.nodeTypeString ==
"element")
elem1.firstChild.text = "I'm the first child of elem1"
It is also possible to navigate to other nodes in the tree using
selectNodes and selectSingleNode. These methods take an XSL Pattern as
an argument and return the node or nodes that match that query. For more
information about XSL Patterns, see XSL Patterns Reference.

--
我所深信的智慧是一种灵气，一种机敏但不狡猾的为人处世，
上帝也许是公平的，也许具有这样一种智慧的女孩她外表未必卓然出众，
但她所流露出的聪慧的气质会令她的外表十分动人
所以，智慧-->美丽

※ 来源:·BBS 水木清华站 smth.org·[FROM: 211.99.237.3]


Manipulating the Children of a Node

 发信人: sailor (水手☆梦和理想☆快乐工作), 信区: XML
标 题: Manipulating the Children of a Node
发信站: BBS 水木清华站 (Tue Aug 8 21:50:15 2000)

Manipulating the Children of a Node
The XMLDOMNode object exposes four methods that allow you to
manipulate the children of a node: appendChild, replaceChild,
removeChild, and insertBefore. Each of these methods takes an XML node
object as an argument. The following code takes a new element that is
created using createElement and adds that as the last child of elem1:

newChild = XMLDoc.createElement("last_child")
elem1.appendChild(newChild)
The appendChild method always adds the node to the end of the list of
children. To insert the node elsewhere in the child node list, use the
insertBefore method. This method takes two parameters: the node to be
inserted and the node before which the new child is to be inserted.

The following VBScript example loads Books.xml (see Accessing the
Document Tree) and creates a new element, PAGES. Then, using a reference
to the first child of a node as the reference point (refEleminserts the new element with the insertBefore method:

Dim xmlDoc
Dim root
Dim newElem
Dim refElem
Set xmlDoc = CreateObject("Microsoft.XMLDOM")
xmlDoc.async = False
xmlDoc.load("c:\xmlinact\books.xml")
Set root = xmlDoc.documentElement
Set newElem = xmlDoc.createElement("PAGES")
Set refElem = root.childNodes.item(1).firstChild
root.childNodes.item(1).insertBefore newElem, refElem
MsgBox root.childNodes.item(1).xml
The next example uses the removeChild method to remove a child node:

Dim xmlDoc
Dim root
Dim oldChild
Set xmlDoc = CreateObject("Microsoft.XMLDOM")
xmlDoc.async = False
xmlDoc.load("c:\books.xml")
Set root = xmlDoc.documentElement
Set oldChild = root.childNodes.item(1).firstChild
root.childNodes.item(1).removeChild oldChild
MsgBox root.childNodes.item(1).xml

--
我所深信的智慧是一种灵气，一种机敏但不狡猾的为人处世，
上帝也许是公平的，也许具有这样一种智慧的女孩她外表未必卓然出众，
但她所流露出的聪慧的气质会令她的外表十分动人
所以，智慧-->美丽

※ 来源:·BBS 水木清华站 smth.org·[FROM: 211.99.237.3]


Transforming a Node

 发信人: sailor (水手☆梦和理想☆快乐工作), 信区: XML
标 题: Transforming a Node
发信站: BBS 水木清华站 (Tue Aug 8 21:52:02 2000)

The transformNode and transformNodeToObject methods can be used to
transform an XML node into a string or object using XSL. For more
information about transforming nodes using XSL, see Using the XSL
Processor.

--
我所深信的智慧是一种灵气，一种机敏但不狡猾的为人处世，
上帝也许是公平的，也许具有这样一种智慧的女孩她外表未必卓然出众，
但她所流露出的聪慧的气质会令她的外表十分动人
所以，智慧-->美丽

※ 来源:·BBS 水木清华站 smth.org·[FROM: 211.99.237.3]


Gathering Information About the Node List

 发信人: sailor (水手☆梦和理想☆快乐工作), 信区: XML
标 题: Gathering Information About the Node List
发信站: BBS 水木清华站 (Tue Aug 8 21:53:17 2000)

Gathering Information About the Node List
You can get the length of the node list from the length property.
Among other things, the length can be used for iterating through the
list of children. For example, the following code loops through the
children of elem1, searching for a child element with the text value
of "hello world." If such a child exists, the index of that child is
assigned to the variable "helloWorldIndex."

for (i = 0;i < elem1.childNodes.length;i++){
if (elem1.childNodes.item(i).text == "hello world")
helloWorldIndex = i;
}

--
我所深信的智慧是一种灵气，一种机敏但不狡猾的为人处世，
上帝也许是公平的，也许具有这样一种智慧的女孩她外表未必卓然出众，
但她所流露出的聪慧的气质会令她的外表十分动人
所以，智慧-->美丽

※ 来源:·BBS 水木清华站 smth.org·[FROM: 211.99.237.3]


Navigating the Node List

 发信人: sailor (水手☆梦和理想☆快乐工作), 信区: XML
标 题: Navigating the Node List
发信站: BBS 水木清华站 (Tue Aug 8 21:54:13 2000)

method. The item method takes a number corresponding to a node's
position within the node list. To get the first node in the node list,
for instance, one would call the following method: item(0). It is also
possible to navigate through the node list using the nextNode method.
The nextNode method returns the next node in the node list.

The following code performs the same task as the previous code:

currentNode = elem1.childNodes.nextNode;
while (currentNode != null) {
if (currentNode.text == "hello world")
helloWorldNode = currentNode;
currentNode = elem1.childNodes.nextNode;
}
Notice that the currentNode is set using the node returned by elem1.
childNodes.nextNode. The initial position of the node list is defined to
be before the first node. Therefore, the first time nextNode is
called on the node list, the first node is returned. The code tests
for currentNode != null. If the current node is the last node in the
list or the node list has no members, nextNode returns null.

--
我所深信的智慧是一种灵气，一种机敏但不狡猾的为人处世，
上帝也许是公平的，也许具有这样一种智慧的女孩她外表未必卓然出众，
但她所流露出的聪慧的气质会令她的外表十分动人
所以，智慧-->美丽

※ 来源:·BBS 水木清华站 smth.org·[FROM: 211.99.237.3]


Navigating the Named Node Map

 发信人: sailor (水手☆梦和理想☆快乐工作), 信区: XML
标 题: Navigating the Named Node Map
发信站: BBS 水木清华站 (Tue Aug 8 21:55:50 2000)

Navigating the Named Node Map
As with a node list, you can access members of the named node map by
index using the item method. However, you can also access the members of
a named node map name by using getNamedItem and getQualifiedItem. The
getNamedItem method takes the name of the desired node as a parameter;
the getQualifiedItem method takes the name and namespaceURI of the
desired node. Each method returns an XMLDOMNode object. The following
code retrieves the value of the ID attribute on the elem1 element and
assigns that value to the variable "idValue":

idValue = elem1.attributes.getNamedItem("ID").nodeValue
The XMLDOMNamedNodeMap object, like the node list object, exposes the
nextNode property.

--
我所深信的智慧是一种灵气，一种机敏但不狡猾的为人处世，
上帝也许是公平的，也许具有这样一种智慧的女孩她外表未必卓然出众，
但她所流露出的聪慧的气质会令她的外表十分动人
所以，智慧-->美丽

※ 来源:·BBS 水木清华站 smth.org·[FROM: 211.99.237.3]


Manipulating a Named Node Map

 发信人: sailor (水手☆梦和理想☆快乐工作), 信区: XML
标 题: Manipulating a Named Node Map
发信站: BBS 水木清华站 (Tue Aug 8 21:56:43 2000)

Manipulating a Named Node Map
You can use one of three methods to manipulate named node maps:
setNamedItem, removeNamedItem, or removeQualifiedItem. The
setNamedItem method takes an XML node object as a parameter, adding that
node to the named node map. If an attribute already exists with the
same name as that specified by the nodeName of the node added, the old
attribute is replaced. The following code creates a new attribute node
with the name "ID" and adds it to the attributes of elem1:

idAtt = XMLDoc.createAttribute("ID")
elem1.setNamedItem(idAtt)
The removeNamedItem method takes a node name as a parameter, removing
the node with that name. The removeQualifiedItem method takes a node
name and namespaceURI as its parameters, removing the corresponding
attribute.

--
我所深信的智慧是一种灵气，一种机敏但不狡猾的为人处世，
上帝也许是公平的，也许具有这样一种智慧的女孩她外表未必卓然出众，
但她所流露出的聪慧的气质会令她的外表十分动人
所以，智慧-->美丽

※ 来源:·BBS 水木清华站 smth.org·[FROM: 211.99.237.3]


Using Collections

 发信人: sailor (水手☆梦和理想☆快乐工作), 信区: XML
标 题: Using Collections
发信站: BBS 水木清华站 (Tue Aug 8 21:57:52 2000)

Using Collections
In the XML DOM, collections are used to store lists of nodes or
elements. The XMLDOMNodeList object is a collection; it is returned by
childNodes, selectNodes, and getElementsByTagName. Unlike an array, a
collection is dynamic, meaning that the addition or removal of nodes,
and changes within nodes, are immediately reflected in the collection.

Accessing Collection Members
Use the item method to access individual nodes within a collection.
For example, the following code returns the first member of the
collection:

objNodeList.item(0)
As a shortcut, you can access a node by simply appending the appropriate
index number in parentheses to a collection reference, like so:

objNodeList(0)
You can also use square brackets to enclose the index number (except
in VBScript):

objNodeList[0]
Iterating a Collection
In Visual Basic, you can iterate through an XML DOM collection with a
For Each…Next statement, like so:

Dim Item
For Each Item in objNodeList
MsgBox Item.text
Next
Or you can use a For…Next statement:

Dim i
Dim members
members = objNodeList.length
For i = 0 To (members-1)
MsgBox objNodeList(i).xml
Next
The length property returns the number of members in the collection.

Optimize your script by setting the node list to a variable and using
that variable in a For loop. This way, the script engine does not have
to examine the collection during each iteration.

You can iterate collections in JScript this way:

var members = objNodeList.length;
for (var i = 0; i < members; i++)
{
alert (objNodeList(i).text);
}

--
我所深信的智慧是一种灵气，一种机敏但不狡猾的为人处世，
上帝也许是公平的，也许具有这样一种智慧的女孩她外表未必卓然出众，
但她所流露出的聪慧的气质会令她的外表十分动人
所以，智慧-->美丽

※ 来源:·BBS 水木清华站 smth.org·[FROM: 211.99.237.3]
上一篇 返回上一页 回到目录 回到页首


HTML如何向XML迁移

 发信人: handwalker (生产队长), 信区: XML
标 题: HTML如何向XML迁移
发信站: BBS 水木清华站 (Fri Oct 20 14:51:31 2000)

：
    当Internet世界正迅速地把注意力聚焦到XML及其相关技术上时，一个问题产生了：
以前用HTML构建的网站将怎么办？对于那些刚刚开始进行信息化建设的企业来说，理所
当然地可以采用XML技术来设计网页；但对于那些HTML文件已经非常丰富的传统企业来说
，要重新构建网站，不仅耗资巨大，而且拖的时间会很长。那么应该如何处理遗留下来
的HTML资料呢？
    目前已经出现了一种新的技术——可扩展超文本标记语言（XHTML），它被认为是传
统的HTML向XML迁移的理想工具。
    ■HTML要向XML迁移
    HTML是一种简单的标记语言。HTML包含许多专用的标记（tags），而这些标记并不
被所有的浏览器所支持。一些用来得到视觉效果的元素，如〈font〉标记，仅仅使得HT
ML文档体积变大。对于显示屏幕很小的PDA和手机等上网新设备， HTML也不能给予很好
的支持。可以说，HTML不适合继续作为标准的页面和信息载体语言。
    怎样才能让以前积累下来的HTML文档在新的环境下继续发挥作用呢？向XML的过渡是
解决之道。XML文档包含了清晰的文档结构信息，可以为各种需要灵活地输出所需要的格
式。XML不是一个简单的类似HTML和WML（无线标记语言）那样的预定义标记语言，而是
一个让用户根据不同的数据和文档内容而制定标记的语言标准。用户可以为自己的文档
建立比HTML更加准确而适当的标记。
    可扩展的样式表语言（XSL）提供了一种从存储的XML文件中输出各种所需的格式的
途径。许多基于XSL的产品都能通过选用特定的样式表来从XML文件中输出能在各种浏览
器中正确显示的HTML文档，而且同一个XML文档还可以使用其它的样式表，创建出能在无
线设备中使用的WML格式的文档。设计者所要做的仅仅是创建这种格式文档的样式表，而
对于文档的内容不需进行任何的修改，即“身体”是相同的，但“外套”可以自由地进
行选择。
    ■HTML如何改装成XHTML
    传统HTML要向XML迁移，最麻烦的就是不容易把HTML文档的内容和表现形式进行分离
。那么怎样才能对HTML文档进行改装呢？一个可选择的方案是采用XHTML。XHTML结合了
HTML和XML的优点，由于它和HTML很相似，所以可以很容易地把以前的HTML进行简化和改
装，形成新的XHTML文档，实现HTML向XHTML的过渡，这要比直接重新构建XML文档简单得
多。
    首先，XHTML对大小写标记敏感。在XHTML中定义元素的属性必须使用小写，那些曾
经在HTML中用来增强文档可读性的有些技巧都不能用了。例如以前在HTML中定义元素属
性时使用大写的字符，而具体的数值使用小写，这样可读性强一些，但是这种技巧在XH
TML中就不能使用了。
    其次，XHTML严格地要求元素必须以标记开始和标记结束。以前经常能在HTML中使用
的先打开标记，然后作用于其它内容的手法，现在也必须加以修改。在XHTML中，所有非
空的元素都要求被关闭。以前经常被开发者使用的一个技巧就是在两个段落中使用〈p〉
这个标记，而不是严格地按照在每一段的开始使用〈p〉而在结尾使用〈/p〉。另外，所
有的XHTML属性都需要使用引号来表示，即〈table border = 2〉这样的语句需要改写成
〈table border = “2”〉。
    最后要指出的一点是，〈head〉 和〈body〉这样的元素在XHTML中都是必须的，而
且〈title〉这个元素必须作为第一个元素放在〈head〉段中。
    通过对HTML文档进行了这些改变，原来的HTML文件不仅能在HTML的浏览器上得到正
确的显示，而且能用支持XML的软件来进行处理。
    ■HTML转换工具
    如果你的站点仅仅有很少的文档需要进行转换，即使采用手工的方法也能处理；但
如果有几年累计下来的HTML文档需要转换，那么就需要寻找一个工具来帮助进行。在这
方面有许多商业和免费的工具软件可以使用，它们既可以帮助进行转换而且可以直接编
辑形成新型的XHTML格式的文件。
    HTML Tidy 是一个很基本但很有用的工具，可以运行在多种平台上。HTML Tidy可以
用来清除HTML文件的标记错误（相对XHTML标准而言），并能重新格式化HTML文件，使之
有更好的可读性。HTML Tidy已成为一个能把HTML向XHTML转换的多功能工具。
    HTML-Kit是一个免费的程序，能在许多平台上运行。它不仅能帮助进行HTML的编辑
、格式化输出、合法性检查、预览和发布，而且还能在图形界面上进行HTML向XHTML的转
换。在其用户界面上，有一个窗口显示源文件，另一个窗口显示转换后的标记语言结果
，还有一个窗口显示出现的错误以及对XHTML进行改进的建议。
    ■直接向XML标准前进
    HTML经过改装后形成新的XHTML文档将不再有浏览和显示的麻烦。但是如果希望其内
容能被运用到各个领域，那么可以考虑直接建立XML文档。这就需要在现存的HTML中把内
容抽取出来，使得内容和表现形式的标记得到分离。
    XspLit是由Percussion Software公司推出的新工具。XspLit让Web开发者能把HTML
文档转换成相应的XSL样式表。XspLit能创建一个包含格式定义的XML的DTD（文件类型定
义）文件，还能使用静态的内容来创建一个XML样本文档。
--
我在这里转悠了很久
孤独的依然孤独
冷漠的依旧冷漠
这个世界有很多人
却没有人陪我回家

※ 来源:·BBS 水木清华站 smth.org·[FROM: 210.75.223.5]


IDL vs XML

 发信人: Nullgate (空门·民工·VIV LA GNU·失业中), 信区: XML
标 题: IDL vs XML
发信站: BBS 水木清华站 (Tue Oct 31 21:39:23 2000)

M$的确有号召力，或者国内很会跟M$的潮流。M$挥动大旗，于是
XML一转眼就热起来了，市面上到处都是XML的书。人们奔走相告，数据
与程序分离了，Internet时代的交互离不开 XML。于是有了SOAP，有了
未来的internet就是XML的预言。
有人觉得XML是救世主，XML可以实现跨平台、跨语言的数据交换。
的确，XML能做到，但是把对象请求和 RP交给XML本身就违背了XML描述
数据的基本原则。XML是为了让数据与程序分离，这样做无异于给自己一耳光。
让我们了解一下程序如何通过XML交互，首先程序A把数据转换为
XML，程序B再读出来。这很像美国人与英国人通讯，他们嫌方言碍事，于是
用中文作为中间语言。
当XML已经红遍半边天的时候，大部分人都没听说过CORBA/IIOP，市面上
的书籍屈指可数。事实上CORBA在1997年就推出了CORBA2.0。
要了解CORBA，就必须了解IDL，IDL是接口描述语言，它可以描述数据对象
和接口。IDL可以编译成Java/C/C++/SmallTalk/ADA等多种语言的对应代码?nbsp;
这样，只要IDL能映射到某种语言，并有对应的ORB实现，就可以轻松的实现
跨平台的对象请求（不是简单的RPC）。无论远程对象是由什么语言实现的，
无论它在这个世界的那个角落，你都可以通过IIOP访问。对象是一些二进制
流，对象之间的交流在本质上也是二进制流。IIOP实际上也是把方言转换为
标准语言IDL，不过IIOP之间的数据交换可不是ASCI 码这种浪费资源的东东。
在CORBA这个体系结构下进行编程，无论是编程效率和执行效率都令人满意。

--

这年头,诗人画家音乐家,连编游戏的、open source的、自由电子的，凡是觉得自
己是棵葱的都留长发。但是必须说明，虽然我是open source和rock的爱好者，也留长
发，但是并不是一棵葱。

※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.160.211]
发信人: parasoft (Lost & Got), 信区: XML
标 题: Re: IDL vs XML
发信站: BBS 水木清华站 (Wed Nov 1 20:15:07 2000)

看这里：http://www.vex.net/~ben/corba/
呵呵，你就知道ORB多不多了...

【 在 starw (化缘道人) 的大作中提到: 】
∶ OMG只负责CORBA的规范制定吧....
∶ 具体实现可顾不了了....现在CORBA的实现还不是很多吧....

--

回忆，象一部开着的机器，趁我不注意，慢慢地清晰反复播映...

※ 来源:·BBS 水木清华站 smth.org·[FROM: 162.105.119.114]
发信人: holly (有些已经离去, 有些永远不会来), 信区: XML
标 题: Re: IDL vs XML
发信站: BBS 水木清华站 (Fri Nov 3 09:55:06 2000)

【 在 seamus (天使在我身旁) 的大作中提到: 】
∶ 能举几个Corba优于COM的地方吗? 说一两句也行,兄台在很多场合表达了同样的观点,
∶ 却从没见过下文。厂商都要赚钱，要维护自己平台的利益，和平台相关的问题包括跨
∶ 平台性就不要说了，就说说设计思想吧。

呵呵... 最明显不过的一点就是 COM 至今不支持继承这一最基本的对象方式.
M$ 说用 aggregation 如何如何好,完全可以代替继承云云, 但那完全是两种
不同的对象耦合关系, 具有不同的语义和应用环境.

COM 目前的实现严重地依赖于 Windoz Regitry 这一不可靠而且容易损坏的
东西, M$-RPC 的性能本来就不好, DCOM 再架在它上面, 嘿嘿.... 再
加上那个 boring 的 M$ 域管理体系, COM 始终只能是一个 LAN 甚至是一个
网段上的玩艺.

∶ 讨论的标题也挺有意思,连IDL都被抬出来轰XML,原文作者看来对Corba真的是呵爱有
∶ 加了，我觉得把标题和原文中的Corba和相关术语换成COM/DCOM和相关术语也差不了
∶ 多少，IDL对于COM也是很重要的，不是Corba独有的。

这是两回事, 现在在里面讨论的东西跟标题无关. IDL/XML 根本就不是一回事.

--
那悲歌总会在梦中清醒, 诉说一点哀伤过的往事
那看似漫不在乎转过身的, 是风干泪眼后萧瑟的影子

九月的事早已埋藏在风雪之中
为何我听到你胸口的热血汹涌

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.120.13.24]
发信人: telnet (小飞象), 信区: XML
标 题: Re: IDL vs XML
发信站: BBS 水木清华站 (Sun Nov 5 10:52:57 2000)

【 在 holly (有些已经离去, 有些永远不会来) 的大作中提到: 】
∶ 呵呵... 最明显不过的一点就是 COM 至今不支持继承这一最基本的对象方式.
在COM+2.0中支持对象的直接继承
∶ M$ 说用 aggregation 如何如何好,完全可以代替继承云云, 但那完全是两种
∶ 不同的对象耦合关系, 具有不同的语义和应用环境.
∶ COM 目前的实现严重地依赖于 Windoz Regitry 这一不可靠而且容易损坏的
以后不再需要这个东西了。
∶ 东西, M$-RPC 的性能本来就不好, DCOM 再架在它上面, 嘿嘿.... 再
∶ 加上那个 boring 的 M$ 域管理体系, COM 始终只能是一个 LAN 甚至是一个
∶ 网段上的玩艺.
正确使用的话，COM+表现要好的多。
CORBA的问题是各公司的协作不好，ORB的实现一直没有一个很严格的规定，所以真做
CORBA的话，用一家的产品吧，说要整合，确实不如COM+的解决方案。
∶ 这是两回事, 现在在里面讨论的东西跟标题无关. IDL/XML 根本就不是一回事.
MS可能会将XML做为以后的接口描述语言。
现在的测试中，XML已经代替IDL成为接口描述了。

--

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.113.28.245]


XMl与CORBA (BM: inannan)

编号 | 类别 | 标题 | 编辑日期
1 | 文件 | XMl与CORBA inannan | 2001.05.30
2 | 文件 | Re: XMl与CORBA inannan | 2001.05.30
3 | 文件 | Re: XMl与CORBA inannan | 2001.05.30
4 | 文件 | Re: XMl与CORBA inannan | 2001.05.30
5 | 文件 | Re: XMl与CORBA inannan | 2001.05.30
返回上一页 回到上一级目录


巨大的类库

 发信人: Jobs (温少), 信区: XML
标 题: 巨大的类库
发信站: BBS 水木清华站 (Wed Nov 22 00:46:24 2000)

VC之所以强大，因为他有一个巨大的类库，MFC，有了MFC，编写
Windows 应用程序就很变得简单多了，我的朋友跟我说，MFC很大，足
以让我学一辈子，我当时反驳，我不会去学MFC，我只会去用MFC。MFC
的确很大，但是在.Net SDK中提供了更大的类库，他本身支持的语言是
C#、VB 7和JScript 7，VB 7和JScript 7中增加了对Class的全面支持，
VB 7中增加了对类继承的支持，JScript新增了类的支持。C#是一门新的
语言，与C++语法类似，我还没有认真去看，好像还不错，呵呵……

类库中令人感到兴奋的一点是对XML全面支持，我现在用XMLTextReader
和XMLTextWriter来访问XML数据感到很方便。类库中包括对数据库的全面
支持，其中有ADO类库，也就是所谓的ADO Plus，刚开始使用的时候还觉得
有点不自然，不过用多几次就觉得还可以，由于有很多用ADO访问数据库的
代码块，用ADO +的时候原来的代码要重写，这一点觉得很讨厌，不过也没
办法拉。类库中专门对图形和网络和Web的子类库，呵呵，Web的还有兴趣看
看，图形的呢，嘻嘻，不是我的专长了。

在Preview版的.Net SDK中，很多的功能都是to be Suplied，那时觉得
他很臭，在Beta 1中的SDK中，好像已经少了很多，在Preview Edition中，
有很多的Bug，在Beta版中好像我遇到的都解决了，用的还很少呢，……

--

※ 修改:·Jobs 於 Nov 22 03:13:44 修改本文·[FROM: 210.39.3.50]
※ 修改:·Jobs 於 Nov 22 05:40:47 修改本文·[FROM: 210.39.3.50]
※ 来源:·BBS 水木清华站 smth.org·[FROM: 210.39.3.50]
上一篇 返回上一页 回到目录 回到页首


关于XML Parser的资料综述 (BM: inannan)

编号 | 类别 | 标题 | 编辑日期
1 | 文件 | 关于XML Parser的资料综述(一，概述) inannan | 2001.05.30
2 | 文件 | Re: 关于XML Parser的资料综述(一，概述) inannan | 2001.05.30
3 | 文件 | Re: 关于XML Parser的资料综述(一，概述) inannan | 2001.05.30
4 | 文件 | 关于XML Parser的资料综述(二，DOM) inannan | 2001.05.30
5 | 文件 | 关于XML Parser的资料综述(三，SAX) inannan | 2001.05.30
6 | 文件 | 关于XML Parser的资料综述(四，总结) inannan | 2001.05.30
7 | 文件 | 关于XML Parser的资料综述(五，参考资料) inannan | 2001.05.30
返回上一页 回到上一级目录


关于XML Parser的资料综述(一，概述)

 发信人: mvm (米兰~~屋檐下的木帏幕), 信区: XML
标 题: 关于XML Parser的资料综述(一，概述)
发信站: BBS 水木清华站 (Wed Nov 22 12:16:28 2000)

发信人: mvm (国际米兰), 信区: E_Commerce
标 题: 关于XML Parser的资料综述(一，概述)
发信站: 饮水思源站 (Tue Sep 5 21:59:58 2000), 转信

1.XML Parser的概述
XML Parser是一个软件包，提供给程序员二次开发的软件包。
程序员在使用XML Parser时，调用其包中提供的接口（如函数接口
等），从而得到解析的结果。功能比较完善的XML Parser在解析
XML文档的同时还能完成有效性检验等相关任务。使用已有的XML
Parser，能使程序员在处理与XML的解析相关的事务时节省大量的精
力，因而是一种符合软件工程中代码重用思想的软件包。
XML Parser遵循一定的标准，以XML Parser如何回应（feedback）
调用者的方式来分，可以分成两大类：事件驱动类（event-
driven）和对象模型类（object model）。前者的代表是SAX（
Simple API for XML），后者的代表是DOM（Document Object Model）。
DOM出现的比较早、比较OO，但SAX的运行性能更好。出于易
开发易维护的的角度，我更倾向于DOM。此二者，思路大相径庭，
下面均将详述。
XML Parser可以用多种高级语言实现，也可以被用于多种高级
语言的二次开发。这些语言包括：C、C++、Tcl、Perl、Python以
及Java。其中，尤以Java为甚，C/C++其次。由于Perl是GNU的，所
以用这两种语言书写的XML Parser也相当多。Python是近几年新出
现的一种完全面向对象的、解释型的高级语言，由于出现较晚，所
以相应的XML Parser不多。
C/C++的XML Parser一般以DLL或ActiveX的形式发布（distribute），
少量非商业产品附源码。在商业性的C++ XML Parser中，IBM发布
的xml4c2的影响较大，微软也已经发布了MSXML，其中含有一个
XML Parser。
Java的XML Parser一般以Jar包的形式发布，绝大多数都附有
源码。商业产品较少，多为Open Source的。由于Java语言本身的
优越性，Java的XML Parser在使用上比C/C++的XML Parser更方便
。

--
采菊东篱下
悠然见南山

--

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.120.7.59]
返回上一页 回到目录 回到页首 下一篇


Re: 关于XML Parser的资料综述(一，概述)

 发信人: mvm (米兰~~屋檐下的木帏幕), 信区: XML
标 题: Re: 关于XML Parser的资料综述(一，概述)
发信站: BBS 水木清华站 (Thu Nov 23 14:12:37 2000)

有个叫JDOM的东东，据说融合了dom和sax的优点。

【 在 ccloud (东邪) 的大作中提到: 】
∶ 应用程序对XML解析一次后，不需再解析，只利用一次的解析结果不停地运行，
∶ 这种情况下是否用DOM比较好些。

--

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.120.7.59]


Re: 关于XML Parser的资料综述(一，概述)

 发信人: flier (小海 //爱喝可乐^_^), 信区: XML
标 题: Re: 关于XML Parser的资料综述(一，概述)
发信站: BBS 水木清华站 (Thu Nov 23 15:22:02 2000)

【 在 mvm (米兰~~屋檐下的木帏幕) 的大作中提到: 】
∶ 有个叫JDOM的东东，据说融合了dom和sax的优点。
oh?如何结合？扫描文档建立dom框架同时激活事件？

dom和sax实际上是互补的，虽然我更加喜欢sax，但是
sax方式扫描文档实际上必须进行遍历才能取得特定数据
就像古老的磁带机顺序操作一样，而如果要进行大数据量
操作则必须进行随机访问，jdom有什么好的解决办法？
我的一种想法是用类似OLE复合文档的方式建立快速索引
但这样的代价有点大，或者建立同步更新的外部索引文件
但这样做都会破坏xml的自描述性和独立性 :(
--
. 生命的意义在于 /\ ____\ /\_ \ /\_\ .
. 希望 \ \ \___/_\/\ \ \/_/__ __ _ _★ .
. 工作 \ \ ____\\ \ \ /\ \ /'__`\ /\`'_\ .
. 爱你的人 \ \ \___/ \ \ \___\ \ \/\ __//\ \ \/ .
. 和你爱的人 \ \___\ \ \_____\ \__\ \____\ \ \_\ .
. …… \/___/ \/_____/\/__/\/____/ \/_/ @126.com .

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.114.32.15]


关于XML Parser的资料综述(二，DOM)

 发信人: mvm (米兰~~屋檐下的木帏幕), 信区: XML
标 题: 关于XML Parser的资料综述(二，DOM)
发信站: BBS 水木清华站 (Wed Nov 22 12:16:53 2000)

发信人: mvm (国际米兰), 信区: E_Commerce
标 题: 关于XML Parser的资料综述(二，DOM)
发信站: 饮水思源站 (Tue Sep 5 22:03:37 2000), 转信

2.DOM
DOM乃由W3C定义，全称为Document Object Model。和DOM有关
的主要有DOM规范和基于DOM的XML Parser。
DOM规范指的一份文档，在这份文档根据"基于树"的思想中定
义了一种对象模型（UML图见[16]），这种对象模型将一份结构化
文档用对象树的形式表达出来。
按照DOM规范提供二次开发接口的XML Parser软件包称为基于
DOM的XML Parser，区别于基于SAX的XML Parser。
DOM的思想也称为"基于树的（tree based）"，因为其主要想
法是一次性将一篇结构化文档全部解析，然后生成一个对象树
（object tree）用以描述该文档。之后对于该文档的所有操作（如修
改、查询等），均在该对象树上进行。从"基于树"这点上看，DOM
和动态HTML（Dymanic HTML）非常相象，而且DOM受到DHTML的影响
非常深。

2.1 关于DOM规范
DOM的规范（specification）现有两层。Level One的草案于
1997年10月公布，正式文档于1998年10月发布（published as
W3C candidate recommendation）。Level Two于1998年12月提出草
案，1999年12月定稿，今年3月审核期（review period）结束，5
月发布正式文档。新的Level Three已于今年9月1日发布第一份草
案（draft）。DOM新发布的每一层都对以前DOM进行了内容上的扩
充和更新。
DOM Level One在结构上分为两段，其中DOM(Core)定义了用于
描述XML的DOM接口，DOM HTML描述了用于HTML的DOM。
DOM Level One主要描述了三部分内容，它们分别是：
1)定义了用于表达和操作（represent and manipulate）一份
结构化文档的接口（interface）和对象（object）。
2)这些接口和对象的语法，包括其行为和属性（behavior and
attributes）。
3)这些接口和对象之间的关系与协同关系（relationships and
collaborations）。
DOM Level Two在Level One的基础上增加的内容包括：文档的
抽象视（abstract view）、对象树的遍历（traversal）、文档中
的块（Range）、风格页（generic stylesheets）、层叠式风格页
（Cascading Style Sheets）等内容。另外，更重要的是，Level
Two增加了对事件机制（event）的支持。事件机制在Level One中
完全没有被定义。
需要注意的是，DOM Level Two中所说的事件（event）和SAX
的事件驱动（event driven）中的事件，虽然名称相同，但涵义完
全不同。DOM2中的事件，指的是结构化文档内部所定义的事件，比
如页面被加载时的OnLoad事件等，和Parser无关。而SAX中的事件
，指的是XML Parser在解析XML文档时产生的回调（callback）事
件，和文档本身无关。
Level Three在写这份资料综述时刚刚发布草稿，故未及细究
。从W3C公布的草案来看，第三层的主要目标（goal）是进一步加
强和扩充Level Two新出现的事件机制。

2.2 DOM类XML Parser的使用
遵循DOM规范开发的XML Parser的使用是自然的：首先初始化
一个Parser，然后将一篇文档提交处理，Parser处理后返回一颗对
象树（示意图见[11]）。然后所有对文档的操作均对这颗树进行。
在这个过程中，对象树和其操作等，均遵循DOM规范的规定。因此
，遵循标准DOM接口的XML Parser是具有良好的重用特性的。
由于含有对象的概念，DOM天生就是为面向对象的程序语言指
定的。其规范中也以Java语言作为示例语言。
需要指出的是，DOM并不是一个二进制的规范（a binary spe
cification），所以，只有对于特定的编程语言才有意义。例如，
对于C++程序员来说，用Java写的XML Parser只有参考价值。

2.3 DOM的缺点
DOM的最大问题在于性能，无论是在运行的速度上，还是运行
所需要的内存上，都对资源提出了很高的要求。
在运行速度方面，DOM程序在解析整个文档时至少需要扫描整
个文档两遍，而SAX只需扫描一遍（注：此断语出自[15]，具体原
因尚未搞清）。
在运行所需要的内存方面，由于DOM程序一次性将整个文档都
成生一颗树存放于内存中，故对于一些大型的文档，可能会在内存
上遇到麻烦。另外，即使是处理一些不那么大的文档时，DOM程序
也会建立一大堆小对象。频繁的建立对象可能会导致很大的开销。
例如，在Java中，用new建立的每一个对象最终都必须由JVM的垃圾
收集器负责释放，大量的new操作可能会导致JVM的崩溃。

--
采菊东篱下
悠然见南山

--

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.120.7.59]


关于XML Parser的资料综述(三，SAX)

 发信人: mvm (米兰~~屋檐下的木帏幕), 信区: XML
标 题: 关于XML Parser的资料综述(三，SAX)
发信站: BBS 水木清华站 (Wed Nov 22 12:17:13 2000)

发信人: mvm (国际米兰), 信区: E_Commerce
标 题: 关于XML Parser的资料综述(三，SAX)
发信站: 饮水思源站 (Tue Sep 5 22:08:00 2000), 转信

3.SAX
SAX，全称Simple API for XML，即是指一种接口，也是指一
个软件包。
作为接口，SAX是事件驱动型XML解析的一个标准接口（
standard interface），已被OASIS（ Organization for the
Advancement of Structured Information Standards）所采纳。
作为软件包，SAX最早的开发始于1997年12月，由一些互联网
分散的程序员合作进行。后来，参与开发的程序员越来越多，组成
了互联网上的XML-DEV社区。五个月以后，1998年5月，SAX 1.0版
由XML-DEV正式发布。今年5月，XML-DEV社区又发布了最新的SAX
2.0。2.0版本在多处与1.0版本不兼容，包括一些类和方法的名字。

3.1 SAX的原理与使用
SAX的工作原理是：Parser顺序扫描文档，扫描到文档（document）
开始与结束、元素（element）开始与结束等地方时通知事
件处理函数（handler），由事件处理函数做相应动作，然后继续
同样的扫描，直至文档结束。例如，对于如下文档：
<?xml version="1.0">
<doc>
<para>Hello, world!</para>
</doc>
在解析的过程中会产生如下一系列事件：
start document
start element: doc
start element: para
characters: Hello, world!
end element: para
end element: doc
end document
很明显，这种思路和DOM截然不同。
使用SAX时，只需将精力集中在事件处理函数的编写上即可。
如果使用的是非面向对象语言，如C，则需要将程序员自行开发的
事件处理函数作为参数传递给SAX Parser。如果使用的是面向的语
言，则需要重载SAX包中原有的事件响应函数。

3.2 SAX的缺点
由于SAX在原理以及提供的接口等方面均比DOM简单，同时SAX
的概念不是OO的，所以，虽然SAX在速度、对资源的要求等方面性
能比DOM好，但SAX比DOM难用、难懂（相当难懂！需要看sample才
能大概理解如何使用，其使用方法没有DOM那么直接。作为一种面
向对象的接口，DOM的确非常容易理解和使用）。当使用SAX的XML
Parser的程序规模增大时，程序的可读性和可维护性迅速变坏。
另一方面，使用SAX，二次开发的程序员需要自行建立中间对象用
于存储文档的信息--这项工作在DOM里是由Parser程序完成的。

--
采菊东篱下
悠然见南山

--

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.120.7.59]


关于XML Parser的资料综述(四，总结)

 发信人: mvm (米兰~~屋檐下的木帏幕), 信区: XML
标 题: 关于XML Parser的资料综述(四，总结)
发信站: BBS 水木清华站 (Wed Nov 22 12:17:52 2000)

发信人: mvm (国际米兰), 信区: E_Commerce
标 题: 关于XML Parser的资料综述(四，总结)
发信站: 饮水思源站 (Tue Sep 5 22:08:56 2000), 转信

4.总结
目前，Internet上已经有相当多关于XML Parser的资源。这些
资源包括：XML Parser、源码及相关技术讨论。
其中，作为XML Parser技术的核心，XML Parser软件包的各个
语言版本已经有不下数十种。但其中免费资源较缺，很多功能比较
强的软件包多为商业产品，而且不提供源码，研究价值不大。另一
方面，提供源码的免费软件包大多功能不强，而且文档不全，需要
花费大量的时间研读源码，给研究与使用带来不便。
BTW，今年四月，出现了一个叫JDOM的开源软件包。该软件包
由Jason Hunter和Brett McLaughlin合作完成，今年四月发布的是
Beta 1版本。据公布的资料[17][18]称，JDOM融合和DOM和SAX的优
点，同时对以前的DOM接口和SAX接口保持兼容。公布的Demo程序和
部分源码使我相信，由于基于Java而且兼有DOM、SAX的优点，JDOM
前途看好。

--
采菊东篱下
悠然见南山

--

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.120.7.59]


关于XML Parser的资料综述(五，参考资料)

 发信人: mvm (米兰~~屋檐下的木帏幕), 信区: XML
标 题: 关于XML Parser的资料综述(五，参考资料)
发信站: BBS 水木清华站 (Wed Nov 22 12:18:08 2000)

发信人: mvm (国际米兰), 信区: E_Commerce
标 题: 关于XML Parser的资料综述(五，参考资料)
发信站: 饮水思源站 (Tue Sep 5 22:11:30 2000), 转信

5.参考资料

[1]中国XML联盟，http://www.xml.org.cn:8188/
[2]Free XML Parser for Borland Delphi 4/5，http://www.destructor.de/xmlparser/
[3]John Cowan's XML index，http://www.ccil.org/~cowan/XML/
[4]James Clark's Home Page，http://www.jclark.com/
[5]XMLephant: Tools/Parsers，http://xmlephant.com/pages/Tools/Parsers/
[6]XML Programming with C++，http://www.xml.com/pub/1999/11/cplus/
[7]Chinese XML Now!，http://www.ascc.net/xml/en/utf-8/resource_index.html
[8]IE5-XML Programming with C++ and COM，
http://www.comdeveloper.com/articles/ie5xml.asp
[9]SAX: The Simple API for XML，http://www.megginson.com/SAX/index.html
[10]Document Object Model (DOM)，http://www.w3.org/DOM/
[11]Programming XML in Java，
http://www.javaworld.com/jw-07-2000/jw-0707-xmldom.html
[12]Benchmarking XML Parsers，http://www.xml.com/pub/Benchmark/article.html
[13]W3C Document Object Model (DOM)，http://www.oasis-open.org/cover/dom.html
[14]Microsoft Visual Basic SAX2 Jumpstart for XML Developers，
http://msdn.microsoft.com/xml/articles/VBsax2jumpstart.asp
[15]Mapping XML to Java，
http://www.javaworld.com/javaworld/jw-08-2000/jw-0804-sax.html
[16]a complete UML class diagram，http://www.linklore.com/xml/xml_dom.gif
[17]JDOM，http://jdom.org/
[18]Easy Java/XML integration with JDOM，
http://www.javaworld.com/javaworld/jw-05-2000/jw-0518-jdom.html
[19]Simple API for XML (SAX) Software and Resources，
http://www.xml.com/pub/Guide/SAX
[20]SAX: The Simple API for XML，http://www.python.org/doc/howto/xml/SAX.html

--
采菊东篱下
悠然见南山

--

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.120.7.59]
上一篇 返回上一页 回到目录 回到页首


工具使用 (BM: inannan)

编号 | 类别 | 标题 | 编辑日期
1 | 目录 | 用哪个XML编辑工具 (BM: inannan) | 2001.05.25
2 | 文件 | Re: 有没有可视化的生成xml和xsl的工具？ inannan | 2001.05.25
3 | 文件 | Re: 推荐一个xml小工具 inannan | 2001.05.25
4 | 文件 | 关于EditML inannan | 2001.05.26
5 | 目录 | 分析器的使用 (BM: inannan) | 2001.05.26
6 | 文件 | Microsoft.BizTalk.Server.2000.Enterpri inannan | 2001.05.28
7 | 文件 | Re: 請問XML Spy的Key Code?? inannan | 2001.05.28
8 | 文件 | Re: XML的开发工具 inannan | 2001.05.28
9 | 文件 | 使用XML实现WAP网页的工具问世 inannan | 2001.05.30
10 | 文件 | Re: 请问：XMLSpy3.07与3.5有什么区别？ inannan | 2001.05.30
11 | 文件 | SOAP_Toolkit_2b1_20010102 inannan | 2001.05.30
返回上一页 回到上一级目录


用哪个XML编辑工具 (BM: inannan)

编号 类别 标题 编辑日期
返回上一页 回到上一级目录


Re: 有没有可视化的生成xml和xsl的工具？

 发信人: JoyKiller (希望永在), 信区: XML
标 题: Re: 有没有可视化的生成xml和xsl的工具？
发信站: BBS 水木清华站 (Sat Apr 29 11:13:47 2000)

用XMLSPY 或是xml stylusEval都行。
还有IBM也有viual xml tools.

【 在 BloodChen (陈雪~开心就好) 的大作中提到: 】
∶ 自己写xsl觉得很麻烦

--

宠辱不惊花开花落,
去留无意云卷云舒.

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.105.185.168]
返回上一页 回到目录 回到页首 下一篇


Re: 推荐一个xml小工具

 发信人: flier (小海 //爱喝可乐^_^), 信区: XML
标 题: Re: 推荐一个xml小工具
发信站: BBS 水木清华站 (Wed May 10 00:33:55 2000)

【 在 aji (阿季) 的大作中提到: 】
∶ 向大家推荐ms的xml NotePad，可以可视的编写xml，提供xml的dtd验证
∶ ，而且支持外部dtd，还不错，而且很小巧，在ms站上可以下载
那个东东太弱了，用XMLSpy好了
最新版本3.0b3c，还有注册机，呵呵
ftp://ftp.lib.pku.edu.cn/incoming/Flier/XMl Spy 3.0b3c/
--
. 生命的意义在于 /\ ____\ /\_ \ /\_\ .
. 工作、 \ \ \___/_\/\ \ \/_/__ __ _ _★ .
. 希望、 \ \ ____\\ \ \ /\ \ /'__`\ /\`'_\ .
. 爱你的人、 \ \ \___/ \ \ \___\ \ \/\ __//\ \ \/ .
. 和你爱的人 \ \___\ \ \_____\ \__\ \____\ \ \_\ .
. …… \/___/ \/_____/\/__/\/____/ \/_/ @126.com .

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.114.32.14]


关于EditML

 发信人: veb (君), 信区: XML
标 题: 关于EditML
发信站: BBS 水木清华站 (Sat May 20 19:18:41 2000)

www.xml.net.cn
向网友隆重推荐该软件，我怎么觉得*目前*还是垃圾呢？
问题：
1。很多时候无法存文件。特别是source view。
2。<a/>改成<a></a>,不知还有什么别的毛病。
3。soure view中，bug奇多。

//btw,dtd自动生成还是很有特点的。
--

Powered by eXtensible Markup Language

※ 修改:·veb 於 May 20 19:19:13 修改本文·[FROM: 202.112.99.209]
※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.112.99.209]


分析器的使用 (BM: inannan)

编号 | 类别 | 标题 | 编辑日期
1 | 文件 | 分析器的使用（一） inannan | 2001.05.26
2 | 文件 | Re: 分析器的使用（一） inannan | 2001.05.26
3 | 文件 | Re: 分析器的使用（一） inannan | 2001.05.26
4 | 文件 | Re: 分析器的使用（一） inannan | 2001.05.26
返回上一页 回到上一级目录


分析器的使用（一）

 发信人: cloudLo (呵呵), 信区: XML
标 题: 分析器的使用（一）
发信站: BBS 水木清华站 (Sun May 21 20:58:23 2000)

分析器的使用（一）
作者: 常明 写作日期:2000-04-26
简介
这组文章主要就目前有的XML分析器分别介绍一下他们的接口和用法。
其中包括SUN的XML分析器，IBM的分析器XML4J，XML4C，ORACLE的分析器,EXPAT。
SUN的JAXP
JAXP API全部包括在JAXP.JAR中，它有两个工厂类 SAXParserFactory和DocumentBuild
erFactory 分别对应SAX接口和DOM接口。
这两个工厂类的作用是，通过设定其中的属性创建合适的分析器，它可以配合各种分析
器的具体实现一起使用。这就是说SAXParserFactor可以和任何符合SAX接口的PARSER一
起用，不一定就是SUN的分析器；DocumentBuidlerFactory也一样，不一定用SUN的实现
。对于sax只要parser是实现org.xml.sax.Parser接口的，对于DOM就是文档对象实现了
org.w3c.dom.*的接口。
SUN的分析器的实现是com.sun.xml.parser，它是实现了sax接口的，它的DOM实现则是基
于SAX的,所以他们的分析器是一个。
下面介绍DOM的编程，首先要引入以下JAXP API定义：
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.FactoryConfigurationError;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.DocumentBuilder;
如果要处理SAX异常加入：
import org.xml.sax.SAXException;
import org.xml.sax.SAXParseException;
文件I/O：
import java.io.File;
import java.io.IOException;
如果要处理DOM异常加入：
import org.w3c.dom.Document;
import org.w3c.dom.DOMException;
程序如下，声明一个静态全局的DOM的Document，方便下面的处理，Document可以从文件
装入，写可以通过程序写入，否则是空的。
public class DomEcho
{
static Document document;
public static void main (String argv [])
{
...
}
在分析过程中的异常处理的程序如下，这里有四种异常的处理：
public static void main (String argv [])
{
if (argv.length != 1) {
...
}
try {
} catch (SAXParseException spe) {
// Error generated by the parser
System.out.println ("\n** Parsing error"
+ ", line " + spe.getLineNumber ()
+ ", uri " + spe.getSystemId ());
System.out.println(" " + spe.getMessage() );
// Use the contained exception, if any
Exception x = spe;
if (spe.getException() != null)
x = spe.getException();
x.printStackTrace();
} catch (SAXException sxe) {
// Error generated by this application
// (or a parser-initialization error)
Exception x = sxe;
if (sxe.getException() != null)
x = sxe.getException();
x.printStackTrace();
} catch (ParserConfigurationException pce) {
// Parser with specified options //can t be built
pce.printStackTrace();
} catch (IOException ioe) {
// I/O error
ioe.printStackTrace();
}
}// main
生成分析器，有两步，首先实例化工厂，再由工厂生成DocumentBuilder,最后开始分析
∶
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
try {
DocumentBuilder builder = factory.newDocumentBuilder();
document = builder.parse( new File(argv[0]) );
} catch (SAXParseException spe) {
有了Document对象后就可以做各种DOM操作，以下程序输出XML：
XmlDocument xdoc = (XmlDocument) document;
xdoc.write (System.out);
如果要使用SAX接口程序就稍复杂一些，首先引入定义：
import java.io.*;
import org.xml.sax.*;
import javax.xml.parsers.SAXParserFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
和DOM的编程相似，首先一样实例化DocumentBuilderFactory，创建一个SAXParser，然
后开始分析，期间处理各种异常：
public static void main (String argv [])
{
if (argv.length != 1) {
System.err.println ( "Usage: cmd filename");
System.exit (1);
}
// Use the default (non-validating) parser
SAXParserFactory factory = SAXParserFactory.newInstance();
try {
NoAction noaction;
// Parse the input
SAXParser saxParser = factory.newSAXParser();
saxParser.setDocumentHandler(noaction);
saxParser.parse( new File(argv [0]), new Echo() );
} catch (Throwable t) {
t.printStackTrace ();
}
System.exit (0);
}
但用SAX是通过处理事件来进行的，所以在分析之前，一般要设定处理器，使用saxpars
er的SetDocumentHandler方法来设定。 下面是一个什么都不做的事件处理器，它实现了
DocumentHandler接口。
class NoAction implement DocumentHandler{
...
public void startDocument ()
throws SAXException
{
}
public void endDocument ()
throws SAXException
{
}
public void startElement (String name, AttributeList attrs)
throws SAXException
{
}
public void endElement (String name)
throws SAXException
{
}
public void characters (char buf [], int offset, int len)
throws SAXException
{
}
...
以上就基本介绍了sun的xml分析器的使用，有任何问题请发mail给我们一起讨论。

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.118.81.11]
返回上一页 回到目录 回到页首 下一篇


Re: 分析器的使用（一）

 发信人: yangxuu (据说江西出美女), 信区: XML
标 题: Re: 分析器的使用（一）
发信站: BBS 水木清华站 (Tue May 23 17:06:53 2000)

用SAX的DTDHandler发现,SAX的解析器不支持DTD中元素的混合类型,
比如<!ElEMENT A (#PCDATA,B,C)>
在用SUN的SAX解析器就出错,错误为:
org.xml.sax.SAXParseException: com.sun.xml.parser/P-037 #
不知是否是因为sun的解析器不支持混合类型还是别的原因,请大牛出手.
从文中可以看出常明对jaxp很熟,不知道该如何联系?
敢问cloudLo是从何处转来的文章?

【 在 cloudLo (呵呵) 的大作中提到: 】
∶ 分析器的使用（一）
∶ 作者: 常明 写作日期:2000-04-26
∶ 简介
∶ 这组文章主要就目前有的XML分析器分别介绍一下他们的接口和用法。
∶ 其中包括SUN的XML分析器，IBM的分析器XML4J，XML4C，ORACLE的分析器,EXPAT。
∶ SUN的JAXP
∶ JAXP API全部包括在JAXP.JAR中，它有两个工厂类 SAXParserFactory和DocumentBuild
∶ erFactory 分别对应SAX接口和DOM接口。
∶ 这两个工厂类的作用是，通过设定其中的属性创建合适的分析器，它可以配合各种分析
∶ 器的具体实现一起使用。这就是说SAXParserFactor可以和任何符合SAX接口的PARSER一
∶ 起用，不一定就是SUN的分析器；DocumentBuidlerFactory也一样，不一定用SUN的实现
∶ 。对于sax只要parser是实现org.xml.sax.Parser接口的，对于DOM就是文档对象实现了
∶ org.w3c.dom.*的接口。
∶ SUN的分析器的实现是com.sun.xml.parser，它是实现了sax接口的，它的DOM实现则是基
∶ 于SAX的,所以他们的分析器是一个。
∶ 下面介绍DOM的编程，首先要引入以下JAXP API定义：
∶ import javax.xml.parsers.DocumentBuilderFactory;
∶ import javax.xml.parsers.FactoryConfigurationError;
∶ import javax.xml.parsers.ParserConfigurationException;
∶ import javax.xml.parsers.DocumentBuilder;
∶ 如果要处理SAX异常加入：
∶ import org.xml.sax.SAXException;
∶ import org.xml.sax.SAXParseException;
∶ 文件I/O：
∶ import java.io.File;
∶ import java.io.IOException;
∶ 如果要处理DOM异常加入：
∶ import org.w3c.dom.Document;
∶ import org.w3c.dom.DOMException;
∶ 程序如下，声明一个静态全局的DOM的Document，方便下面的处理，Document可以从文件
∶ 装入，写可以通过程序写入，否则是空的。
∶ public class DomEcho
∶ {
∶ static Document document;
∶ public static void main (String argv [])
∶ {
∶ ...
∶ }
∶ 在分析过程中的异常处理的程序如下，这里有四种异常的处理：
∶ public static void main (String argv [])
∶ {
∶ if (argv.length != 1) {
∶ ...
∶ }
∶ try {
∶ } catch (SAXParseException spe) {
∶ // Error generated by the parser
∶ System.out.println ("\n** Parsing error"
∶ + ", line " + spe.getLineNumber ()
∶ + ", uri " + spe.getSystemId ());
∶ System.out.println(" " + spe.getMessage() );
∶ // Use the contained exception, if any
∶ Exception x = spe;
∶ if (spe.getException() != null)
∶ x = spe.getException();
∶ x.printStackTrace();
∶ } catch (SAXException sxe) {
∶ // Error generated by this application
∶ // (or a parser-initialization error)
∶ Exception x = sxe;
∶ if (sxe.getException() != null)
∶ x = sxe.getException();
∶ x.printStackTrace();
∶ } catch (ParserConfigurationException pce) {
∶ // Parser with specified options //can t be built
∶ pce.printStackTrace();
∶ } catch (IOException ioe) {
∶ // I/O error
∶ ioe.printStackTrace();
∶ }
∶ }// main
∶ 生成分析器，有两步，首先实例化工厂，再由工厂生成DocumentBuilder,最后开始分析
∶ DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
∶ try {
∶ DocumentBuilder builder = factory.newDocumentBuilder();
∶ document = builder.parse( new File(argv[0]) );
∶ } catch (SAXParseException spe) {
∶ 有了Document对象后就可以做各种DOM操作，以下程序输出XML：
∶ XmlDocument xdoc = (XmlDocument) document;
∶ xdoc.write (System.out);
∶ 如果要使用SAX接口程序就稍复杂一些，首先引入定义：
∶ import java.io.*;
∶ import org.xml.sax.*;
∶ import javax.xml.parsers.SAXParserFactory;
∶ import javax.xml.parsers.ParserConfigurationException;
∶ import javax.xml.parsers.SAXParser;
∶ 和DOM的编程相似，首先一样实例化DocumentBuilderFactory，创建一个SAXParser，然
∶ 后开始分析，期间处理各种异常：
∶ public static void main (String argv [])
∶ {
∶ if (argv.length != 1) {
∶ System.err.println ( "Usage: cmd filename");
∶ System.exit (1);
∶ }
∶ // Use the default (non-validating) parser
∶ SAXParserFactory factory = SAXParserFactory.newInstance();
∶ try {
∶ NoAction noaction;
∶ // Parse the input
∶ SAXParser saxParser = factory.newSAXParser();
∶ saxParser.setDocumentHandler(noaction);
∶ saxParser.parse( new File(argv [0]), new Echo() );
∶ } catch (Throwable t) {
∶ t.printStackTrace ();
∶ }
∶ System.exit (0);
∶ }
∶ 但用SAX是通过处理事件来进行的，所以在分析之前，一般要设定处理器，使用saxpars
∶ er的SetDocumentHandler方法来设定。 下面是一个什么都不做的事件处理器，它实现了
∶ DocumentHandler接口。
∶ class NoAction implement DocumentHandler{
∶ ...
∶ public void startDocument ()
∶ throws SAXException
∶ {
∶ }
∶ public void endDocument ()
∶ throws SAXException
∶ {
∶ }
∶ public void startElement (String name, AttributeList attrs)
∶ throws SAXException
∶ {
∶ }
∶ public void endElement (String name)
∶ throws SAXException
∶ {
∶ }
∶ public void characters (char buf [], int offset, int len)
∶ throws SAXException
∶ {
∶ }
∶ ...
∶ 以上就基本介绍了sun的xml分析器的使用，有任何问题请发mail给我们一起讨论。

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.136.36]


Re: 分析器的使用（一）

 发信人: JoyKiller ( 默默怀念--闪亮的日子), 信区: XML
标 题: Re: 分析器的使用（一）
发信站: BBS 水木清华站 (Wed May 24 08:28:10 2000)

为什么不用XERCES或XALAN的PAERSER呢?
有报告表明,
在很多方面这些都比SUN的XMLPARSER要强.

【 在 yangxuu (据说江西出美女) 的大作中提到: 】
∶ 用SAX的DTDHandler发现,SAX的解析器不支持DTD中元素的混合类型,
∶ 比如<!ElEMENT A (#PCDATA,B,C)>
∶ 在用SUN的SAX解析器就出错,错误为:
∶ org.xml.sax.SAXParseException: com.sun.xml.parser/P-037 #
∶ 不知是否是因为sun的解析器不支持混合类型还是别的原因,请大牛出手.
∶ 从文中可以看出常明对jaxp很熟,不知道该如何联系?
∶ 敢问cloudLo是从何处转来的文章?

--

宠辱不惊花开花落,
去留无意云卷云舒.

※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.10.120]


Re: 分析器的使用（一）

 发信人: yangxuu (据说江西出美女), 信区: XML
标 题: Re: 分析器的使用（一）
发信站: BBS 水木清华站 (Wed May 24 09:54:45 2000)

【 在 JoyKiller ( 默默怀念--闪亮的日子) 的大作中提到: 】
∶ 为什么不用XERCES或XALAN的PAERSER呢?
∶ 有报告表明,
∶ 在很多方面这些都比SUN的XMLPARSER要强.
当时也考虑了用什么parser好，最后选用sun的parser，
是考虑到版权问题，别的parser用在自己的产品中，可能
会引起版权纠纷之类的事，而sun的api是象jdk一样标准的东东，
不存在版权问题。

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: keg.cs.tsinghua]
上一篇 返回上一页 回到目录 回到页首


Microsoft.BizTalk.Server.2000.Enterprise.Edition (转载)

 发信人: qlw (钱五哥), 信区: XML
标 题: Microsoft.BizTalk.Server.2000.Enterprise.Edition (转载)
发信站: BBS 水木清华站 (Wed Aug 23 10:52:12 2000)

【 以下文字转载自 NewSoftware 讨论区 】
【 原文由 sparrow 所发表 】
beta版
Microsoft? BizTalk Server? 2000 Enterprise Edition Beta System
Requirements

An Intel Pentium 300 Processor
128 MB of RAM
A 6GB hard disk
Microsoft? Windows? 2000 Server or Windows? 2000 Advanced Server
Microsoft? SQL Server? 7.0 Standard (Service Pack 2 or later) or
Microsoft? SQL Server? 2000 Standard Edition Beta 2
Microsoft Visio? 2000 Standard Edition SR1a is required to run BizTalk
Server Application Designer
Microsoft? Office 2000 Web Components are required for Document Tracking
UI.

Readme在
http://www2.sparrows.dhs.org/Microsoft.BizTalk.Server.2000.Readme.htm
自己看吧
安装文件在ftp的/incoming目录下面

--
麻雀的FTP : ftp://ftp.sparrows.dhs.org
麻雀的EMAIL : peach@sparrows.dhs.org
DNS Server : dns.sparrows.dhs.org [166.111.161.47]
Net Meeting : ils.sparrows.dhs.org
麻雀空间 : www.sparrows.dhs.org

※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.161.47]


Re: 請問XML Spy的Key Code??

 发信人: venture (星星知我心), 信区: XML
标 题: Re: 請問XML Spy的Key Code??
发信站: BBS 水木清华站 (Mon Aug 28 23:18:37 2000)

test
k0qu75-MmUB0c-f5HN61
【 在 littlepin (不厌其烦，不耻下问) 的大作中提到: 】
∶ 我也是这个情况，要是有廖麻烦给我一分ms_zhu@sina.com.cn
∶ 随便说依据这里号宁清

--
曾经以为我会是你浪漫的爱情故事唯一不变的永远

※ 来源:·BBS 水木清华站 smth.org·[FROM: 211.99.237.107]


Re: XML的开发工具

 发信人: justkidding (单身土人~~超越自己), 信区: XML
标 题: Re: XML的开发工具
发信站: BBS 水木清华站 (Thu Sep 7 08:01:42 2000)

【 在 veb (晨雪¤终于有昵称了) 的大作中提到: 】
∶ xml开发工具,我认为还是主要依靠原来的. //xml编辑器不能算吧.
∶ 现有的有什么,有哪些,我没有花时间了解过 : (

推荐一个站点www.xmlsoftware.com
--

说了世上一无牵挂为何有悲喜
说了朋友相交如水为何重别离
说了少年笑看将来为何常回忆
说了青春一去无悔为何还哭泣

※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.174.199]


使用XML实现WAP网页的工具问世

 发信人: handwalker (生产队长), 信区: XML
标 题: 使用XML实现WAP网页的工具问世
发信站: BBS 水木清华站 (Fri Oct 20 14:52:18 2000)

：
    XML的应用范围进一步扩大。日前一种使用XML将HTML描述的Web网页改写成可供上网
手机或者便携式信息终端浏览的网页的软件与用户见面。与使用XML的其他软件相同，该
转换软件充分发挥了XML的柔软性特长，可以进行以往产品中未实现的细微调整。
    该软件是由软件供应商"Ifasion Technologies(音译)(7月份开始公司名称由voice
改为Ifasion Technologies，http://www.voice-net.co.jp/)从8月份开始推出的"EMPR
ESTO"。该软件的特点是，在将HTML描述的Web网页转换为面向手机及便携式信息终端的
Web网页过程中，使用了XML形式的中间文件。
    在使用EMPRESTO时，如果在所生成的中间文件中加入各种控制信息，就可以较容易
地制作出适合各种不同机种的Web网页。如果在控制信息中按每个对象机种加入网页描述
语言及画面尺寸，则网页可根据该机种的画面将文章及表格整理成便于浏览的格式。另
外还可以在原始的Web网页的文章中加入优先控制信息。此时，如果终端画面较小，那么
将只显示优先级较高的内容。
    用于上网手机及便携式终端的Web网页描述语言，与一般使用的HTML4.0/3.2具有微
妙的差异。目前主要有包括i模式的C-HTML、EZweb的HDML、J-SKY的MML等种语言，并且
彼此正在激烈地争夺霸主地位。而在便携式终端Palm及Zaurus中则使用的是HTML，不过
其中有些功能无法使用。(Nikkei Personal Computing)
--
我在这里转悠了很久
孤独的依然孤独
冷漠的依旧冷漠
这个世界有很多人
却没有人陪我回家

※ 来源:·BBS 水木清华站 smth.org·[FROM: 210.75.223.5]


Re: 请问：XMLSpy3.07与3.5有什么区别？

 发信人: buoy (浮云游子), 信区: XML
标 题: Re: 请问：XMLSpy3.07与3.5有什么区别？
发信站: BBS 水木清华站 (Mon Dec 11 22:10:09 2000)

Version 3.5 Beta 2 is the second public beta release for our upcoming XML S
py 3.5 product and includes several new features. Specifically this beta rel
ease contains:
+ generation of complete XML Schema documentation in HTML and Microsoft
Word format
+ printing from the XML Schema design view
+ lots of bug-fixes in the XML Schema design view and the XML Schema awa
re validator
In addition, the following features, that have already been introduced in th
e Beta 1 release of XML Spy 3.5, have been improved:
+ a graphical schema design view for editing XML Schemas with unpreceden
ted ease-of-use
+ support for the latest XML Schema Candidate Recommendation released by
the W3C on 10/24/2000
+ the ability to automatically convert schemas from the April 7 working
draft to Oct 24 CR
+ the ability to access files from a URL (http: or ftp:) using a user-na
me and password
+ the ability to save files directly to an FTP server
+ a new COM-based API for integrating XML Spy into custom solutions (Vis
ual Basic sample included.

【 在 djid (小虫) 的大作中提到: 】
∶ rt

--

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.120.7.77]


SOAP_Toolkit_2b1_20010102

 发信人: flier (小海 //爱喝可乐^_^), 信区: XML
标 题: SOAP_Toolkit_2b1_20010102
发信站: BBS 水木清华站 (Thu Jan 4 01:29:53 2001)

MS SOAP Toolkit 2.0 beta1

有一定的功能增加，比如对Web Services Description Language (WSDL) 1.0
提供了更全面的支持，支持UTF-8/UTF-16编码模式，支持SOAP 1.1以及
支持Universal Description, Discovery and Integration (UDDI)等等
具体改动参加下面的What's New in SOAP Toolkit 2.0 Beta 1

ftp://ftp.lib.pku.edu.cn/incoming/SOAP_Tookit_2b1_20010102/SoapToolkit20.EXE

安装需要IE5.0以上，需要安装MS XML 3.0以上版本，
需要MS Install格式支持……enjoy it!

What's New in SOAP Toolkit 2.0 Beta 1
It's All New
Beta 1 Features
The SOAP Toolkit 2.0 provides the tools and features required to implement a
Web Services infrastructure with SOAP. The SOAP Toolkit 2.0 relies heavily
on WSDL to define the SOAP messages and service call formats. This Beta rele
ase does not include the full functionality that will be in the final releas
e, but it lets you get started with simple services and work into more compl
ex services later.
The major features included in this Beta release are:
A SOAP Client interface that exposes a dispatch interface that maps to a SOA
P message defined in a WDSL file.
A SOAP Server that can call a service that exposes a COM dispatch interface
with the contents of a SOAP Message based on a WSDL description of the SOAP
Message and a Web Services Meta Language (WSML) file that maps the SOAP mess
age to the COM interface.
HTTP Interfaces for Windows 2000, NT4, Windows 98, and Windows ME.
A WSDL reader that parses WSDL files and exposes IDispatch COM interfaces fo
r RPC-style SOAP Services. An extensive, but not complete, subset of the WSD
L specification is supported in Beta 1.
Support for SOAP section 5 Simple types in SOAPMappers that map Variants to
and from SOAP Message elements. See the documentation for a list of the supp
orted types.
A SOAP Serializer that supports the low-level creation of arbitrary SOAP Mes
sages.
A SOAP Message Object Generator that provides an alternate SOAP programming
model by generating simple VB objects based on an XDR Schema for non-RPC sty
le SOAP messaging.
A simple tool that reads basic COM typelibs and generates a WSDL file that d
escribes a SOAP message supporting that interface.
A comprehensive set of documentation and sample applications to illustrate h
ow to build SOAP enabled services using the SOAP Toolkit Version 2.
Coming in future releases:
Complete SOAP 1.1 section 5 encoding support (complex types and arrays).
Complete WSDL file parsing support.
More tools for generating and modifying WSDL files.
More complete SOAP Header support.
SOAP Message Object Generation from XSD schema and WSDL files.
Interoperability testing.
This release requires the use of MSXML version 3.0. MSXML3 is included in th
e download and is installed with the SOAP Toolkit 2.0 installation program.

--
. 生命的意义在于 /\ ____\ /\_ \ /\_\ .
. 希望 \ \ \___/_\/\ \ \/_/__ __ _ _★ .
. 工作 \ \ ____\\ \ \ /\ \ /'__`\ /\`'_\ .
. 爱你的人 \ \ \___/ \ \ \___\ \ \/\ __//\ \ \/ .
. 和你爱的人 \ \___\ \ \_____\ \__\ \____\ \ \_\ .
. …… \/___/ \/_____/\/__/\/____/ \/_/ @126.com .

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.114.32.22]
上一篇 返回上一页 回到目录 回到页首


业界动态 (BM: inannan)

编号 | 类别 | 标题 | 编辑日期
1 | 文件 | [范文][XML]XML 1999新闻 (转载) veb | 2000.05.27
2 | 文件 | [范文][XML]关于XML的若干发展动态 (转载 veb | 2000.05.27
3 | 文件 | xml.org.cn近况 inannan | 2001.05.25
4 | 文件 | DevX.com XML Update: SOAP, BizTalk, an inannan | 2001.05.25
5 | 文件 | 互联网信息共享有了新标准 (转载) inannan | 2001.05.25
6 | 文件 | 国际电信厂商决战无线互联网 inannan | 2001.05.26
7 | 文件 | 新浪网上专设WAP移动天地栏目. inannan | 2001.05.26
8 | 文件 | XML标准的制定取得新的进展(转载） inannan | 2001.05.27
9 | 文件 | Nokia无线浏览器将公开源代码 (转载) inannan | 2001.05.28
10 | 文件 | 业内人士称WAP市场年底将有转机 inannan | 2001.05.28
11 | 文件 | Siemens为其WAP网关选择定位系统软件 inannan | 2001.05.28
12 | 文件 | 彩显手机纷至沓来 (转载) inannan | 2001.05.28
13 | 文件 | 诺基亚与福建移动通信携手推出 (转载) inannan | 2001.05.28
14 | 文件 | XML 中国论坛更新通报(2000年9月26日) inannan | 2001.05.30
15 | 文件 | XML 中国论坛(http://www.xml.net.cn)更?inannan | 2001.05.30
16 | 文件 | .Net Beta 1出来了 inannan | 2001.05.30
17 | 文件 | XML技术及应用专业讲座 inannan | 2001.05.30
18 | 文件 | 中国XML技术2000观感 inannan | 2001.05.30
返回上一页 回到上一级目录


[范文][XML]XML 1999新闻 (转载)

 发信人: DDG (导弹驱逐舰~雾的季节), 信区: XML
标 题: [范文][XML]XML 1999新闻 (转载)
发信站: BBS 水木清华站 (Thu Apr 6 13:28:50 2000)

【 以下文字转载自 New_board 讨论区 】
【 原文由 starw 所发表 】
XML 1999新闻

3月

1999年3月21日
Oracle在Oracle TechNet上第一次发布了为Java 服务的 Oracle XML解析器的bug修
补器(为注册)

1999年3月22日
MDSAX 1.0版本产品发布了。 MDSAX是一组程序员级的工具。.它用来支持Java SAX
解析器和解析过滤起的工作。

1999年3月30日
Tom Harding 应用可扩展协议起草了一份Java地应用实现。这个协议是一个纯XML的
协议。它支持发送和接收XML文件时系统稳固的连接。

4月

1999年4月 1日
Java中的OpenXML（开放式XML） XML parser（分析器）1.0.5版本面世。

1999年4月 4日
Jonathan Robie's建立了一个讨论XQL（XML询问语言）的邮件列表。这个讨论组主
要是回答关于语言定义的问题，怎样应用的问题，怎样有产品实现的问题。它致力
于在将来的XQL发展中实现一致。

1999年4月19日
Richard Tobin在XML parser（分析器）RXP中增加了namespace（名域）的支持。

1999年4月22日
W3C的发布了一个新的XSL草稿说明，其中包括对格式化对象的说明

1999年4月23日
FourThought LLC已发放第二公众阿尔发版的 4XSL (版本 0.6.1),它支持大多数 X
SL变换语言。它兼容 12月 XSL的工作草稿。 它用Python书写并且通过了Solaris和
Linux的测试。

1999年4月24日
Michael Kay发布了SAXON的4.2版本。它加入了一个XSL的编译器。这个编译器以XS
L样式表为输入，并以一个Java应用程序为输出。这个Java应用程序可以再不依赖于
原样式表的情况下处理XML文件。
这个版本的发布支持了1998 十一月发布的XSL工作草稿。

5月

1999年5月7日
万维网联盟发布了第一份XML Schemas（模式）的工作草稿。

1999年5月25日
IBM公司的用于C++的XML解析工具(XML parser for C++，XML4C)现已支持Solaris系
统。IBM的XML4C以C++中一个简便的子集写成。XML4C使得其应用能方便地读写 XML
的数据。一单独C++共享库提供类以分析,生成,操纵,并且确认 XM文档。
了解更多或下载该工具 。

1999年5月26日
用改进的 LotusXSL安排你的XML的格式。XSL提供在浏览器或者在服务器端格式化和
变换XML的机制。它允许开发者把抽象数据XML的语义学例子变换成简报语言,如 HT
ML语言。
这里下载LotusXSL

6月

1999年6月1日
Sun公司已发布了Java Project X的技术版本二。它确认在爪哇开发者连接(Java D
eveloper Connection)上XML解析器。该发布版本为 SAX 1.0增添了完全的支持,修
改了多样混合的错误,并且改善了性能。

1999 年6月8日
IBM的alphaWorks部门发布了easyXML Bean Suite，其中包括XMLHolder, XMLEleme
nt, XMLAttribute和XMLFileGenerator Java beans。easyXML Bean Suite允许Jav
a的应用程序处理XML。

1999年6月17日
Vertex Industries公司宣布了支持IBM MQ Series的接口（Interface）。Vertex
Industries已计划推出下一代中间件工具的新部件(Component)。这个名为Vixen的
模块为信息在XML文件和有效数据结构之间的传输和翻译提供了有效地手段。经过演
变的XML支撑技术和它的跨平台的功能使得在不同环境中运作的应用程序之间可以交
换数据。 VIXEN正在运用NetWeave Middleware和IBM MQ-Series作为平台间数据交
换的渠道。s

1999年6月30日
W3C XML布局标准 万维网联盟已经批准了一项规范，该规范允许开发人员设计XM文
档的布局，并迈出了允许开发人员通过XML 文档使用样式表的第一步。样式表可以
让使用者定义生成的文件，制定颜色，字体，或字体的大小等。

7月

1999年7月14日
Oracle免费奉献编程语言接口。Oracle不久前免费推出常用编程语言Java、C、C++、
PL/SQL之间的扩展标记语言（XML）接口，为的是方便对Oracle老的应用软件中数据
的使用。Oracle XML Parser for C和Oracle XML Parser for C++加入了Oracle已
有的Java和PL/SQL语法分析程序（parser）。C和C＋＋构件支持DOM(Document Obj
ect Model)和SAX(Simple API for XML)接口。这些语法分析程序连同Oracle Appl
ication Server一起使用，可用来访问Oracle 8和Oracle 8I中的数据。Oracle XM
L Utilities和XSQL Servlet产品可用来对Oracle数据库读出或写入XML数据。此外，
Oracle还推出了Oracle XML Parser
for Java的版本2.0，包括Extensible Stylesheet Lanuage Transformation处理器。
Oracle的新语法分析程序出台后，现有的商业应用软件无需改写就能使用XML。Ora
cle XML Parser for Java版本2.0不但能使XML文件之间可以互相转换，而且能变化
XML至其他格式，如HTML，或提取数据然后存入Oracle 8I数据库，一次完成。

1999年7月14日
Clarus 公司是世界领先的网络应用供货商。它联合工业界领先的合作伙伴一起宣称
支持XML作为电子商务和应用的统一标准。

1999年7月16日
资金交易的革命。
FXMarketT是一个革命性的网上在线外汇兑换交易系统。 这个新的信息系统是一个
透明的"市场交易者"。它提供私有交易和价格查询的服务。
每一宗交易, 交易者都能通过屏幕时时察看自己和其他重要的交易。
Forex Digital Services, Inc(Forex数字服务有限公司)使用的是XML技术。这将有
利于建立一个全球跨平台的外汇兑换管理通信系统。 XML将成为Forex的国际标准。

1999年7月20日
OASIS(the Organization for the Advancement of Structured Information Sta
ndards结构信息标准开发组织)已经同意加入一个关于网络标准和电子商务的讨论组。
这个讨论组是由美国总统行政办公室下属的科学和技术政策办公室组织的。 这个讨
论组在7月20日讨论了变化中的技术,市场和环境将会怎样改变网络标准的发展,电子
商务和知识的管理。

1999年7月20日
XMLS(XMLSolutions Corporation )宣布已和LTP(Lisle Technology Partners)结为
战略联盟。 LTP从技术产品方向和资源两方向给XMLSolutions以支持。

1999年7月20日
XML Parser for Java(基于Java的 XML解析器)更新了。现在已有了2.0.13版本。新
版本中包括了旧有的DOM(Document Object Model 文档对象模式),而且被系列化了。
XML解析器是完全用Java编写的。它包括用于解析,产生,管理XML文件的类和方案。
请参见: http://www.alphaworks.ibm.com/tech/xml4j。

1999年7月21日
OAGI(Open Applications Group Inc. 开放式应用工作组)宣布了一个向导计划,用
以把OAGIS(Open Applications Group Integration Specification 开放式应用工
作组整体说明)中的 XML定义移植到BizTalk 框架说明中来。包括了Candle 公司,
Compaq Computer 公司,HK Systems 有限公司。, IBM 制造系统, Microsoft, NEC
公司。, PeopleSoft有限公司, 和 PricewaterhouseCoopers。在OAGI中的XML工作
组打算更新现有的基于W3C XML 1.0版本说明的OAGI XML文件。 OAGI的目的是构造
一个可兼容的XML-schema文件集合。并把它公布于BizTalk组织的资源库中。

1999年7月23日
IETF与W3C支持数字签名
IETF和W3C在日前举行的第45届IETF会议上宣布，将联合推出支持Web上数字签名的
策略。双方将使用XML实现数字签名，数字签名使用公用和专用密钥加密以识别用户。
为这项技术制定XML标准是非常重要的，因为XML应用程序逐渐成为热门。许多公司
在借贷票据和其他文件上使用XML格式，它们需要通过不同的应用程序读取申请者的
签名。这项标准将制定一套XML标记，它把数字签名标记为加密的识别码，并且映射
到相应的Web资源上，如证书供应商用于认证的URL上。XML将与现在的X.509或是PG
P证书加密技术配
合使用。合作双方希望年底能够推出标准。但是XML数字签名也面临着一些问题，因
为人们对由密码提供商这类的第三方来验证签名缺乏信任。政府是值得信任的第三
方，但政府这么做的可能性很小。美国政府就不希望成为签名数据库的管理者。可
能这么做的机构是银行或美国邮政总局，他们可将处理数字签名作为他们传统服务
的延伸。

1999年7月23日
XMLWriter 和XMLNorm 发布了。
请详见: http://www.oasis-open.org/cover/megginsonJavaCl19990721.html

1999年7月26日
DTI (Digital Telecommunications, Inc. 数字通信有限公司)发布了语音服务的
基于网络的基本框架(Architecture)。 ESP(Extensible Service Policy 可扩展的
服务策略)的基本框架使得第一次人们能利用网络技术在当今的网络系统或是下一代
网络系统上实现动态实时语音通信。

1999年7月26日
SoftQuad和Object Design两家公司在下一代XML网络印刷应用方面结成战略联盟。
它们宣布把SoftQuad的XMetaL XML 作业环境同Object Design的eXcelon XML 电子
商务信息服务器结合起来。

1999年7月27日
Commerce One 公司发布了CBL (Common Business Library公用商业资源库)2.0.版
本。
CBL是工业界第一个被Microsoft, CommerceNet, UN/CEFACT 和 OASIS认证的覆盖面
广泛的XML文件资源库。 CBL的目的是加速网上电子商务的发展。有了CBL 2.0定义
的文件框架,我们可以在网上准确无误的交换各种样式的文件。

1999年7月28日
ADVISORY/META工作组电话会议内容: XML的未来。
ADVISORY/META工作组预言:到2004年, XML 得市场将消失。因为它将成为一个重要
的内嵌基本技术。它将很快融于平台之中。 ADVISORY/META工作组提醒各个公司在
为纯XML技术开发投入巨额资金时要十分小心。
如果您对ADVISORY/META工作组有兴趣,请参见:http:// www.metagroup.com。

9月

9月13日
Carta公司在它的完整的中期电子商务方案中结合了XML和BizTalk的框架。
Carta公司是加州的一家网络技术公司。它在它的InStore eCommerce产品中加入了
XML标准。InStore是一个完整的中期电子商务方案应用，它是建立在MCIS（Micros
oft Commercial Internet System微软商务网络系统）之上的。Carta在它的产品中
运用了BizTalk的框架使得它的终端后台商务应用能严密结合，以实现真正的终端电
子商务应用。

9月13日
微软发表电子商务蓝图
看好网络购物的增长潜力，微软公司宣布推出其电子商务架构BizTalk以及相关产品
Commerce Server、Small Business CommerceServices、BizTalk Server，而为了
建立MSN入口网站上的购物目录，微软最近兼并了CompareNet公司。
依据IDC的预测，今年全球上网人口将达到1.47亿人，其它的调查资料也指出，199
8年圣诞节时网上交易量比1997年增加230％，显示出电子商务市场的潜力无穷，而
微软将通过BizTalk来整合各种平台，并由微软入口网站MSN来提供行销服务，使得
各种规模的企业皆可利用网站拓展业务。
微软的电子商务是以Windows NT Server、SQL Server为基础，企业可运用BizTalk
Server、Commerce Server、Small BusinessCommerce Services建置电子商务网站。
微软希望能在今年内让全球上百万家的企业进入电子商务的领域。
据称，Commerce Server可为中大型企业建置功能强大的网站，Small Business Co
mmerce Services则可使小型企业迅速建置网站，至于BizTalk则采用XML及业界标准，
借此可整合各种平台、系统，未来微软的Windows、Office、BackOffice都将支持B
izTalk。
微软将使MSN成为买卖双方交易的公开市场，为此，微软已兼并CompareNet购物网站，
同时微软也计划与AltaVista等单位共同推动微软护照（Microfost Passport），使
消费者登录一次即可在网络上通行无阻。

9月14日
S2 Systems 和 Sequoia Software宣布它们将在电子商务上合作以推动医疗保健产
业的发展。
S2 Systems是一家全球领先的专门提供电子商务产品的公司。Sequoia Software是
一家提供交互入口方案的公司。它们的合作是为了建立基于XML 的电子医疗保健方
案。特各反感将为医疗保健交费用户，供货商，职员团体和医疗保健品消费者提供
在线的信息传输服务。这种方案是基于NT系统的。

9月14日
开发者们在网络标准上存在分歧。
八月份W3C向业界推荐了Extensible Hypertext Markup Language (XHTML)作最终评
价。胆子从那以后，他们就没了开始的劲头。现在开发者们还没能统一意见，到底
是用那个标准主导网络浏览器。
XHTML重写了现阶段普遍实用的HTML。重写之后每个独立的工业都能跟去自己特别的
要求比较方便的设计网页。有了XHTML之后HTML可以用XML重写。一些XML开发者抱怨
XHTML中使用namespaces过于松散。现在的分歧在于区分namespaces的网络地址，或
者说URLs的实际使用。

9月16日
未来数年间微软计划将透过Windows 2000及相关应用软件，满足所有用户开发网页
的需求。这标志着微软的大量产品计划重心偏于网页。
微软工作短期目标是强化Windows 2000的功能。根据微软有关其Windows DNA（Dis
tributed interNet Architecture） 2000软件的技术细节来看，微软希望凭借自己
在业届的巨大的影响力推动开发者编写电子商务上应用的软件。很显然微软非常希
望能够在迅速发展的电子商务市场上抢占重要的份额。
中期目标是更新Visual Studio工具包。
长期目标是推动XML的发展。微软给于了XML高度的评价："资料、商务运作、应用软
件及物件在网路上充份交互运作，XML是支持它们主要的技术。"微软将让所有操作
系统和全套BackOffice都支援XML

9月16日
微软和SAP合作，旨在使移动通信设备和商业软件结合起来。
SAP是德国软件届的一家很有影响的大公司。他们的联合是通过BizTalk框架把基于
Windows CE及其它操作系统的移动通信设备和SAP公司的商业应用软件连接在一起。

9月16日
IBM正在筹划建立一个新的网站。这个网站的目标是为开发商们提供有益于开发软件
的信息，资源和建议。这个新的网站叫做DeveloperWorks。它涵盖了Java编成语言，
XML网络标准和开放资源的Linux操作系统。它还计划关注电子商务相关软件的结构
和为设计非英语软件的Unicode的发展。
这个新的网站将在两个星期内推出，当然它在完全成熟之前，还是要经过几个月的
beta测试。

9月20日
BizTalk应用框架得到了能源界主流企业的支持。美国石油研究会（The American
Petroleum Institute）和核子能技术公司宣布支持应用于电子商务的XML框架。
美国石油研究会的财会，电子商务经理Kendra Martin说："我们之所以选择了BizT
alk，是因为它有最好的资金支援，它对垂直结构市场所制定的标准也是最好的。有
了BizTalk，我相信我们能和更多的公司和标准制定者们合作，更快更好的从XML给
电子商务带来的好处中获利。"
Martin还列举了BizTalk可能给石油产业带来的好处：
1．BizTalk可以使新的，必须合并的产业实体更方便的合并。
2．位用户服务的发展速度会大幅度提高。
3．合并多元商业单元会带来更多活力。
4．公司和消费者，合作商之间的联系更加丰富。在电子商务中建立更多新的商业联
系变得更加容易。

9月21日
此新闻引自ChinaByte。
IBM揭开了一种新数字钱包技术的面纱，并表示，它正在和MasterCard合作开发使用
这种技术的系统。按照所制定的计划，MasterCard将提供业内第一种兼容电子商务
标示语言（ECML）的电子钱包。
     电子商务标示语言（ECML）是由IBM，MasterCard，微软，Sun，以及其它几个
企业在今年6月发布的，是一种开放式的标准，允许任何一位商家接受来自任何一种
兼容ECML电子钱包所输入的信息。这种技术可以使钱包供应者迅速"发现"网上购物
表格需要填写的区域，并以电脑速度自动传送正确的数据，整个过程只需IBM消费者
钱包用户点击"自动填写"选项。使用 IBM消费者钱包，网上购物者只需输入一次自
己的信用卡信息，并把它安全地存储在一个图标（或者"钱包"）中以备将来网上购
物之用。
     目前，MasterCard还在开发自有品牌的消费者钱包，以提供给自己的会员银行
使用。IBM表示，它和MasterCard之间达成的协议，还可以使MasterCard的会员银行
通过一个特别联盟程序，获得自己的电子钱包。另外，MasterCard还计划对现有的
安全电子交易（SET）钱包进行升级。

9月21日
开放的eBook印刷结构说明1.0版本（Open eBook Publication Structure Specifi
cation version 1.0）在微软提出这个建议的一年之后终于正式出台了。这将加速
电子出版业的发展。
这个说明将对书籍格式加以描述，便于书籍在望商方便地数字地传输。它是基于XM
L说明的。这显然有益于用户在不同的界面下浏览文章。
如果您对这个说明有兴趣，可以浏览http://www.openebook.org/

9月22日
XMLSolutions 发布XMLZip。
XMLSolutions 公司是E2E的领导企业,今天宣布最新的为Windows NT 和 Linux操作
系统服务的XMLZip面世了。这是工业界第一个压缩XML文件的工具。这位处理大型的
XML文件提供了方便。 大型的XML文件占用了服务器和客户端过多的传输时间和存储
空间。
XMLZip允许用户决定压缩的程度。这使得在连续使用DOM API时不至于降低应用的水
准。
举一个例子,一个1.2 Mb的XML文件经过XMLZip处理后只剩136-kb了!

9月22日
OASIS(the Organization for the Advancement of Structured Information Sta
ndards 促进结构信息标准组织) 今天宣布webMethods将成为Robin Cover XML(www.
oasis-open.org/cover/)网站的最新赞助商。 WebMethods提供大量的文献和标准。
它是工业界一个在线的资源库。各种有关结构信息标准的信息。包括XML, SGML, H
yTime等等。比如说:教程,介绍, XML喜爱工业界的应用实例,研讨会议的详细清单,
XML的软件清单,软件制造商和服务上的莲子信息, 和XML相关的标准信息,和常见问
题回答。

9月23日
Harbinger宣布支持微软的BizTalk Framework在电子商务的应用。
Harbinger公司是一家跨过电子商务软件,服务商。她今天宣布,它将与微软合作,支
持BizTalk Framework。同时,他还宣布将与微软共同建立标准,把XML schema运用到
在线目录管理系统中去。
它们合作主要在于四个方面:
1. 将BizTalk Framework加入到Harbinger新产品中去。
2. 和微软共同制作在线目录管理系统的标准。
3. Harbinger将使它的harbinger.net(SM)电子商务接口可以交换BizTalk兼容的XM
L文件。这使得它的网络用户可以方便的接收到XML文件。
4. Harbinger打算通过支持BizTalk Framework来支持它的TrustedLink(TM)。这使
得Harbinger的40,000用户可以享受在线的BizTalk兼容的XML文件的翻译。

9月27日
Asymetrix Ships ToolBook II Instructor 7.1 将提供对ICC, DHTML, XML 和Act
ions Editor的支持。
Asymetrix Ships ToolBook II Instructor 7.1 是一个强力升级的编辑工具。 As
ymetrix Learning Systems公司是一家在线学习软件的领头企业。它今天宣布, To
olBook II Instructor 7.1 版本7.1正式发布了。 这是一个为专业开发商,编程者,
设计指导者,和培训员准备的在线编辑软件。

9月27日
SciQuest公司成功演示了在Ariba Network 电子商务服务cXML(Commerce XML) 流水
线上的在线买卖过程。
SciQuest公司是一个领先的基于网络的交互式网上市场。它主要提供医药,生物,化
学以及教育组织的试验产品。 它与今天宣布, 成功演示了在Ariba? Network(TM)服
务器上成功的,安全的店址商务交换。

9月28日
webMethods将cXML(Commerce XML)交换推向Ariba Network。
WebMethods公司是一家为商业界实现联合提供开放解决方案的领先企业。它与今天
宣布它提供在Ariba? Network(TM)平台上进行快速安全电子交换的解决方案。

9月28日
X-Collaboration软件公司和微软将推出一个关于Phoenix的中小型商业的研讨会。
X-Collaboration软件公司(X-Collaboration Software Corporation XCSC)是一个
网络合作服务的公司。它和微软今天宣布,它们将推出一个关于Phoenix附近的中小
型商业的研讨会,主要是怎样利用XML,网络合作以及Office 2000来增强知识和信息
的管理。
研讨会将由微软代表主持, 他将提出微软对通过在网络上整理,编辑,印刷文件来提
高生产效率的观点。
研讨会将于10月13日早上9点在Phoenix, Arizona的微软分支机构中举行。

9月28日
Bentley的ModelServer Integrator宣布支持XML and aecXML。
Bentley合作公司今天宣布它的基于网络的ModelServer? Integrator(TM)产品支持
XML and aecXML(architecture, engineering and construction XML)。 ModelSe
rver Integrator从不同的数据库和软件应用中收集信息,然后及时迅速地吧信息在
整个组织的成员面前表现出来。 ModelServer Integrator对XML的支持使得用户们
可以充分利用在电子商务数据交换中已有的各种支持工具,技术和标准。

10月

10月8日
SYS-CON宣布正式发行XML-Journal(XML杂志)。
SYS-CON是Java Developer's Journal(Java开发者杂志)的发行商。它为XML和网络
开发商们提供有价值的新闻,以及XML 工业标准,跨平台开放XML 建设的有用信息。
XML-Journal是一本全新的,夜市第一本专门关注XML技术的双月刊杂志。您可以从w
ww.XML-Journal.com获得更多信息。

10月20日
XML Global 建立了一个开发XSLT网络通信标准的联合论坛。
XSLT (extensible stylesheet language transformations)是可扩展样式表转型语
言的简称。XML Global是一家XML提供商业方案的公司。它今天宣布为XSLT (www.X
SLT.com)提供一个新入口网址。这样能给网络开发商和编程者以更多更便捷的信息
服务。
XSLT正在快速成为Internet上XML转型处理的主干语言。

10月21日
Excelergy发布能源分化工业XML标准资源库。
Excelergy公司是能源分化工业的技术领头羊。今天它正式宣布发行专业的能源分化
工业XML标准资源库。Excelergy致力于在激烈竞争氛围中，为客户和服务零售商提
供开放的通信方法。

10月25日
System 1软件公司同意为商业器材金融业定制和推广特定的BizTalk Schema。
System 1软件有限公司是商业器材金融业中电子商务和投资者方案设置的领先企业。
今天它宣布它已设计和推广了一个基于微软BizTalk Framework的商业器材金融业专
用schema。
除此之外，System 1软件有限公司也加入到了微软BizTalk服务器beta版的设计编程
中来了。这是为了使得BizTalk服务器和schema能完美地和System 1的产品兼容。

11月

11月2日
Commerce One宣布工业界的第一个电子商务XML开发工具集XDK。
XDK 1.0版本将推动在工业界通过使用XML Schema文件广泛实现一体化的发展。XDK
是全世界第一个XML schema工具集。毫无疑问地它将促成工业界基于XML的电子商务
发展。它是面向开发者的一套工具，您可以从Commerce One的MarketSite免费下载
得到(www.marketsite.net)。

11月4日
OAG(Open Applications Group开放应用组)向BizTalk.org提供电子商务XML Schem
a。
OAG是最大的XML印刷商。它今天宣布它向BizTalk.org提供了122个商务交换XML Sc
hema。

11月5日
ConneXt通过XML加快消费者信息系统的应用进程。
ConneXt有限公司是西雅图的一家软件公司。它主要的发展方向是为器材市场提供先
进的报价，客户端服务解决方案。ConneXt宣布它的ConsumerLinX解决方案在各种应
用编程界面上支持XML。

11月12日
e-conten组织了一个主体是XML电子商务的贡献系列研讨会。
e-content是Interleaf有限公司的一家子公司。 它提供基于XML的电子商务解决方
案。今天它宣布组织一个系列研讨会。这个系列研讨会主要讨论XML和无线网络技术
对传统商务模型的冲击。 系列研讨会的标题是"XML，电子商务，无线网络的力量"。

11月17日
Netfish Technologies已挤身全球电子商务解决方案提供商发展最快者行列。
Netfish Technologies是一家基于XML的电子商务解决方案提供商。它已经被Oracl
e列为全球前50位的电子商务解决方案提供商。这项角逐是四月份开始的。共有28个
国家的公司参加了评选。

11月17日
e-content推出第一个可升级XML动态网络服务器。
e-content是Interleaf有限公司的一家子公司。 它提供基于XML的电子商务解决方
案。它今天宣布第一个可升级XML动态网络服务器BladeRunner Web(TM)。这是为下
一代网站服务的服务器。BladeRunner Web提供的是对端对端XML内容的管理。这使
得提供XML内容的一端，可以向几乎任何一种网络终端发布几乎任何一种形式的文件。

11月20日
W3C推出XSLT与Xpath建议。
W3C推出XSLT（XSL Transformations）与XPath建议。这是W3C推出正式标准之前的
最后一步。它们主要的功能是对XML文件的转型与样式表现的控制。如果您想更多的
了解它们，请参看XSLT，Xpath。

11月30日
ACORD和 IFX论坛宣布在XML标准的发展上展开合作。
在San Francisco召开的ACORD半年度标准会议上，ACORD宣布承认与IFX(http://ww
w.IFXForum.org)论坛的成员互相认可制度。它们都是致力于保险和金融业数据电子
交换XML标准的组织。它们的合作集中在基于IFX标准和ACORD保险业XML推荐标准，
以制定一个支持基于XML交易的框架。

12月

12月1日
RosettaNet发展道路上的一个里程碑，发布了第一批10个XML PIP说明。
RosettaNet是一个独立的联盟。它的目标是提供连锁电子商务标准。今天宣布发布
第一批10个XML PIP（XML Partner Interface Processes）说明。

12月1日
来此全球的不同组织支持ebXML全球电子商务动议。
EbXML（电子商务XML动议）是United Nation/CEFACT 和 OASIS的一项联合动议。它
已吸引了全球各种组织的支持。在San Jose召开的大会中，有来自全球不同组织的
120名的代表。它们包括ACORD，Accredited Standards Committee (ASC) X12，Co
mmerce One，DataChannel，DISA，UN/EDIFACT, IBM，OAG，Oracle，Sun Microsy
stems等。

12月2日
XMLSolutions 在网上演示EDI-to-XML翻译。
XMLSolutions宣布任何EDI系统的用户可以通过访问www.xmls.com 把任何标准的X1
2 或是 EDIFACT文件翻译成XML。
XMLSolutions收到EDI文件之后将运用XEDI方法实现EDI-to-XML翻译(www.xedi.org)。
然后通过电子邮件把翻译发还给用户。

12月6日
微软今天宣布BizTalk Framework 文件说明1.0版本正式出台。BizTalk Framework
文件说明为基于XML的解决方案提供的技术专用说明。它使得在线交易和网络信息
交换变得轻松自如。

12月8日
中国XML联盟举行第一次开放式宣讲会。宣讲会的主题有：《Application Integra
tion Using XML》，《中国XML联盟发展研究报告》，《中国XML联盟发展计划》。
宣讲会取得了圆满的成功。

12月8日
W3C与WAP论坛宣布正式联盟关系,共同制定下一代网络的说明。
W3C（万纬网联盟）与WAP（Wireless Application Protocol无线应用协议http://
www.wapforum.org）论坛今天宣布共同制定下一代网络说明，来保障无线设备接入
网络的成功。

12月13日
Workforce eServices 的主要提供商Icarian宣布加入HR-XML Consortium。
Icarian公司是Workforce eServices的主要提供商。它今天宣布加入新成立的HR-X
ML Consortium。HR-XML Consortium是一个非盈利性联盟。它的主要方向是建立和
推动和人力资源相关的XML标准的制定。这些标准可以为商业间电子商务交换和公司
内部信息交换中的人力资源部分提供依据。
HR-XML也有其framework，它的功能是使得人力资源应用的内部和外部信息自由交换
成为可能。
您可以在http://www.hr-xml.org/找到HR-XML Consortium的主页。

12月14日
XMLSolutions加入联合国和OASIS的行业，宣布支持ebXML全球动议。
XMLSolutions今天宣布支持ebXML全球动议（Electronic Business XML Initiativ
e）。联合国和OASIS已经提出了这项动议，用来统一标准化全球XML商业标准。EbX
ML邀请各种组织加入它们的行业来意通知定义给统一的XML框架。已经有超过50家公
司，联盟，全球化标准组织加入了这个行列。

12月15日
OASIS为XML.org 的注册/资源库发布草稿说明。
OASIS今天宣布OASIS注册/资源库技术说明草稿正式公开。新的说明将运用于XML.o
rg 的注册/资源库建设当中去。它将便利XML资源库跨网络的互操作性。

12月15日
OASIS把XML-DEV加入到XML.org中。
OASIS揭示了它将把XML-DEV这个邮件组加入到它的业界接口XML.org中去。XML-DEV
邮件组始于1997年。它是一个开放的全力支持XML应用于发展的邮件组。它一直是寄
身于英国的Imperial College。在XML 99大会的闭幕式上，来自英国Nottingham大
学的Peter Murray教授正式宣布XML-DEV将移居XML.org，成为OASIS的资源。

12月21日
OpenBox实验室为开发商提供XML协议工具的网上接口。
Innovision公司是XML协议的领头羊。它与今天宣布OpenBox实验室已经有了它的公
共网络接口http://www.innovision.com。OpenBox实验室专为企业开发商和工业标
准组织提供先期的XML技术服务。

12月23日
XMLFund向Digital Counterpart投资，用以加速基于XML的电子商务解决方案的发展。
Digital Counterpart Inc （DCI）是网络OSS（operations support system）软件
解决方案的提供商。专为通信服务商提供解决方案。它已成功的获得了XMLFund的第
一批投资。
DCI的eCounterpart(TM) 解决方案应用尖端的XML技术为通信服务商提供强大的应用。
如：基于网络的订单接入，跟踪和管理应用。又如为通信公司提供的自动双向网关
功能。

--
山居且喜远纷华，俯仰乾坤野性赊。
千载勋名身外影，百岁荣辱镜中花。

金樽潦倒秋将暮，蕙径萧瑟日且斜。
闻道五湖烟境好，何缘蓑笠钓汀沙。

※ 来源:·BBS 水木清华站 smth.org·[FROM: ftp.xjtu.edu.cn]
返回上一页 回到目录 回到页首 下一篇


[范文][XML]关于XML的若干发展动态 (转载)

 发信人: DDG (导弹驱逐舰~雾的季节), 信区: XML
标 题: [范文][XML]关于XML的若干发展动态 (转载)
发信站: BBS 水木清华站 (Thu Apr 6 13:31:06 2000)

【 以下文字转载自 New_board 讨论区 】
【 原文由 aBadBoy 所发表 】
2月17日
internet.com和mondus.com签署一项电子商务协议。
internet.com（http://www.internet.com）是一个电子商务因特网技术网络。
mondus.com（http://www.mondus.com ）是一个专为中小企业赢取配额的电子交易场所。
两家公司的业务都会因此大幅度提升。

2月17日
Oracle雄心勃勃，打算在操作系统竞争上再次胜出。
Oracle今天宣布服务于Windows 2000(TM)的Oracle8i(TM) Release 2面世了。Oracle是
Windows NT数据库市场中的主导力量。Oracle8i(TM) Release 2的面世提升了数据库方面
的表现，并且能与微软的最新操作系统很好的结合。
从最新的Dataquest市场调查报告中看，Oracle在Windows NT上的数据库相关股份占了
47.3%。从Oracle的技术网络（OTN）上，下载了共大约160,000份Windows NT 上的
Oracle8I拷贝。Oracle8I是现今唯一的失传操作系统上支持Java 和 XML的数据库。
您可以从以下网址下载Oracle8i(TM) Release 2：http://technet.oracle.com 。

2月16日
巴尔默亲自展示了微软最新研制的编程开发工具Visual Basic 7.0。
星期二在离微软发布视窗2000会场不远的地方，微软首席执行官兼总裁巴尔默亲自展示了
微软最新研制的编程开发工具Visual Basic 7.0。这套软件预计今年下半年开始销售。
Visual Studio 7.0增加了许多基于XML和COM++的开发工具，支持拖放式Web服务，使分布
式计算大大简化。这套软件的一个特性ASP++ Web Forms可使程序员开发出Visual Basic
格式的表单供网上发表。这样一来，开发表格风格的应用程序就可以被运用到互联网领域
。
此新闻摘自ChinaByte。

2月16日
XMLFund向Fishmonger.com投资。
Fishmonger.com是一家芝加哥新成立的渔业公司。B2B中，全球渔业市场网上成交量达到
352，000，000，000美元之多。

2月15日
Sun-Netscape 联盟iPlanet(TM)电子商务解决方案支持XML Connect(TM)。
OnDisplay今天宣布一个Sun-Netscape 的联盟iPlanet(TM)电子商务解决方案支持
OnDisplay的XML Connect(TM)动议。XML Connect(TM)是一个免费的，可下载软件。致力
于建立无需XML服务器的安全可靠的XML商业文件传输。

2月15日
Information Architects 和Red Hat联合努力推动Linux上基于XML的内容动态集散解决方
案的产生。
Information Architects（iA http://www.ia.com ）是一家专门提供基于XML的内容动态
集散解决方案的公司。它今天正式宣布加入Red Hat的Independent Software Vendor
Partner（独立软件提供上合作伙伴）计划，共同推动Linux上的电子商务。

2月14日
XMLFund向XML Global Technologies投资。
XML Global有两项主要技术产品。一是GoXML(TM)（http://www.goxml.com ），XML内容
搜索引擎。二是DataXCHG，一个XML/EDI电子商务转型引擎。这两项产品都是网络B2B交易
中所必不可少的。由此吸引了XMLFund不小的投资。

2月14日
XMLSolutions推出独一无二的双向XML-EDI交易解决方案。
XMLSolutions推出独一无二的双向XML-EDI交易解决方案。 XMLSolutions是一家顶尖的提
供基于XML的EDI解决方案和XML Schema管理产品的产品服务商。她今天正式宣布XEDI
Translator 1.0面世了。XEDI Translator使得从事EDI的公司可以自动的把文件转换为
XML。

------------------------------------------------------------------------------
--

1月27日
XHTML开辟了Web的新领域。
万维网联盟（W3C）今天正式公布了XHTML（可扩展超文本标记语言）规范。它是用于互联
网的XML家族的首位成员。它更容易操作和使用，而计算机打开及处理此类文件也更快捷
。XHTML对HTML保持兼容性，这样网站维护人员就不用对原有的网页重新编写，而目前用
户使用的大多数常用浏览
器软件也可直接阅读XHTML文件而不用升级。

1月12日
ecomXML和RosettaNet一起努力推进B2B的电子商务发展。
EcomXML是一家B2B的电子商务解决方案的提供商。RosettaNet是一个发展和应用XML电子
商务标准的联盟（http://www.rosettanet.org/general/index_general.html ）。
EcomXML已经发布了它的ecomTalk Server beta版本。ecomTalk Server是为用XML实现的
供应链提供管理。

1月12日
infoShark提出的CARD Schema以被BizTalk.org正式接受。
InfoShark今天正式宣布它所提出的CARD（Commerce Accelerated Relational Data 商务
加速相关数据）Schema已由微软BizTalk框架所接受。

1月11日
Sequoia宣布它的XML Portal Server兼容微软的BizTalk 1.0版本框架。
Sequoia软件有了BizTalk框架的支持，就可以用XML消息来实现不同的信息系统的整合工
作。Sequoia软件公司是一家提供企业动态信息接口（enterprise information portals
EIP）的领先企业。

1月10日
XML受亲赖，OASIS资助增长创历史新高点。
一批来自欧洲，北美洲和亚洲的组织加入到支持OASIS，这个全球性的推动XML应用的非盈
利性组织，的行列中来了。新的组织包括：Aerospatiale， Bowstreet， Cohesia,，
eCredit.com，InformIT， JetForm，NII Enterprise Promotion Association，ProNet
Technology Partners 和
StreamServe。

1月6日
Sterling Commerce和Edifecs Commerce联合提供XML电子商务整合解决方案。
Sterling Commerce今天宣布Edifecs的SpecBuilder正式面世。SpecBuilder是Sterling
Commerce的GENTRAN商业整合过程中的一项可扩展功能项。E-Business
Communities。有了GENTRAN和SpecBuilder，一家公司可以方便地实现以XML，EDI和其他
专用商业格式存储的信息整合。现在加入一个新的电子商务伙伴开销减少了百分之二十五
。

1月5日
Flashline.com 组建资源库的后台是eXcelon应用平台
eXcelon应用平台是Object Design基于XML的产品。它主要是用来支持动态数据交换。
Flashline.com 组件资源库是业界第一个开放的组件XML文档集。提供各种组件信息。您
可以在http://www.componentregistry.com/entrypage.jsp 找到它。

1月5日
OASIS为协调XML联盟设立新职位。
OASIS今天任命Scott McGrath为首任会员服务总监（Member Services Manager）。这是
一个全新的职位，将负责协调130多个非盈利性国际XML组织。

1月5日
uBid.com依靠微软基于XML的E-Commerce Site建构全球最大的商务网站。
uBid.com宣布与微软结成战略联盟。
uBid.com是一家全球领先的在线拍卖和电子商务站点。大今天宣布uBid.com采用微软
Windows DNA平台上的XML技术来建构它的站点。这是全球最大的基于XML的再现商务站点
。如今uBid.com几乎抢占了所有运用XML的交易。和同类网站相比，它是最好的。
为了提升整个站点的运作，uBid.com最近重新设计了它的报价引擎。它现在运用了一系列
微软的组件：MSMQ，MTS和COM。所有的组建都在微软的服务器环境中运作。
uBid.com主页位置在在 http://www.ubid.com/。

1月5日
Harbinger的XML注册用户达到创纪录。
Harbinger是全球最大的网络电子商务软件，服务和解决方案的提供商之一。它今天宣布
已有超过40%的注册用户在1999年中选择了基于XML的技术。这将大大加速商业对商业（
B2B）在网络上的发展。

1月5日
免费的电子商务词汇表2.0版本推出啦！
Profile Systems（www.profilesys.com）是一家电子商务解决方案提供商。它宣布包括
有1300多个定义的2.0版本已经推出了。它有一个标准的Windows帮助界面。这个词汇表将
对那些已经加入电子商务行列和即将加入的公司大有帮助。
您可以在http://www.profilesys.com/library/glossary.html免费下载电子商务词汇表
2.0版本。

------------------------------------------------------------------------------
--
12月23日
XMLFund向Digital Counterpart投资，用以加速基于XML的电子商务解决方案的发展。
Digital Counterpart Inc （DCI）是网络OSS（operations support system）软件解决
方案的提供商。专为通信服务商提供解决方案。它已成功的获得了XMLFund的第一批投资
。
DCI的eCounterpart(TM) 解决方案应用尖端的XML技术为通信服务商提供强大的应用。如
：基于网络的订单接入，跟踪和管理应用。又如为通信公司提供的自动双向网关功能。

12月21日
OpenBox实验室为开发商提供XML协议工具的网上接口。
Innovision公司是XML协议的领头羊。它与今天宣布OpenBox实验室已经有了它的公共网络
接口http://www.innovision.com。OpenBox实验室专为企业开发商和工业标准组织提供先
期的XML技术服务。

12月15日
OASIS把XML-DEV加入到XML.org中。
OASIS揭示了它将把XML-DEV这个邮件组加入到它的业界接口XML.org中去。XML-DEV邮件组
始于1997年。它是一个开放的全力支持XML

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 162.105.170.66]


xml.org.cn近况

 发信人: veb (君), 信区: XML
标 题: xml.org.cn近况
发信站: BBS 水木清华站 (Wed Apr 19 11:10:08 2000) WWW-POST

XML的朋友，您好：

我们正在组织规划和编写系统、全面的XML的教程，它的特点是内容详细，结构清晰，及
时更新充实。首先是拟订提纲，其次是整理、编写，再次我们也会把它以XML技术来实现
为方便易用的版本。现在我把我们暂拟的提纲附上，欢迎大家提出批评和修改意见，特别
期待您提出XML的应用实践的内容或要求，或者提供XML与其他技术结合的新领域新方向。
同时有兴趣参与我们写作的朋友欢迎您及时提出你希望参与的范围。“众人拾柴火焰高”
，相信我们凝聚集体的智慧能够会为广大的技术人员特别是XML联盟的朋友们提供最有价
值的教程。

欢迎在邮件列表中进行讨论，感谢您任何形式的参与和贡献！

孙一中
中国XML联盟

一，简介：
1.1.从SGML、HTML到XML
1.2.XML的哲学
1.3.XML发展现状
1.4.XML是什么？

翻译：<<XML The ASCII of the Future>>(有待翻译)
翻译：<<XML, Java, and the future of the Web>>(有待翻译)
翻译：<<The XML Revolution>>(有待翻译)
翻译：<<Media-Independent Publishing:Four Myths about XML>>(有待翻译)

翻译：<<Get Ready for the Awesome Power of SVG>>(已经翻译)
翻译：<<XML in 10 Points>>(已经翻译)

(请你推荐好的文章)

二，基础：
2.1.网络语言的发展
2.2.XML的产生
2.3.XML的特点
2.4.XML的应用
2.5.XML标准
2.6.DTD
2.7.Schema
2.8.Namespace
2.9.CSS
2.10.XSL
2.11.XSLT
2.12.XSL-FO
2.13.XPath
2.14.XPointer
2.15.XLink
2.16.XQL
2.17.User Agent Accessibility Guidelines
2.18.RDF
2.19.Web Content Accessibility Guidelines
2.20.将样式表和XML结合

三，实践
3.1.DOM
3.2.SAX
3.3.XML工具介绍
3.3.XML编辑工具和使用(XML Spy,XMLWriter,XMLEditor)
3.4.XML解析工具和使用(MS,IBM,Sun等)
3.5.XML和网站设计(网站实例介绍，JSP、ASPP等)

四，应用
4.1.XHTML
4.2.MathML
4.3.SMIL
4.4.SVG
4.5.OEB
4.6.WAP/WML
4.7.XML/EDI
4.8.ICE
4.9.VoiceXML
4.10.BML
4.11.CML
4.12.Pinnacles Component Information Standard :PCIS
4.13.Platform for Privacy Preferences(P3P)
4.14.Jigsaw XML Format (JXML)
4.15.Extensible User Interface Language (XUL)
4.16.XML和CORBA
4.17.SOAP

五，框架
5.1.XML Framework
5.2.Biztalk
5.3.EBXML
5.4.中国XML联盟提出的框架

六，其它
6.1.XML与数据库
6.2.XML与agent技术(Ask Jeeves,Kenya,E-speak)
6.3.XML与编码(XER)
6.4.XML-RPC
6.5.业界支持介绍
([Adobe][ArborText][CommerceNet][DataChannel][GCA][IBM][Inso Corporation]
[Interleaf][Microsoft][Microstar][Netscape][OASIS][Oracle][SoftQuad][Software
AG][Sun Microsystems][Sybase][Texcel][Vervet Logic][W3C][webMethods][XML.com][
Xmlu.com])

_____________________________________________
263首都在线--中国人的网上家园 http://www.263.net
精彩、免费、还能省上网费，快订阅索易电子刊物！http://www.soim.com
积（优）点，换（奖）品！http://www.thepoints.com

------------------------------------------------------------------------
You can win $1000 at eGroups!
Time-limited offer. Enter today at:
http://click.egroups.com/1/2863/6/_/733798/_/955975456/
------------------------------------------------------------------------

(1. to post)发文(要经过审核) china_xml_list@eGroups.com

(2. to recommend to your frineds) 订阅,发空信到 china_xml_list-subscribe@eGrou
ps.com

(3. to the mangers) 有问题找管理员 china_xml_list-owner@eGroups.com

(4. to cancel) 取消订阅,发空信到 china_xml_list-unsubscribe@eGroups.com

(5. to browse on the web) 网上浏览 http://www.egroups.com/group/china_xml_list
/
--

Powered by eXtensible Markup Language

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.112.99.209]


DevX.com XML Update: SOAP, BizTalk, and Super Sca

 发信人: drowsys (骗妹妹的坏坏虫), 信区: XML
标 题: DevX.com XML Update: SOAP, BizTalk, and Super Sca
发信站: BBS 水木清华站 (Thu Apr 20 04:28:12 2000)

DevX.com XML Update: SOAP, BizTalk, and Super Scalability

DEVX.COM XML UPDATE
XML Development News, Articles, and Information from DevX.com
(http://www.xml-zone.com)
Vol. 2 No. 6 April 18, 2000
Copyright 2000 DevX.com, Inc.
_____________________________________________________________
Sponsored by ObjectSpace
OpenBusiness: E-SERVICES MADE EASY.
Introducing OpenBusiness from ObjectSpace, the new leader in B2B
integration. With OpenBusiness, you can quickly create your enterprise's
publish/subscribe e-services portal, enabling stronger collaboration
throughout the value chain. OpenBusiness features modular components,
load and fault management, transaction integrity, secure centralized
storage of configuration information, and a universal communications
architecture enabling bi-directional communications. To download an
OpenBusiness White Paper, visit:
http://www.devx.com/ltLinkTrack.asp?linkid=250
_____________________________________________________________
IN THIS ISSUE:
** The Latest in XML News
** SOAP, BizTalk, and Super Scalability
** Compose Java Objects With XML at Run Time
** DevX.Com's Project Cool Resources
** Ask the XML Pro: Validate Data With Regular Expressions and XSL
** Discussions: StyleSheet Files and XSL
** Featured Download: eXcelon Stylus 2.0
** Construct an XML Application With VB at VBITS: Chicago
** DevX MarketPlace Specials
_____________________________________________________________
THE LATEST IN XML NEWS
* HP Plans Portal for Soup-to-nuts Offerings
http://mailer.devx.com/cgi-bin3/flo?x=dEoBohKmuwAuEoYhuY
* SAP Aims to Automate Supply Chain
http://mailer.devx.com/cgi-bin3/flo?x=dEoBohKmuwAuEoYKuh
* The W3C Publishes CSS3 Modularization
http://www.xmlhack.com/read.php?item=425
* DOM Level 3 Requirements Published
http://www.xmlhack.com/read.php?item=418

SOAP, BIZTALK, AND SUPER SCALABILITY
Microsoft's leading man on XML, John Montgomery, talks about the
company's "embrace and extend" strategy and speculates on Sun's
reaction.
http://mailer.devx.com/cgi-bin3/flo?x=dEoBohKmuwAuEoYBuK

COMPOSE JAVA OBJECTS WITH XML AT RUN TIME
Sergey Kalinichenko shows you how to compose and rearrange your
objects without recompiling simply by changing the XML definition.
http://mailer.devx.com/cgi-bin3/flo?x=dEoBohKmuwAuEoYmuB

DEVX.COM'S PROJECT COOL RESOURCES
Check out Project Cool to help you handle all your Web development
needs. Whether you're looking for hot tips or tutorials on JavaScript,
XML, or even just HTML, you'll find what you need at Project Cool.
http://www.projectcool.com/
* The Project Cool XML Zone takes you from a basic introduction to XML,
through detailed how-to tutorials and advanced techniques. Also,
check out our IE 5.0 behavior library and on-going interviews with
innovators who are applying XML to their own web projects.

http://mailer.devx.com/cgi-bin3/flo?x=dEoBohKmuwAuEohuuu
* Cure developer's block with Sightings. Check out Sightings daily for
great Web sites to inspire your own creations.
http://www.projectcool.com/sightings/

NEW ON ASK THE XML PRO
* Convert a Text File to XML
http://mailer.devx.com/cgi-bin3/flo?x=dEoBohKmuwAuEohAuA
* Validate Data With Regular Expressions and XSL
http://mailer.devx.com/cgi-bin3/flo?x=dEoBohKmuwAuEohgug
* Communicate With the Server Using XMLHTTP
http://mailer.devx.com/cgi-bin3/flo?x=dEoBohKmuwAuEohEuE

Looking for answers to your toughest XML programming questions? Ask
our XML Pro, Kurt Cagle, to point you in the right direction. You can
read the latest Q&As or ask your own question at
http://mailer.devx.com/cgi-bin3/flo?x=dEoBohKmuwAuEohouo

JOIN IN THE XML DISCUSSION
* <xsl:eval> and Parameters
http://mailer.devx.com/cgi-bin3/flo?x=dEoBohKmuwAuEohYuY
* StyleSheet Files and XSL
http://mailer.devx.com/cgi-bin3/flo?x=dEoBohKmuwAuEohhuh
* Relational and Recursive Data Using XSL
http://mailer.devx.com/cgi-bin3/flo?x=dEoBohKmuwAuEohKuK

Find out what your peers are discussing in the XML Applications
newsgroup. Ask questions, get answers from the pros, and share your
development experience at
http://mailer.devx.com/cgi-bin3/flo?x=dEoBohKmuwAuEohBuB

FEATURED XML DOWNLOAD: eXcelon Stylus 2.0
eXcelon Stylus is an XSL editing tool for building e-business
applications. It integrates data, stylesheet editing, and Web page
preview in a single visual environment. Its 'smart editing' capabilities
assist with all XSL and HTML instructions, and its 'visual backmapping'
technology allows for one-click debugging and maintenance.
http://mailer.devx.com/cgi-bin3/flo?x=dEoBohKmuwAuEEEYuA

The DevX download library features over 680 product demos, limited
editions, and preview versions so you can try a tool and see if it's
right for you. Check out this week's selection, or look through the
entire library at
http://mailer.devx.com/cgi-bin3/flo?x=dEoBohKmuwAuEEKKuK

CONSTRUCT AN XML APPLICATION WITH VB AT VBITS: CHICAGO
Upgrade your XML skills at VBITS:Chicago, May 22-26. Discover how to
build applications that search, sort, manipulate and edit XML
documents with Visual Basic. Learn from real-world examples and get code
you can put into practice immediately! For more information, and to
register go to
http://mailer.devx.com/cgi-bin3/flo?x=dEoBohKmuwAuEohmum

MARKETPLACE XML SOFTWARE SPECIAL: PROTOVIEW ACTIVEX COMPONENT SUITE 7.
0
A VBPJ award-winning tool! With the latest in browser support,
database access and advanced UI display capabilities, the ProtoView
ActiveX Component Suite is your single source for components.
Retail Price: $695
DevX Price: $629
Premier Club Price: $566.10 - Buy Now and Save Over $125!
http://mailer.devx.com/cgi-bin3/flo?x=dEoBohKmuwAuEoKuuA

MARKETPLACE XML BOOK SPECIAL: XML APPLICATIONS
Check out this Builder.com Bookstore bestseller! Discover the immense
potential of XML!
Retail Price: $49.99
DevX Price: $39.99 - Buy Now and Save 20%!
http://mailer.devx.com/cgi-bin3/flo?x=dEoBohKmuwAuEoKAug

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 162.105.23.183]


stn (45#钢[

 发信人: stn (45#钢[http://flashop.home.chinaren.net]), 信区: XML
标 题: 互联网信息共享有了新标准 (转载)
发信站: BBS 水木清华站 (Sun Apr 23 21:09:19 2000)

【 以下文字转载自 News 讨论区 】
【 原文由 was 所发表 】
互联网信息共享有了新标准

------------------------------------------------------------------------
--------

http://www.sina.com.cn 2000/04/23 12:26 华声报

    华声报讯：互联网行业标准组织W3C日前发布了扩展超文本标识语言XHTML（1
．0版）。XHTML是将超文本标识语言HTML（4．0版）与扩展标识语言XML相结合的
产物。《北京青年报》报道，作为互联网信息共享新的技术规范，它对互联网下一
个阶段的发展将起到巨大的推动作用。

    内容开发商用XHTML1．0标准制作的Web文件既兼容现有的HTML浏览器也能够被
具备XML功能的软件处理。专家指出，网络信息共享规范由HTML发展到XML，意味着
今后互联网上发布的信息都将具有“一次编制，随处阅读”的特性，能充分满足人
们日益增长的在移动中接入互联网获取信息的要求。

    W3C免费提供一个软件工具Tidy，供人们将HTML4格式的文件转换为XHTML格式
的文件。W3C 负责人TimBerners-Lee说：XHTML1．0将互联网的今天和明天连接起
来，它为网页作者和网站建设者提供了一个进入XML世界的桥梁。

--
走吧 女孩 去看红色的朝霞
带上 我的恋歌 你迎风吟唱
露水挂在发梢 结满透明的惆怅
是我一生最初的迷惘......

※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.162.138]


国际电信厂商决战无线互联网

 发信人: JoyKiller (希望永在), 信区: XML
标 题: 国际电信厂商决战无线互联网
发信站: BBS 水木清华站 (Tue May 23 14:58:36 2000) WWW-POST

    .Com要让位.Move

    信息产业部计算机推进司副司长赵小凡日前断言：网络经济所出现的“.com”现象已
是一浪高过一浪，下一个热点必然是“.move”—移动的互联网。赵小凡先生预测，移动
上网的用户量到2002年肯定会超过通过PC上网的用户，届时，中国的互联网用户可达6500
万，其中移动上网的用户可达3000万。据赵小凡介绍，移动电话用户的大量增加也给移动
互联网的发展提供了坚实的基础。据其预测，今年移动电话的新增用户可达2500万，加上
有500万的用户在今年要更换手机，因此移动电话的市场需求可达3000万。手机是不缺了
，问题是人们拿手机干什么，WAP技术的推广，无疑给移动电话的用户提供了新的增值服
务。也就是说，如有3000万个手机中，有500万个有WAP功能，那无疑给移动互联网提供了
更为广阔的发展空间。无线互联产业本身就孕育着无限的商机。一家国际著名咨询公司的
一份研究报告称：今年全球售出的手机中，大约有15%准备上网；全球移动商务的收入将
在未来3年内翻两番—从2000年的127亿美元跃升到2003年的554亿美元，而这些收入大约
有20%来自亚太地区。另据预测，今年年底中国内地手机用户有望达到7000万　1999年底
已达4000万　，大大超过上网人数。业内人士认为，这预示着中国发展无线电子商务正面
临着大好契机。

    移动上网——因特网“剪断脐带”

    近年来，因特网如日中天，成为信息社会经济发展的引擎。现在，每天都有60万个用
户加入它的行列，网上信息流量正以每6个月翻一番的速度剧增。然而，由于线缆的“物
理性束缚”，因特网无法满足人们在移动中通信联络和获取信息的自由。解决的办法无疑
是要建立与因特网的无线连接。有戏言称，这是因特网“剪断脐带”的行动。移动电话，
是当今电信领域中又一颗璀璨的明星。它的增长速度和不断翻新的技术与包装出人意料，
10年来用户数足足增加了40倍，目前总数已达3亿。预期到2005年，它将与因特网并驾齐
驱，创造用户数量超10亿的纪录。一些目光敏锐的业内专家早已看到，移动电话进入数字
时代之后，必然要开拓话音以外的业务，使人们不仅能利用它建立彼此的联络，还能随时
随地获取自己所需要的信息，甚至还能得到娱乐、购物等种种超值享受。移动电话与互联
网的结合是大势所趋，无线因特网的概念也由此而逐步形成。无线因特网绝不是移动电话
与因特网的简单组合，而是在创新理念指引下的一项高技术集成。它不只实现了两大技术
的优势互补，还在很大程度上改变了通信的观念和网络访问的基本规则，是计算机与通信
融合(Computer＆Communication)的又一次升级。它所产生的结果不是1＋1＝2，而符合系
统论创始人贝特朗菲所说的“整体大于部分之总和”的法则。无线因特网时代将要发生的事情，正如?nbsp;
ν新蘩咀懿眉媸紫葱泄俑叨乃档模骸案谋涞牟皇羌际酰侨嗣堑纳睢薄?nbsp;

    90余个电信厂家争食无线上网“蛋糕”

    无线因特网是一个诱人的产业。尽管在传统的移动通信和互联网两个产业已经是强手
如林，而且形成了像诺基亚、摩托罗拉、爱立信这样一些很有实力的巨头，但面对眼前这
个全新的市场，他们还得站到同一条起跑线上，开始新一轮角逐。竞争对手们心里明白，
只有形成市场，形成共同的游戏规则，大家才有钱可赚。因此早在1997年，无线因特网初
露端倪时，诺基亚、摩托罗拉、爱立信等几家主要电信厂商便发起创立WAP(WirelessAppl
icationProtocol，无线应用协议)论坛。其目的就是要在因特网和移动通信网之间搭起一
座桥梁，使因特网的丰富信息和高级数据业务能进入移动电话手机和其他无线终端之中。
至今，论坛已经吸引了全球90多家大型厂商参加；WAP协议第一个版本也已于1998年问世
。紧接着，诺基亚、摩托罗拉、爱立信这移动通信业“三强”纷纷推出具有WAP功能的终
端产品，成为手机市场上一个个亮点。一些中外厂商也纷纷开发自己的能上网的手机，或
正在酝酿加入这场抢占无线因特网制高点的角逐，来分食这块诱人的“蛋糕”。

    量身订制手机——个性化服务取悦消费者

    在这场新的争夺战中，曾以寻呼机、手机而称雄市场的摩托罗拉再度引起世人的瞩目
。通信业的这艘航空母舰正在调整航向，顺应时代潮流，以强大科技为动力，加速驶向新
的彼岸。探寻该公司的全新战略和经营举措，可以给人们以启示。摩托罗拉在移动通信业
从“模拟”转向“数字”的重要关头，曾因保守和自大而一步迟缓，使竞争对手超了上来
。痛定思痛，他们在GSM领域急起直追，收复失地。以手机的中文应用为例，从中文菜单
到中文短消息显示再到全中文键盘输入，从而实现手机操作全中文化，摩托罗拉创造了诸
多“第一”，可以说带动了中国整个手机市场的中文开发。当无线因特网曙光初露时，摩
托罗拉认为，“一个通信史上最伟大的转折正向我们走来，这是我们的历史性选择”。正
是基于对发展趋势的把握和对自身转变的上述决断，他们抓住这一千载难逢的机遇，重现
昔日辉煌，以期再度问鼎通信业“老大”的宝座。仅就近期公布的摩托罗拉今年第一季度
的业绩报告来看，它似已走出困境，进入新一轮的良性循环：销售额为88亿美元，比去年
同期增长了20%；运营业务利润是4.49亿美元，比去年同期增长了144%。摩托罗拉的股票
也走出1998年的低谷开始大幅飙升。在摩托罗拉经营状况复苏的背后，是围绕它新的目标
，在经营理念、策略和措施等方面所做的一系列变革。首先，公司突破了多年死守的“技术主导型”?nbsp;
Ｊ剑约茸⒅丶际酰质视κ谐『拖颜卟煌枨蟮摹笆谐≈鞯夹汀蹦Ｊ健９景呀
挪酱友芯渴乙葡蚴谐。谏钊氲鞑榉治龅幕∩隙韵讶航泄槔啵髁⒘丝萍甲非笮汀
⑹奔涔芾硇汀⑿蜗笞非笮秃透鋈私煌退拇竽勘昶放疲禾焱亍⑹彼蟆.TM(发音成Vdot)
及心语TM。同时，摩托罗拉确立了“WebWithoutWires”(“无线网络，无限人生”)这一
全球性无线因特网战略，并把它作为志在必得的目标和全线产品的平台。摩托罗拉向消费
者做出承诺：今后在每个品牌系列中，都安排生产带有WAP功能的手机。

    科技实力决定发展潜力

    无线因特网竞争，不管是比起跑还是比后劲，都要靠科技实力，摩托罗拉充分展现了
它在这个领域的创新思维和领先技术。去年以来，摩托罗拉推出了WAP交换平台MIXTM、以
MIXTM＆MyosphereTMInternet为核心的端到端解决方案、3G方面的最新网络体系AspiraTM
，并成为全球惟一可提供完整的GPRS网络和电话的通信制造商。在中国，摩托罗拉相继发
布了L2000WWW网上通系列、天拓(A6188)、心语(T2288)和V.TM(V8088)等几款WAP手机，使
其四大目标品牌都有了支持WAP的具体产品，成为目前国内市场上提供WAP手机种类最多的
厂商。摩托罗拉率先推出的全球第一部三频全中文手机L2000WWW是为云游四海的商界人士
所“量身订做”的真正“全球通”手机，不仅有很广的覆盖范围，而且内置优化的微浏览
器，可以随时随地上网查询各种信息。天拓A6188则是为“科技追求型”人士设计的产品
，集无线因特网应用、PDA(个人数据管理)和移动通讯于一身，以多样化的功能和突破传
统手机模样的新面孔，映衬出科技创新的浓厚色彩。在科学技术瞬息万变的时代，优势和
领先都不是一劳永逸的。只有把握未来，才能求得生存和发展；只有能全面提供先进技术
、优质服务和完善解决方案的厂商才有可能成为赢家。现在，正当人们为无线因特网时代
的到来拍手叫好时，诸多通信厂商在大力开拓无线因特网市场的同时，已把眼光投向未来。它们已经?nbsp;
谖谌贫ㄐ攀贝牡嚼匆∑炷藕安⒃顺镝♂ⅰＥ祷堑摹懊教宓缁啊薄⑿诺摹
袄堆馈薄⒛ν新蘩摹笆只颉备拍钣爰际酰姓庖磺校际刮颐强吹揭荒荒弧巴蚵
碚接毯ā钡木跋螅な玖私艚釉谖尴咭蛱赝螅怀⌒碌模ɡ阶忱氖谐〗侵
鸷图际踅狭空谠杏小３路剂?本文作者为中国电信网站总编，中国科普作家协会副
理事长，北京电信通信学会常务理事)

--

宠辱不惊花开花落,
去留无意云卷云舒.

※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.10.100]


新浪网上专设WAP移动天地栏目.

 发信人: JoyKiller ( 默默怀念--闪亮的日子), 信区: XML
标 题: 新浪网上专设WAP移动天地栏目.
发信站: BBS 水木清华站 (Wed May 24 13:55:17 2000)

http://tech.sina.com.cn/wap/index.shtml
有不少关于国内外WAP的新闻报到.

--

宠辱不惊花开花落,
去留无意云卷云舒.

※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.10.216]


knowbot (黄毛), 信区: XML

 发信人: knowbot (黄毛), 信区: XML
标 题: XML标准的制定取得新的进展(转载）
发信站: BBS 水木清华站 (Mon Jul 10 21:25:13 2000) WWW-POST

china.internet.com 2000/07/07 18:55
    美国时间本周，万维网(World Wide Web)公司宣布它已制定出了XML超链接格式的标
准。XML链接语言(XLink)1.0版允许向XML文件写入新的内容以创建资源间的链接，它不但
能够适用于当今普遍使用的超文链接本标示语言，而且比它的功能更加强大。Xlink除了
具有现行链接的数据结构之外还能实现最小程度的链接，因此高级应用可以交替进行，更
复杂的显示和处理过程也会顺利进行。

    据万维网公司说，XLink所提供的结构既能用于基本的单向链接，也可以用于更复杂
的链接。它可以使XML文件与两个以上的数据资源相连，既能传送元数据又能实现快速链
接。

    工作组相信如果该标准得以通过，XML将：

    促进国际化媒体行业的电子出版工作。

    各行业可以建立自己独立于平台之外的协议模式，特别是在电子商务领域。

    把收到的信息进行自动处理再送到用户面前。

    使开发网上管理软件变的更加容易。

    用户可以使用更便宜的软件完成数据的处理。

    在个性化页面控制下使人们能按自己喜欢的格式显示信息。

    使获得软件的元数据变更容易。

    XML相关工作组本周发布了它的性能介绍，目的是为了接受用户提出的建议。该软件
将在10月3日正式投向市场接受用户的检验。

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.112.134.170]


Nokia无线浏览器将公开源代码 (转载)

 发信人: veb (晨雪¤终于有昵称了), 信区: XML
标 题: Nokia无线浏览器将公开源代码 (转载)
发信站: BBS 水木清华站 (Tue Aug 29 22:31:24 2000)

【 以下文字转载自 FreeDevelop 讨论区 】
【 原文由 rover 所发表 】
Nokia无线浏览器将公开源代码

---- Nokia公司今天宣布推出一款新的移动电话Web浏览器。该公司将重点放在开放
源代码的战略上，以期进一步向无线软件市场迈进。

----Nokia正向软件和服务方面快速推进。推出第二代无线Web浏览器之后，Nokia离
取代硅谷Phone.com公司的目标就更进一步了。后者的闪电战已经为该公司建立起移
动Web软件市场的领先地位。

----在这个尚处在初期发展阶段的市场，软件商、服务供应商以及硬件厂商互相都
将目标放在对方的业务上。但分析家称，正在发展中的软件竞争只不过是个烟幕弹，
每个玩家都在尝试扩展自己的市场领地，而且寄希望于促进消费类软件业务来帮助
自身达成这一目标。

----Nokia公司推出的这款新软件就好像是Netscape浏览器或IE浏览器的移动电话版。
尽管到现在为止，Phone.com公司仍然是这一市场的领先者，但它已经引起诸多移动
电话大公司，甚至微软公司的注意。这些都使得目前的市场地位关系仍然在急剧的变
化中。

----Phone.com公司免费提供移动电话Web浏览器软件。该公司利用这种方式来向服
务提供商销售软件和服务。分析家指出，由于历史积累的兼容性问题阻止一家公司
的浏览器无缝访问另一家公司的产品，因此市场份额成为非常重要的制胜因素。

----Nokia公司现在把赌注压在一个新战略上--发行该浏览器软件的源代码。不过跟
Netscape的Mozilla浏览器不同，Nokia的公开源代码战略不是完全的"公有"。该公
司允许对为某个特定设备定制的软件制定使用许可政策。

----分析家指出，这是迈向无线访问协议（WAP）技术的关键一步。尽管WAP已经吸
引了金融和媒体的许多注意，但这种技术仍不成熟。

--

※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.184.166]


业内人士称WAP市场年底将有转机

 发信人: huabing (再硬的冰,我也要把你化了), 信区: XML
标 题: 业内人士称WAP市场年底将有转机
发信站: BBS 水木清华站 (Fri Sep 1 10:35:46 2000)

网易公司企业发展部经理郑幸鲲最近说，我国的ＷＡＰ大市场有望在年底出现转机，逐
步步入正轨。
郑幸鲲认为，我国ＷＡＰ市场现阶段还未完全进入良性循环的运转期，对于手机用
户来说，一是多数人还未进行尝试，因而对该物品尚不完全理解；二是入网过程还不够
顺畅，需要一系列麻烦的手续，妨碍了用户的积极性。而这一过程需要整个周边的大环
境的逐步改善。此外，手机硬件仍不够普及、款式也不够多样，也阻碍了市场发展。
据估测，随着手机用户的增长和市场宣传的推广，国内的ＷＡＰ市场以现有速度发
展，将可能在今年年底实现进入初步良性运转，即形成一部分较为固定的客户群，开展
相应的业务。
对于赢利问题，郑幸鲲充满信心，他说，现在的主要工作是市场培育和资金投入，
而对于一个潜力巨大的国内市场来说，赢利只是时间问题。

--

※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.214.46]


Siemens为其WAP网关选择定位系统软件

 发信人: huabing (再硬的冰,我也要把你化了), 信区: XML
标 题: Siemens为其WAP网关选择定位系统软件
发信站: BBS 水木清华站 (Fri Sep 1 10:34:41 2000)

无线定位服务平台和应用发展商 SignalSoft公司最近透露，Siemens已经选择SignalS
oft的定位技术以加强其当前的WAP网关应用。
SignalSoft公司的定位技术将和Siemens的WAP解决方案融合在一起提供WAP定位服务
。这个软件将使移动网络运营商把目前拥有的丰富的互联网内容和客户基于当前位置的
即时需要结合起来。
目前采用Siemens WAP 网关的GSM移动运营商已经超过50家，这种融合定位技术的新
网关相信将给其客户带来更多的效益。

--

※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.214.46]


彩显手机纷至沓来 (转载)

 发信人: huabing (再硬的冰,我也要把你化了), 信区: XML
标 题: 彩显手机纷至沓来 (转载)
发信站: BBS 水木清华站 (Fri Sep 1 10:41:29 2000)

【 以下文字转载自 Winsock 讨论区 】
【 原文由 huabing 所发表 】

最近，彩色画面的手机在商店中颇为抢眼。彩色机种的陆续上市主要是因为半透过
型STN彩色液晶可以廉价入手。半透过型液晶以外界光线和背景灯作为光源，因此耗电比
单色手机要大一些。各个机种都在电池改良上下了不少功夫，使得电池的驱动时间与原
来机种基本相同。市场上的实际销售价格在东京的批量销售店中为每台1万～2万日元，
与原来的手机无太大的差异。
使用彩色显示的服务项目几乎都是娱乐性质的内容。像“彩色造型”服务，可以在
画面上显示各种造型、简单的游戏以及算卦等等。半透过型液晶不像电脑所使用的透过
型那样色彩鲜明。因此与显示照片相比，更适合于显示对比度较高的文字和图形。

NTTDoCoMo在2000年预计上市的Java对应手机上引入程序进行图表显示处理。今后在
彩色显示上，具有较高清晰度的商用服务将会逐步增加。将来，可以在手机上直接输入
URL显示网页。虽然手机上可以使用的HTML命令以及画像的种类有所限制，但是由于规格
已在网站上公开，因此个人也可以很容易地制作彩色网页。类似这样的个人网站将会成
为手提电话彩色化的先锋。
(摘自生活时报）

--

※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.214.46]


诺基亚与福建移动通信携手推出 (转载)

 发信人: huabing (再硬的冰,我也要把你化了), 信区: XML
标 题: 诺基亚与福建移动通信携手推出 (转载)
发信站: BBS 水木清华站 (Fri Sep 1 10:41:51 2000)

【 以下文字转载自 Winsock 讨论区 】
【 原文由 huabing 所发表 】

诺基亚与福建移动通信携手推出
全球首个符合业界标准的商用GPRS网络
2000-08-31
[WAP86消息]：中国福建移动通信有限公司宣布推出全球首个与最新商业标准兼容的
通用分组无线电讯服务GPRS网络。采用诺基亚的GPRS核心网络系统，福建移动通信会在
福建省福州市率先提供有关网络服务。
这网络亦是全球首个符合SMG31标准的GPRS系统，使核心网络能与其它通讯设备制造
商提供的设备兼容，同时可于不同营运网络间漫游。此外，诺基亚的GPRS解决方案亦符
合中国移动通信集团公司 (China Mobile Communications Group, CMCG) 的标准。
诺基亚GPRS解决方案的优点，在于网络已完成WAP的服务系统，同时可提供分组数据
传输。此外，福建移动通信公司已顺利完成GPRS的国际漫游测试。根据世界各地营运商
之间的协议，GPRS网络的漫游功能是基本的网络要求，以确保全球流动互联网服务的未
来发展。
GPRS不但能为流动电话用户带来随时与互联网连接的乐趣，更可提供一系列崭新的
通讯应用。用户可利用机构的内联网及WAP网站，透过互联网及电子邮件，享受内容丰富
的通讯服务。

--

※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.214.46]


XML 中国论坛更新通报(2000年9月26日)

 发信人: angry (烦), 信区: XML
标 题: XML 中国论坛更新通报(2000年9月26日)
发信站: BBS 水木清华站 (Tue Sep 26 14:09:31 2000) WWW-POST

1. 技术文章
Software AG Tamino Server分析
对Software AG推出的Tamino这一基于XML的数据库产品进行了总体介绍,包括系统框架、
系统模块，并分析了其优缺点，最后从开发的角度阐述了Tamino的开发步骤。

初学进阶——XML文件的显示（第四章，第三节）
XSL是通过XML进行定义的，遵守XML的语法规则，是XML的一种具体应用。XSL由两大部分
组成：第一部分描述了如何将一个XML文档进行转换，转换为可浏览或可输出的格式；第
二部分则定义了格式对象FO。

2. 精品书屋
《XML实用大全》——第9章 实体和外部DTD子集
一个简单的XML文档从许多不同的资源和文件中取得数据和声明。实际上，有些数据直接
来自数据库、CGI脚本或其他非文件格式资源。无论采取何种形式，保存XML文档片段的项
目称为实体。实体引用把实体载入到XML主文档中。通用实体引用载入数据到XML文档的基
本元素中，而参数实体引用载入数据到文档的DTD中。

《XML实用大全》——第10章 DTDs中的属性声明
一些XML元素具有属性。属性包含应用程序使用的信息。属性仅在程序对元素进行读、写
操作时，提供元素的额外信息（如ID号等），对于人类读、写元素来说是毫无意义的。在
本章中学习各种属性类型和如何在DTD中声明属性。

3. 软件园地
IE XML工具
IE浏览XML文件时不检查文件有效性,而且查看XML+XSL文件时只能看到原始文件,无法看到
转化后的HTML文件. 本工具安装后在IE的右键菜单增加Validate XML和View XSL Output
功能菜单.

EditML Pro试用版
不用介绍了吧！
可以参看相关软件：
EditML1.0测试版
EditML Pro1.0测试版

JAXP
这是SUN开发的XML分析器Java开发包。

SP
James Clark用C++开发的，被广泛应用的一个sgml分析器（同样支持对xml的分析）。

DTDParser
这是一个用java写的DTD分析器，只分析DTD是否符合语法，并返回DTD的树状结构。

XT
XT是James Clark用java写的一个XSLT处理器，支持PR-xslt-19991008 version of XSLT
，但是目前它对XSLT1.0标准的支持并不完善，有些元素和属性等的支持没有实现，但绝
大多数常用的支持都已经实现了，还是一个比较好用的处理器。

XP
这是James Clark用java写的一个xml分析器。它完全支持XML1.0标准，支持外部实体：包
括外部子DTD、外部参数实体以及外部通用实体。支持utf-8,utf-16,iso-8859-1,us-asci
i等几种编码。目前不支持中文编码。

4. 标准集粹
可缩放矢量图形(SVG)1.0
SVG是一种用XML定义的语言，用来描述2维矢量及矢量/栅格图形. 它提供了4种类型的图
形对象：矢量图形（vector graphic shape）、图象(image)、渐变填充(gradient
filling)、文本(text)，图形对象还可进行分组、添加样式、变换、组合等操作，特征集
包括嵌套变换（nested transformations）、剪切路径（clipping paths）、alpha蒙板
（alpha masks）, 过滤器效果（filter effects）、模板对象（template objects）和
其它扩展（extensibility）。 SVG的绘图可以通过动态和交互式方式进行。

------------------------------------------------------------------------------
--

版权所有：XML中国论坛
Copyright &copy;2000 XML Forum China.
联系电话: (010)62982266-1417 电子邮件: xml@icst.pku.edu.cn

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 162.105.119.59]


XML 中国论坛(

 发信人: angry (烦), 信区: XML
标 题: XML 中国论坛(http://www.xml.net.cn)更新通报(2000年10月27日)
发信站: BBS 水木清华站 (Fri Oct 27 17:25:51 2000) WWW-POST

亲爱的网友：

  您好！感谢您给予XML中国论坛的极大支持！自网站开通以来，得到了广大业界人士的
关心与关注，使我们受到了莫大的鼓舞，我们将尽自己的努力把XML中国论坛办好，也衷
心地希望您能够一如既往地支持我们，共同推进XML技术在中国的应用与发展。
XML中国论坛将在近期改版，敬请关注！

XML中国论坛 Fri Oct 27 09:58:38 2000

最近更新内容

1. 技术文章
初学进阶——SGML与XML标准体系（第五章，第一节）
XML语法、DTD和样式单是XML的基本要素，它们还远远不能涵盖 XML的强大功能，比如说
XML链接、XML与应用程序的接口，还有XML如何与数据库进行数据交换等等，它们为XML应
用作出的杰出贡献绝对不可小觑。为了让大家对XML所涉及到的各个部分各个协议有一个
完整的了解，以便更好地继续后面的学习，我们先来看看XML基础标准之间的相互关系。

XML与远程教育
远程教育是互连网发展的又一个热点，本文介绍了与教育相关的一些标准，并着重介绍使
用XML技术的IMS标准及Microsoft LRN2.0。

基于XML的企业－企业电子商务模型
XML的出现，突破了EDI的发展瓶颈，它已经取代了传统的EDI，成为了企业之间信息交换
的有力工具。人们开始建立基于XML的电子商务模型。本文对几个基于XML的企业－企业模
型进行简要介绍。

一步一步学DOM
本文介绍了如何利用msxml组件，创建Document对象，获得对XML文档进行操作的入口。

eXcelon分析
本文从总体上对eXcelon这一XML应用开发环境进行了分析,包括运行环境、框架结构、以
及开发模式等等。

XML —— 网络世界的国际语言
本文概述了XML的框架，并综述了相关的应用标准。

2. 精品书屋
《XML实用大全》——第11章 嵌入非XML数据
XML提供三种结构：记号、不可析外部实体和处理指令，通常用于处理非XML格式数据。记
号描述非XML格式数据；不可析外部实体提供与非XML格式数据实际位置的链接；处理指令
给出如何观看这些数据的信息。

《XML实用大全》——第12章 级联样式单级别1
对于将诸如粗体和Helvetica样式应用于特定的XML元素来说，CSS是一种非常简单、易懂
的语言。任何常用的字处理软件都具有CSS支持的大多数样式。例如，可选择字体、字体
的粗细、字号、背景颜色、各种元素的间距、元素周围的边框等等。但是，所有的样式信
息并不在文档之内存储，而是放置在一种称之为样式单(style sheet)的独立文档中。仅
仅改变样式单就可以以多种不同方式格式化一个XML文档。不同的样式单可用于不同的目
的——打印、Web、展示和其他用途——所需要的只是适用于指定媒体的样式，并且无需
改变文档中的任何内容。

3. 软件园地
Fujitsu XLink Processor
跨平台的XLink和XPointer处理器,部分支持最新的候选推荐标准.具体支持参见软件主页

XSL Composer
一个XSL编辑器，有所见即所得功能，试用期很短，抓紧体会。

VisualXML
VisualXML的最新版本

XSL Editor
一个XSL编辑工具，属字符型编辑器，但有设计好的XSL关键字可供插入，免去一些麻烦。

4. 标准集粹
IMS Content Packaging Specifications
IMS制定的内容封装格式定义，Microsoft LRN2.0支持，内含三个PDF文件。

个性化印刷置标语言
Personalized Print Markup Language是PODi组织于2000年2月发布的个性化印刷格式语
言并以开发出相应的产品，该标准用于按需印刷（Ondemand-print）。

扩展置标语言(XML) 1.0
XML是专门用于Web应用的置标语言，可以说是SGML的子集，它的语法简洁，并且XML这种
简化了的语法使浏览器能快速提取文档的结构，并对相应的结构对象进行处理。
为了使SGML的文件能象HTML一样能在Web上发送、接收和处理，XML的设计时考虑到了XML
与SGML和HTML的互操作性，及XML应用应该易于实现等因素。
XML实际上是简化形式的SGML。它能指定DTD，这是比HTML先进了一大步，但它又允许没有
DTD的文件，这又是在SGML里不可能的，但却对许多不了解DTD的用户是很方便的。XML中
去掉了SGML中很少使用而且处理起来很麻烦的特征，使它很适合WWW上的应用。

XML范式标准
在一个应用的上下文中，任何一个XML文档都是一个在逻辑上等效的文档集的一部分，在
XML 1.0标准的允许下，由于语法形式的可变性，文档的物理表示具有多样性。该标准就
是要描述一种方法，能产生XML文档范式形式，该形式能说明XML文档的物理表示形式所允
许的变化。除了在极少数特殊情况外，在给定的应用上下文中，具有相同的范式形式的两
个文档，在逻辑上是等效的。

XML Base(XBase)
XML Base是HTML Base的替代.

XML查询语言
XML Query工作组的使命是提供一种灵活的查询语言，以便从WEB中实际或虚拟的文档中提
取数据，并最后为WEB世界与数据库世界提供必需的交互，使得XML文件集可以象数据库那
样方便访问。主要有两个标准：XML Query Requirements 和 XML Query Data Model

------------------------------------------------------------------------------
--

版权所有：XML中国论坛
Copyright &copy;2000 XML Forum China.
联系电话: (010)62982266-1417 电子邮件: xml@icst.pku.edu.cn

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 162.105.119.59]


.Net Beta 1出来了

 发信人: Jobs (温少), 信区: XML
标 题: .Net Beta 1出来了
发信站: BBS 水木清华站 (Sun Nov 19 06:08:05 2000)

前些天MS 推出了.Net SDK Beta 1，比Preview版本有了一些改进，
其中一个感受很深的就是File组件的bug的改进，在help中增加了Jscrpt
的sample，之前的sample只有VB和C#的，现在增加了，呵呵，具体功能
还没有用，也还没来得及看，我已经下栽回来了，有兴趣的可以看看……

http://sunrise.szu.edu.cn/Software/NETSDK/SDK%20Beta%201/setup1.exe

--

※ 来源:·BBS 水木清华站 smth.org·[FROM: 210.39.3.50]


XML技术及应用专业讲座

 发信人: knowbot (黄毛), 信区: XML
标 题: XML技术及应用专业讲座
发信站: BBS 水木清华站 (Wed Dec 20 14:51:47 2000) WWW-POST

XML技术及应用专业讲座<一>
中国XML联盟主办, 博域方案有限公司、SOFTWARE AG协办

XML——电子商务的金钥匙

新的可扩展标记语言（eXtensive Markup Language，XML）不仅掀起了网络革命，随之也
将完全改变IT的面貌。借助定义自我描述的文档架构，以及XSL、XLink、DOM、RDF、XQL
等附加标准的支持，XML将Internet由信息网络改造成综合的整体运作平台、资源无限的
知识库以及电子商务的强大架构。国际互联网组织(W3C)制定的XML标准，从某种程度上可
以这样理解：如果说 HTML 造就了Web，那么就是 XML 把 WWW 变成 WWD (World Wide
Database,互联数据库)。

课程面向对象

l中国地区的公司技术总监、企业技术主管
l中国地区的公司高级和中级管理人员

课程特色
介绍中国XML最新发展动态及国内XML发展状况的第一手信息
全面涉及XML的技术体系,有重点的深入讲解。
透视国际和国内XML应用和标准化现状
帮助您的企业利用XML实现电子商务
为促进XML在中国地区的发展，本次讲座课程以成本价格推广。

参加本课程免费赠送：
l 精心制作的讲座教材
l 《XML理论和应用基础》——作者：孙一中 （原价：36元 ）
l Tamino——原生的纯XML资讯服务器试用版(1套3CD)

开课时间、地点及收费
2000年12月28日 (9:00-17:30)

地点：上海交通大学浩然高科技大厦

收费标准:
现场交款： 550元/人（包括午餐、茶水）
开班前将款汇到者，可以享受495元/人的优惠价格。

课程内容和安排:
时间
主题
内容

9:00-10:30
介绍XML
XML产生的条件(Why)

- 应用需求 - 技术发展

XML的基本概念(What)

XML如何影响Internet时代(How)

10:30-12:00
深入XML技术
XML文法 XML处理

XML表现 XML链接

13:30 -15:30
深入XML应用
XML文法的制定和文档的编辑

XML转换和样式语言的使用

建立XML网站的基本框架

XML在B2B中的用武之地

XML和数据库

15:30 -17:30
XML的发展
XML的具体应用

- 电子商务 - 教育 - 科研

- 多媒体 - 其他

XML的标准化

- ebXML - BizTalk - cXML

- XCBL - cnXML

各大公司对XML的支持

如何把握XML带来的巨大机会

马上注册登记

主讲人名单：

孙一中 – 国内最早研究XML技术的权威性专家，中国XML联盟主要创始人，cnXML标
准化组织倡导者之一，曾参与创立了国内最早的XML软件企业。主编专著有《XML理论和应
用基础》，并负责多次XML的技术研讨和培训，参与国内多家企业和机构的电子商务的咨
询和技术支持。

林 川 – 博域方案有限公司 行政总裁。同时任加拿大Peerwork实验室、美国
ClicktoRing科技公司董事。他成功地在加拿大、美国创办了两家顶级的互联案方案提供
公司，并积极参与开放软件源代码的运动。林先生在加拿大经常参加业界的日常会议，积
累了丰富的经验。作为一个现代科技的积极促进者，他把世界先进技术带到了亚洲的IT市
场。

郁 桦 – 上海交通大学电子工程系硕士研究生。在上海交通大学贝尔联合实验室
从事语音方面的研究。中国XML联盟创始人之一。长期从事中国XML联盟的建设工作。发表
过许多普及XML技术的专业文章。对XML标准化、XML行业应用框架、VoiceXML有较深入的
研究。并参与过许多网络通信项目的实施。

何杭军 – XML联盟核心成员之一。现就读于上海交通大学计算机系，研究方向为
信息处理。有丰富的技术经验，很早就从事XML的研究工作，对XML在商业方面的应用技术
尤为专长。

马上注册登记

中国XML联盟 （XML Consortium of China）

是旨在推动XML技术的研究开发和XML技术在中国信息产业中的应用而建立的开放性组织。
其工作内容包括召集行业会员、个人会员、召开研讨会、设立应用工作组、倡导并参与
XML技术应用标准制订,举行相关的培训和咨询等工作。中国XML联盟在内地建设了第一个
XML的专业性技术站——www.xml.org.cn,并将逐步建立为国内第一个开放性网络组织，成
为XML和Web相关技术推广、咨询和交流的权威中心。

博域方案有限公司（Amonic Solutions Limited）

是一家以香港为基地的国际互联案全方位解决方案供应商。国际互联网作为新经济的代名
词，已经迅速席卷亚洲。许多拥有敏锐触觉的企业纷纷不甘落后，积极部署、计划各色各
样的互联网应用方案来提高竞争力，我们针对这些亚洲公司提供有效的一步到位解决方案
。同时为您提供包括：网址设计、内容安排、战略合作、商业咨询，技术培训等服务。

Software AG

是一家德国的公司，是欧洲最大的系统软件供应商。其主要的产品分三种类别：数据管理
、应用工程和系统集成，在全世界的机构遍布60多个国家。在最近的IDG报告中，
Software AG在世界XML市场有超过22%的市场占有率。Tamino是Software AG公司的最新的
XML产品。她有超过5,000家的知名客户遍布世界各地，如：百事可乐，索尼，飞利浦，西
门子，中国民航等等。

Amonic Solutions 是Software AG 在中国地区的第一家分销伙伴。

如果您对我们的讲座课程感兴趣,请登记注册,我们的工作人员会直接和您联系。 注册登
记:www.xml.org.cn

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.112.134.170]


中国XML技术2000观感

 发信人: knowbot (黄毛), 信区: XML
标 题: 中国XML技术2000观感
发信站: BBS 水木清华站 (Thu Dec 28 18:29:41 2000) WWW-POST

亮点：
1，XML技术研发与应用已经进入发展期
2。以UDDI（Universal Description Discovery and Integration),SOAP,XML, HTTP
为基础的Web Service成为XML技术发展的新的亮点，这也是12月6号在美国的XML‘2000上
的一个焦点。以HTTP为基础的数据传输，XML为基础的数据表达，以SOAP为基础的方法调
用，加上UDDI，可以实现一个更加开放的Web service.
3. 国内复旦大学在XML与DB的研究方面有了阶段性的成果。

不足：
1。企业界和媒体参与较少。
2。国内有限的几个XML组织和协会似乎都在抢占地盘，真正意义上的合作很少。
3。北京在XML技术的发展和跟踪上明显落后于上海，互联网时代，为什么仍存在这种
差距？值得思考。清华、北大不知什么原因，没有投一篇稿件（如果我没记错），也许它
们觉得这种实用化的技术“没用”吧。

个人观点，不对之处望指正。

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.112.134.170]
上一篇 返回上一页 回到目录 回到页首


版主工作区 (BM: inannan)

编号 | 类别 | 标题 | 编辑日期
1 | 目录 | 本版通知 (BM: veb) | 2001.02.22
2 | 目录 | 本版历史 (BM: veb) | 2001.02.22
3 | 目录 | 未整理 (BM: veb) | 2001.02.22
返回上一页 回到上一级目录


重要消息 (BM: veb)

编号 | 类别 | 标题 | 编辑日期
1 | 文件 | ****关于网站的情况简介**** veb | 2000.03.26
2 | 文件 | 关于本版的荣誉网民！！！！！！ veb | 2000.03.26
3 | 文件 | *****斑竹的一些话***** veb | 2000.05.10
4 | 文件 | Re: 中国XML联盟 veb | 2000.06.10
返回上一页 回到上一级目录


****关于网站的情况简介****

 发信人: veb (君), 信区: XML
标 题: ****关于网站的情况简介****
发信站: BBS 水木清华站 (Wed Apr 26 16:18:23 2000)

网站刚刚找到一个家。
由于只有一个页面，而且很难看，所以先不公布地址 :-)

我的初步设想是这样的。
1。这是一个基于XML和perl的网站。
2。每一位XML版的荣誉网民将可以获得在
上面自由发表XML文档的资格 : )
3。其他网民的XML文档需要经过审核 : (
4。荣誉网民还可以在已有网业上做任意添加，
现在的网站还作不到吧？呵呵
（暂时就怎么一点新意，以后将陆续添加）

*荣誉网民的选定还在运量中。

现期目标
1。有一个家
2。公布相关标准和技术。
3。实践，大家可以公布自己的作品或推荐
现有的XML文档。

--

Powered by eXtensible Markup Language

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.112.99.209]
返回上一页 回到目录 回到页首 下一篇


关于本版的荣誉网民！！！！！！

 发信人: veb (君), 信区: XML
标 题: 关于本版的荣誉网民！！！！！！
发信站: BBS 水木清华站 (Wed Apr 26 17:44:35 2000)

我先公布6位XML版荣誉网民

starw:创立XML版的功臣
nullgate:perl高手
joykiller:XML高手
maht:java高手
stn,yangxuu:为本版繁荣作出了贡献:-)
//如果不愿意可以申请退出，呵呵

五一后将投票选举其他荣誉网民，人数还未定。

另外斑竹和板斧自动成为荣誉网民，
在任期间不得退出。

--

Powered by eXtensible Markup Language

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.112.99.209]


*****斑竹的一些话*****

 发信人: veb (君), 信区: XML
标 题: *****斑竹的一些话*****
发信站: BBS 水木清华站 (Sat Jun 10 16:15:28 2000)

主要是两件事，一是提到的XML网站的事，二是WAP的事。

一直打算作一个真正的XML网站，由于经费问题//大家都一样啦
一直不好开展，现在解决的差不多了。
曾临时作了一个放一些有关标准的、用XML写的主页放在rdb01.pku.edu.cn/~shjzhao/index.xml,
从6悦8号起估计要停一周，
由于种种限制，只能放一些最基本的静态的东西，估计大家已经烦了 : )
//不过基本意思都已经到了，其中的运用希望大家去钻研
//在使用XML作主页时还是可以参考的。（解决了80%的问题？）

现在讨论WAP的文章较多，这个等joykiller回来，我相信他的工作会让大家
满意的。

--

Powered by eXtensible Markup Language

※ 修改:·veb 於 Jun 10 16:27:33 修改本文·[FROM: 202.112.99.209]
※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.112.99.209]


Re: 中国XML联盟

 发信人: veb (昵称显示失败...), 信区: XML
标 题: Re: 中国XML联盟
发信站: BBS 水木清华站 (Sun Jul 9 00:41:22 2000)

【 在 knowbot (黄毛) 的大作中提到: 】
∶ 【 在 veb (昵称显示失败...) 的大作中提到: 】
∶ 或许人力有限，组织者在忙什么？确不如veb的网站实在地做了样例。不过，那里是初学
∶ 者的起点。我是从那里站起来的，呵呵

让我汗颜,我的主页确实内容太少,现在还是自己自娱自乐 : P
不过我一直在努力,呵呵,
我正在努力使大家能够参加近来,这样肯定会大大改善.
呵呵

其实现在大家可以贡献一些文档,例子和程序,(包括自己的"作品")
现在还没有把自动上载功能加上,需要手动,不过还是比较方便 : )

//现在正在作服务端东西和数据库
--
<?XML?>欢迎访问我的主页<?XML?>
http://xml.zixia.net
http://rdb01.pku.edu.cn/~shjzhao/index.xml

Powered by eXtensible Markup Language

※ 修改:·veb 於 Jul 9 00:42:16 修改本文·[FROM: 202.112.99.209]
※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.112.99.209]
上一篇 返回上一页 回到目录 回到页首


本版历史 (BM: veb)

编号 | 类别 | 标题 | 编辑日期
1 | 文件 | Re: 【提案】申请成立XML--扩展标记语言( veb | 2000.05.28
2 | 文件 | 可扩展标记语言(XML) 1.0 veb | 2000.05.27
3 | 文件 | 版主报道(veb) veb | 2000.05.27
4 | 文件 | 申请XML（可扩展置标语言)板板斧! (转载) veb | 2000.05.27
5 | 文件 | 同意JoyKiller的辞职申请 (转载) veb | 2000.05.27
6 | 文件 | 任命takeiteasy为 XML/可扩展置标语言 版 veb | 2000.05.27
返回上一页 回到上一级目录


veb (君), 信区: XML

 发信人: veb (君), 信区: XML
标 题: Re: 【提案】申请成立XML--扩展标记语言(XML)看版 (转载)
发信站: BBS 水木清华站 (Wed Jun 28 11:20:29 2000)

【 以下文字转载自 New_board 讨论区 】
【 原文由 veb 所发表 】
【 在 starw (孤星) 的大作中提到: 】
∶ 申请主题:
∶ 英文版名:XML
∶ 中文标题:XML--扩展标记语言
∶ 分类(建议分类):电脑技术
∶ 申请动机:
∶ XML是互联网联合组织(W3C)创建一组规范，其目的不仅在于满足不断增长
∶ 的网络应用需求，同时还希望借此能够确保在通过网络进行交互合作时，
∶ 具有良好的可靠性与互操作性。
∶ XML源自SGML，它保留了SGML 80%的功能，使复杂程度降低了20%，尽管如
∶ 此，XML却有着HTML语言所欠缺的巨大的伸缩性与灵活性。XML不再象HTML
∶ 一样有着一成不变的格式。XML 实际上是一种定义语言，即使用者可以定
∶ 义无穷无尽的标记来描述文件中的任何数据元素，从而突破了HTML固定标
∶ 记集合的约束，使文件的内容更丰富更复杂并组成一个完整的信息体系。
∶ 良好的数据存储格式、可扩展性、高度结构化、便于网络传输是XML 主要
∶ 的四大特点，决定了其卓越的性能表现。由于XML 能针对特定的应用定义
∶ 自己的标记语言，这一特征使得XML 可以在电子商务、政府文档、报表、
∶ 司法、出版、联合、 CAD/CAM、保险机构、厂商和中介组织信息交换等领
∶ 域中一展身手，根据不同的系统、厂商提供各具特色的独立解决方案。
∶ XML 的诸多优点及先进性实在令其光芒四射，备受网络开发者的青睐，微
∶ 软、IBM无不对之秋波频频，大有得XML者得天下之势。尤其是微软公司行
∶ 动如疾风闪电，XML1.0刚一出笼它便急不可待地吞了下去，未来的OFFICE
∶ 2000、Windows2000都将完全采用XML格式，而IE4.0、IE5.0则早已金屋藏
∶ 娇了。商业公司如此，国外的研究机构更加钟情有甚，如W3C(万维网联盟)、
∶ www.gca.org、www.irt.org等等，各类XML站点如雨后春笋、层出不穷。
∶ W3C正在号召全世界的开发人员共同对XML进行定义和开发，XML正走着与
∶ LINUX相同的发展 道路，但它生逢其时，势必将比LINUX更加成功。
∶ 国外XML 技术正发展得如火如荼，而国内呢，却依旧一派悄然。发展民族
∶ 产业一味畏缩于国家保护的襁褓之内是永无出头之日的，永远只能是一个
∶ “大男婴”，稍经挫折，势必夭折；发展民族产业单靠豪言壮语、满腔激
∶ 情是远远不够的，必须靠敏锐的思维、超前的意识方能取胜；发展民族产
∶ 业单单依赖政策的开放是远远不够的，思想上的开放、不断学习世界最新
∶ 的技术，永远走在世界前列，这才是成功的关键。XML技术虽然发展迅猛，
∶ 但其应用仍处于初级阶段。换句话说，我们现在奋起直追，尤为未晚。与
∶ 其大梦醒时方觉晚，不如立时拼博争朝夕。为此希望成立本讨论区，以便
∶ 于更多的有识之士加入到我们的行列，共同将我国的XML技术推向高峰。
∶ 本版主旨:
∶ XML/XSL/XLL/XHTML等指示的普及，研究以及在各个领域里的应用，XML在
∶ 国内尚处于起步阶段，教育网内的各个BBS 上几乎都没有专门的讨论区，
∶ 在水木清华成立专门的XML讨论区将有助于XML的发展及应用，为大家提供
∶ XML的资料，软件等资源。另外本版还可以包含SGML的相关讨论。
∶ 申请人id:starw
∶ e-mail:star@chinaren.net
∶ 希望得到大家的支持,支持者请写下您的id和e-mail,
∶ 没有e-mail的请注明:none
∶ //thanks
∶ //bow

--

Powered by eXtensible Markup Language

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.112.99.209]
返回上一页 回到目录 回到页首 下一篇


sylvan (睡觉&跑腿), 信区: XML

 发信人: sylvan (睡觉&跑腿), 信区: XML
标 题: 可扩展标记语言(XML) 1.0
发信站: BBS 水木清华站 (Thu Apr 6 13:22:57 2000)

呵呵，恭喜恭喜~~~
贴一片先，不是灌水

可扩展标记语言(XML) 1.0
W3C建议 1998年2月10日
本版本:
http://www.w3.org/TR/1998/REC-xml-19980210
http://www.w3.org/TR/1998/REC-xml-19980210.xml
http://www.w3.org/TR/1998/REC-xml-19980210.html
http://www.w3.org/TR/1998/REC-xml-19980210.pdf
http://www.w3.org/TR/1998/REC-xml-19980210.ps
最新版本:
http://www.w3.org/TR/REC-xml
上一版本:
http://www.w3.org/TR/PR-xml-971208
编者:
Tim Bray (Textuality and Netscape) mailto:tbray@textuality.com
Jean Paoli (Microsoft) mailto:jeanpa@microsoft.com
C. M. Sperberg-McQueen (University of Illinois at Chicago) mailto:cmsmcq@uic.
edu
摘要
本文档完整地描述了可扩展标记语言(Extensible Markup Language，XML)，它是标准通
用标记语言(Standard Generic Markup Language，SGML)的一个子集。其目的在于使得在
Web上能以现有超文本标记语言(Hypertext Markup Language，HTML)的使用方式提供，接
收和处理通用的SGML成为可能。XML的设计既考虑了实现的方便性，同时也顾及了与SGML
和HTML的互操作性。

本文档的状态
本文档已由W3C组织成员和其他相关各方审阅，并已被组织理事批准为W3C建议。这是一个
稳定的文档，可以用作参考材料，也可以作为其他文档的正式参考文献。W3C在建议制定
过程中的作用是吸引对本规范的注意并促进它的广泛使用。这能增强Web的功能和互操作
性。

本文档规定了一种用于World Wide Web的语法，此语法是通过取一个业已存在并已广泛使
用的文本处理国际标准(标准通用标记语言，经增补和更正的ISO 8879:1986(E))的子集而
创建的。它是W3C XML行动组(XML Activity)的工作成果，关于XML行动组的详细信息可以
在http://www.w3.org/XML找到。在http://www.w3.org/TR可以找到现有W3C建议和其他技
术文档的一个列表。

本规范中使用了[Berners-Lee等人]定义的一个术语URI，他们正在从事的的工作将更新
[IETF RFC1738]和[IETF RFC1808]。

本规范的已知错误列表可以在http://www.w3.org/XML/xml-19980210-errata找到。

请将本文档中的错误报告给xml-editor@w3.org。

可扩展标记语言(XML) 1.0
目录
1. 绪论
1.1 开发者和开发目标
1.2 术语
2. 文件
2.1 规范的XML文件
2.2 字符
2.3 通用语法成分
2.4 字符数据和标记
2.5 注释
2.6 处理指令
2.7 CDATA段
2.8 序和文件类型声明
2.9 独立文件声明
2.10 空白处理
2.11 行尾处理
2.12 语言标识
3. 逻辑结构
3.1 起始标签，结束标签和空元素标签
3.2 元素类型声明
3.2.1 元素内容
3.2.2 混合型内容
3.3 属性表声明
3.3.1 属性类型
3.3.2 属性的缺省值
3.3.3 属性-值对的规范化
3.4 条件段
4. 物理结构
4.1 字符和实体引用
4.2 实体声明
4.2.1 内部实体
4.2.2 外部实体
4.3 已析实体
4.3.1 文本声明
4.3.2 规范的已析实体
4.3.3 实体中的字符编码
4.4 XML处理器对实体和引用的处理
4.4.1 不被识别
4.4.2 被包含
4.4.3 进行验证时被包含
4.4.4 被禁止
4.4.5 被包含在常量中
4.4.6 通知
4.4.7 不处理
4.4.8 作为PE被包含
4.5 内部实体置换文本的构建
4.6 预定义实体
4.7 记法声明
4.8 文件实体
5. 一致性
5.1 进行验证和不进行验证的处理器
5.2 使用XML处理器
6. 记法

附录
A. 参考文献
A.1 正式参考文献
A.2 其他参考文献
B. 字符的分类
C. XML和SGML(非正式)
D. 实体和字符引用的展开(非正式)
E. 确定型内容模型(非正式)
F. 字符编码的自动检测(非正式)
G. W3C XML工作组(非正式)

------------------------------------------------------------------------------
--

1. 绪论
可扩展标记语言，缩写为XML，描述了一类称为XML文件的数据对象，同时也部分地描述了
处理这些数据对象的计算机程序的动作。XML是SGML(标准通用标记语言[ISO 8879])针对
应用的一个子集，或者说是SGML的一种受限形式。根据定义，XML文件是合乎规范的SGML
文件。

XML文件由称为实体的存储单元组成，实体可以包含已析数据或未析数据。已析数据由字
符组成，其中一些字符组成字符数据，另一些字符组成标记。标记中包含了对文件存储格
式(storage layout)和逻辑结构的描述。XML提供了一种机制用于约束存储格式和逻辑结
构。

称为XML处理器的软件模块用于读取XML文件，存取其中的内容和结构。XML处理器被设想
为是为另一个称为应用的模块作处理。本规范从XML处理器应如何读取XML数据以及应向应
用提供哪些信息的这两个方面，描述了要求XML处理器作出的动作。

1.1 开发者和开发目标
XML由XML工作组(原先的SGML编辑审查委员会)开发，此工作组由World Wide Web
Consortium(W3C)在1996年主持成立。工作组由Sun Microsystems的Jon Bosak负责，同样
由W3C组织的XML SIG(Special Interest Group)(原先的SGML工作组)积极参与了XML工作
组的工作。XML工作组的成员在附录中给出。工作组与W3C的联系人是Dan Connolly。

XML的设计目标如下：

XML应该可以直接用于因特网(Internet)。
XML应该支持大量不同的应用。
XML应该与SGML兼容。
处理XML文件的程序应该容易编写。
XML中的可选项应无条件地保持最少，理想状况下应该为0个。
XML文件应该是人可以直接阅读的，应该是条理清楚的。
XML的设计应快速完成。
XML的设计应该是形式化的，简洁的。
XML文件应易于创建。
XML标记的简洁性是最后考虑的目标。
本规范与其他相关的标准一起(Unicode和ISO/IEC 10646定义了字符集，Internet
RFC1766定义了语言识别码，ISO 639定义了语言名称代码，ISO 3166定义了国家名称代码
)，提供了理解XML版本1.0和构建相应计算机处理程序所需的所有信息。

在完整保留所有文本和法律注意事项的前提下，本版本的XML规范可以自由分发。

1.2 术语
用于描述 XML 文件的术语在此规范的正文中定义。在这些定义中以及描述一个XML处理器
的动作时，使用了下表中的术语：

可以(may)
允许合乎规范的文件和XML处理器按所描述的方式工作，但不要求必须如此。
必须(must)
要求合乎规范的文件和XML处理器按所描述的方式工作; 否则它们出现错误。
错误(error)
对本规范中的规则的违反; 其结果不确定。合乎规范的软件可以检测和报告错误，并可以
从中恢复。
严重错误(fatal error)
合乎规范的XML处理器必须检测到，并向应用报告的一类错误。在遇到严重错误之后，处
理器可以继续处理数据以发现更多的错误并可以向应用报告这些错误。为了支持错误的更
正，处理器可以向应用提供文件中未经处理的数据(字符数据和标记的混合体)。但是，一
旦检测到一个严重错误，处理器必须停止正常的处理(也就是说，它必须停止以正常的方
式向应用提供与文件逻辑结构有关的数据和信息)。
由用户选择(at user option)
合乎规范的软件可以或者必须(取决于句子中的情态动词)按所描述的方式工作; 如果它满
足这个条件，它必须同时提供用户一种手段，使得用户能够启用和禁用所描述的工作方式
。
有效性约束(validity constraint)
适用于所有有效的XML文件的一种规则。违反有效性约束属于错误;进行验证的XML处理器
必须，由用户选择，报告这些错误。
规范性约束(well-formedness constraint)
适用于所有规范的XML文件的一种规则。违反规范性约束属于严重错误。
匹配(match)
(对于字符串和名字：)被比较的两个字符串或名字必须完全相同。在ISO/IEC 10646中有
多种可能表示方式的字符(例如，既有预定义(precomposed)形式和基字符(base)+变音符
形式的字符)只在两个字符串中的表示方式相同时才匹配。由用户选择，处理器可以将这
些字符规范成某种规范形式。不进行字符的大小写转换。(对于文法中的字符串和规则：
)如果一个字符串属于一个文法产生式产生的语言，则它匹配这个产生式。(对于内容和内
容模型：)当一个元素符合"元素有效性"约束中的描述时，它匹配其声明.
出于兼容性考虑(for compatibility)
仅用于保证与SGML兼容的XML特性。
出于互操作性考虑(for interoperability)
是一个不具约束性的建议，目的是增加XML文件能被在ISO 8879的WebSGML改编附件之前已
有的SGML处理器处理的可能性。
2. 文件
如果一个数据对象满足本规范中规范的定义时，它是一个XML文件。一个规范的XML文件可
以更进一步是有效的如果它满足某些进一步的约束。

每一个XML文件都有逻辑和物理结构。物理上而言，文件由称为实体的单元组成。一个实
体可以引用(refer)其他实体，将它们包含在文件中。文件开始于"根(root)"或文件实体
中。逻辑上而言，文件由声明，元素，注释，字符引用和处理指令组成，所有这些都在文
件中用显式标记指明。逻辑和物理结构必须如"4.3.2 规范的已析实体"中所描述那样严格
地嵌套。

2.1 规范的XML文件(Well-Formed XML Documents)
一个文本对象是一个规范的XML文件如果它满足：

作为一个整体，它匹配document产生式。
它满足本规范中定义的所有规范性约束。
此文件中直接或间接引用的每一个已析实体都是规范的。
文件
[1] document ::= prolog element Misc*

匹配document产生式意味着：

它包含一个或多个元素.
有且仅有一个称为根(root)或文件元素的元素，它不出现在其他任何元素的内容
(content)中。对于其他所有元素，如果起始标签在另一个元素的内容中，则其结束标签
也在同一元素的内容中。换一个更简单的说法，以起始标签和结束标签为界的各个元素，
必须严格地嵌套。
这样做的结果是，对于每一个非根的元素C，文件中另有一个元素P，C在P的内容中，而不
在其他任何被P所包含的元素的内容中。P被称为C的父元素(parent)，而C被称为P的子元
素(child)。

2.2 字符
一个已析实体包含文本(text)，文本是一个字符(character)序列，可以表示标记或字符
数据。一个字符是ISO/IEC 10646[ISO/IEC 10646]中定义的文本最小单元。合法的字符包
括制表符，回车，换行以及Unicode和ISO/IEC 10646中定义的合法的图形字符。不提倡使
用[Unicode]6.8节中定义的"兼容字符(compatibility characters)"。

字符范围
[2] Char ::= #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] |
[#x10000-#x10FFFF] /* 除了替代块(surrogate block)，FFFE和FFFF以外的任意
Unicode字符。*/

将字符代码编码成位模型的机制各个实体间可能会有所不同。所有的XML处理器必须接受
10646中的UTF-8和UTF-16编码；用于指出所用编码或指定使用其他编码的机制在后面的
"4.3.3 实体中的字符编码"中讨论。

2.3 通用语法成分
本节中定义了一些在文法中广泛使用的符号。

S(空白)包括一个或多个空格字符(#x20)，回车，换行和制表符。

空白
[3] S ::= (#x20 | #x9 | #xD | #xA)+

为方便起见，字符被分为字母，数字和其他字符三类。字母可以是字母表中的字母，或是
一个音节基字符(syllabic base character)后跟一个或多个组合字符，也可以是一个表
意字符。在"B. 字符的分类"中给出了每一类字符的完整定义。

名字(name)是以字母或某些标点符号开头的记号，后跟字母，数字，连字符，下划线，冒
号或句号，这些符号统称为命名字符(name character)。以"xml"或其他任何匹配
(('X'|'x') ('M'|'m') ('L'|'l')) 的字符串开头的名字，被保留用于本规范的此版本或
后续版本的标准化。

注意：XML名字中的冒号被保留用于名字空间(name space)实验。它的含义有待于日后标
准化，那时那些将冒号用于实验目的的文件有可能需要更新。(不保证XML采用的任何名字
空间机制会实际采用冒号作为分隔符。)实际上，这意味着除非用于名字空间实验，XML文
件作者不应该在XML名字中使用冒号，但XML处理器应该接受冒号作为一个命名字符。

Nmtoken(名字记号，name token)是任何命名字符的混合体。

名字和记号
[4] NameChar ::= Letter | Digit | '.' | '-' | '_' | ':' | CombiningChar |
Extender
[5] Name ::= (Letter | '_' | ':') (NameChar)*
[6] Names ::= Name (S Name)*
[7] Nmtoken ::= (NameChar)+
[8] Nmtokens ::= Nmtoken (S Nmtoken)*

常量数据是任何用引号括起的字符串，不包括用作分隔符的引号。常量用于指明内部实体
的内容(EntityValue)，属性值(AttValue)，以及外部标识符(SystemLiteral)。注意，对
SystemLiteral的语法分析可以不扫描标记。

常量
[9] EntityValue ::= '"' ([^%&"] | PEReference | Reference)* '"'
         | "'" ([^%&'] | PEReference | Reference)* "'"
[10] AttValue ::= '"' ([^<&"] | Reference)* '"'
         | "'" ([^<&'] | Reference)* "'"
[11] SystemLiteral ::= ('"' [^"]* '"') | "'" [^']* "'")
[12] PubidLiteral ::= '"' PubidChar* '"' | "'" (PubidChar - "'")* "'"
[13] PubidChar ::= #x20 | #xD | #xA | [a-zA-Z0-9] | [-'()+,./:=?;!*#@$_%]

2.4 字符数据和标记
文本由字符数据和标记混合构成。标记包括起始标签，结束标签，空元素标签，实体引用
， 字符引用，注释，CDATA段分隔符，文件类型声明和处理指令。

其他所有非标记的文本组成文件的字符数据。

"and"号(&)和左尖括号(<)只有作为标记分隔符，或在注释，处理指令，或CDATA段中时才
能以常量形式出现。它们在一个内部实体声明的常量实体数值中也是合法的，参见"4.3.2
规范的已析实体"。如果在其他地方需要用到这两个字符，它们必须用数值式字符引用来
转义或分别用字符串"&amp;"和"&lt;"表示。右尖括号(>)可以用"&gt;"表示，而当它在内
容中的字符串"]]>"中出现，但此字符串不表示一个CDATA段的结束时，出于兼容性考虑，
必须用"&gt;"或一个字符引用转义得到。

在一个元素的内容中，字符数据可以是不包括任何标记的起始分隔符的任意字符串。在一
个CDATA段中，字符数据可以是不包括CDATA段结束分隔符"]]>"的任意字符串。

为了允许在属性值中包含单引号和双引号，省略符或称单引号(')可以被表示为"&apos;"
，而双引号(")可以被表示为"&quot;"。

字符数据
[14] CharData ::= [^<&]* - ([^<&]* ']]>' [^<&]*)

2.5 注释
注释可以在其他标记之外的文件中的任何位置出现。另外，它们可以在文件类型声明中文
法允许的地方出现。它们不是文件字符数据的一部分，XML处理器可以，但不是必须，允
许一个应用检索注释文本。出于兼容性考虑，字符串"--"(双连字符)不能在注释中出现。

注释
[15] Comment ::= '<!--' ((Char - '-') | ('-' (Char - '-')))* '-->'

注释的一个例子：

<!-- declarations for <head> & <body> -->

2.6 处理指令
处理指令(PI)允许文件中包含由应用来处理的指令。

处理指令
[16] PI ::= '<?' PITarget (S (Char* - (Char* '?>' Char*)))? '?>'
[17] PITarget ::= Name - (('X' | 'x') ('M' | 'm') ('L' | 'l'))

PI不是文件字符数据的一部分，但必须传递给应用。PI以用于指示传递给哪个应用的目标
(PITarget)开头，目标名字"XML"，"xml"，等等，保留用于本规范的此版本或后续版本的
标准化。XML记法机制可以用于PI目标的形式化声明。

2.7 CDATA段
CDATA段可以出现在字符数据可以出现的任何地方，它们用于转义包含会被识别为标记的
字符串的文本块。CDATA段以字符串"<![CDATA["开始，以字符串"]]>"结束：

CDATA段
[18] CDSect ::= CDStart CData CDEnd
[19] CDStart ::= '<![CDATA['
[20] CData ::= (Char* - (Char* ']]>' Char*))
[21] CDEnd ::= ']]>'

在一个CDATA段内，只有CDEnd字符串被识别为标记，因此左尖括号和"&"可以以它们的常
量形式出现，不需要(也不能)被换码为"&lt;"和"&amp;"。CDATA段不能嵌套。

一个CDATA段的例子，其中"<greeting>"和"</greeting>"被识别为字符数据，而不是标记
：

<![CDATA[<greeting>Hello, world!</greeting>]]>

2.8 序(prolog)和文件类型声明
XML文件可以，也应该以一个XML声明开始，其中指明了所用XML的版本。 例如，以下是一
个完整的XML文件，它是规范的，但不是有效的：

<?xml version="1.0"?>
<greeting>Hello, world!</greeting>

下面这个也同样：

<greeting>Hello, world!</greeting>

版本号"1.0"应该用于表明对与规范此版本相一致，如果使用了值"1.0"但又与本规范的此
版本不一致，那么这是文件的一个错误。XML工作组打算赋予本规范的后续版本不同于
"1.0"的数值，但这并不代表开发后续版本的承诺，也不代表如果有后续版本，会使用任
何特殊的命名方案的承诺。因为不排除有后续版本的可能性，提供了本构造(construct)
作为一旦需要时进行自动版本识别的手段。当处理器收到的文件标有它们不支持的版本时
，可以给出一个错误。

XML文件中标记的功能是描述文件的存储格式和逻辑结构，并将属性-值对和逻辑结构关联
起来。XML提供一种称为文件类型声明的机制，用于定义对逻辑结构的约束，支持预定义
存储单元的使用。如果一个XML文件有相应的文件类型声明并且它遵循其中的约束，则称
它是有效的(valid)。

文件类型声明必须位于文件第一个元素之前。

序
[22] prolog ::= XMLDecl? Misc* (doctypedecl Misc*)?
[23] XMLDecl ::= '<?xml' VersionInfo EncodingDecl? SDDecl? S? '?>'
[24] VersionInfo ::= S 'version' Eq (' VersionNum ' | " VersionNum ")
[25] Eq ::= S? '=' S?
[26] VersionNum ::= ([a-zA-Z0-9_.:] | '-')+
[27] Misc ::= Comment | PI | S

XML文件类型声明包含或指向标记声明，标记声明提供某一类文件的文法。这种文法被称
为文件类型定义(document type difinition，DTD)。文件类型定义可以指向一个外部子
集(一种特殊类型的外部实体)，或者可以在一个内部子集中直接包含标记声明，或者两者
兼用。一个文件的文件类型定义由这两个子集合在一起组成。

标记声明可以是元素类型声明，属性表声明，实体声明，或是记法声明。这些声明可以如
下面规范性和有效性约束中所述，全部或部分地包含在参数实体中，完整的信息参见"4.
物理结构"。

文件类型定义
[28] doctypedecl ::= '<!DOCTYPE' S Name (S ExternalID)? S? ('['
(markupdecl | PEReference | S)* ']' S?)? '>' [ VC: 根元素类型 ]
[29] markupdecl ::= elementdecl | AttlistDecl | EntityDecl | NotationDecl
| PI | Comment [ VC: 严格的声明/PE嵌套 ]
            [ WFC: 内部子集中的PE ]

标记声明可以全部或部分地由参数实体的置换文本组成。本规范后面的各个非终结符
(elementdecl，AttlistDecl，等等)产生式描述的是在所有的参数实体被包含(include)
之后的声明。

有效性约束: 根元素类型(Root Element Type)
文件类型声明中的Name必须匹配根元素的类型。

有效性约束: 严格的声明/PE嵌套
参数实体的置换文本必须用标记声明严格嵌套。即，如果一个标记声明(上面的
markupdecl)的第一个或最后一个字符被包含于一个参数实体引用的置换文本中，两者必
须都在此置换文本中。

规范性约束: 内部子集中的PE
在内部DTD子集中，参数实体引用只能出现在标记声明可以出现的地方，而不能在标记声
明内部出现。(这个约束不适用于出现在外部参数实体内的引用，也不适用于外部子集。
)

同内部子集一样，外部子集和任何DTD中引用的外部参数实体，必须由一系列被非终结符
markupdecl所允许的完整的标记声明组成，其中可以夹杂空白字符或参数实体引用。但是
，外部子集和外部参数实体的部分内容可以通过使用条件段(conditional section)被有
条件地忽略，在内部子集中则不允许这么做。

外部子集
[30] extSubset ::= TextDecl? extSubsetDecl
[31] extSubsetDecl ::= ( markupdecl | conditionalSect | PEReference | S )*

外部子集和外部参数实体与内部实体不同之处还在于：在它们内，参数实体引用不仅可以
出现在标记声明间，还可以出现在标记声明内。

有文件类型声明的XML文件的例子：

<?xml version="1.0"?>
<!DOCTYPE greeting SYSTEM "hello.dtd">
<greeting>Hello, world!</greeting>

系统标识符"hello.dtd"给出了文件DTD的URI。

声明也可以如同下面这个例子一样直接(locally)给出：

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE greeting [
<!ELEMENT greeting (#PCDATA)>
]>
<greeting>Hello, world!</greeting>

如果同时使用外部和内部子集，子集子集被看成出现在外部子集之前，这意味着内部子集
中的实体和属性表声明的优先级要比在外部子集中的高。

2.9 独立文件声明
当文件从XML处理器递给应用时，标记声明可以影响它的内容，属性缺省值和实体声明是
其中的例子。可以作为XML声明成分的独立文件声明，指明了对于文件实体而言，是否存
在外部的声明。

独立文件声明
[32] SDDecl ::= S 'standalone' Eq (("'" ('yes' | 'no') "'") | ('"' ('yes'
| 'no') '"')) [ VC: 独立文件声明 ]

在一个独立文件声明中，值"yes"表示对于文件实体没有外部标记声明(不论是在DTD外部
子集中，还是在由内部实体引用的外部参数实体中)会影响从XML处理器传递给应用的信息
。值"no"表示有或可能有这样的外部标记声明。注意独立文件声明只是表示外部声明的存
在，如果文件中存在对外部实体的引用，而这些实体已在内部声明时，不影响它的独立状
态。

如果不存在外部标记声明，独立文件声明没有意义。如果存在外部标记声明，但没有独立
文件声明，就假定取值"no"。

某些网络传输应用也许需要独立的文件，任何满足standalone="no"的XML文件可以通过一
定的算法转换为独立文件。

有效性约束: 独立文件声明
独立文件声明必须取值为"no"，如果任何外部标记声明中包含：

有缺省值的属性声明，如果适用这些属性的元素出现在文件中而又没有给这些属性赋值的
话。
(除了amp，lt，gt，apos，quot的)实体声明，而对这些实体的引用出现在文件中的话。

需要规范化的属性声明，如果这些出现在文件中的属性的值会因规范化而改变的话。
具有元素内容的元素类型声明，如果在这些类型的任一实例中直接出现空白的话。
具有独立文件声明的XML声明的例子：

<?xml version="1.0" standalone='yes'?>

2.10 空白处理
在编辑XML文件时，使用"空白"(空格，制表符，空行，在本规范中用非终结符S表示)来分
开标记以获得更好的可读性是很方便的。通常在文件的交付版本中不想包含这些空白。另
一方面，必须保留在交付版本中的有意义的空白是很常见的，如在诗歌和源码中的空白。

XML处理器必须始终把不是标记的所有字符传递给应用。一个进行验证的XML处理器必须同
时通知应用这些字符中的那一些组成了出现在元素内容中的空白。

可以在元素中附加一个名为xml:space的特殊属性，以通知应用应该保留此元素中的空白
。在有效的文件中，此属性和其他属性一样，使用时必须声明。它必须被声明为枚举类型
，只有"default"和"preserve"两个可能的值。例如：

<!ATTLIST poem xml:space (default|preserve) 'preserve'>

"default"表示可以对此元素使用应用的缺省空白处理模式，"preserve"表示应用应该保
留所有的空白。这适用于其所处元素的内容中的所有元素，除非被另一个xml:space属性
的实例所覆盖。

任何文件的根元素被认为对应用的空白处理方式不作要求，除非它给此属性赋了值或将此
属性声明为带缺省值。

2.11 行尾处理
为编辑的方便起见，存储XML已析实体的计算机文件经常用行来组织。通常这些行用回车
符(#xD)和换行符(#xA)的一些组合来分隔。

为了使应用的工作简单化，对于一个外部已析实体或内部已析实体的常量实体值中包含的
任何两字符常量序列"#xD#xA"或单独的常量#xD，XML处理器都应换成#xA传递给应用。(这
可以通过在进行语法分析前将所有行分隔符规范成#xA而方便地实现。)

2.12 语言标识
在进行文件处理时，标识出其内容所使用的自然或形式化语言经常是很有用的。可以在文
件中插入一个名为xml:lang的特殊属性用于指出XML文件中任何元素的内容和属性所使用
的语言。在有效的文件中，此属性和其他属性一样，使用时必须声明。此属性的值是
[IETF RFC 1766]，"语言标识码"中定义的语言标识符：

语言标识
[33] LanguageID ::= Langcode ('-' Subcode)*
[34] Langcode ::= ISO639Code | IanaCode | UserCode
[35] ISO639Code ::= ([a-z] | [A-Z]) ([a-z] | [A-Z])
[36] IanaCode ::= ('i' | 'I') '-' ([a-z] | [A-Z])+
[37] UserCode ::= ('x' | 'X') '-' ([a-z] | [A-Z])+
[38] Subcode ::= ([a-z] | [A-Z])+

Langcode可以是下列值：

[ISO 639]，"语言名称的表示码"中定义的两字母语言码。
在Internet Assigned Numbers Authority [IANA]注册的语言标识码，以前缀"i-"(或
"I-")开头。
用户定义或经各方同意的专用语言标识符，必须以前缀"x-"或"X-"开头，以保证它们不会
和以后经IANA标准化或在IANA注册的名字相冲突。
可以有任意多个Subcode段，如果第一个子代码段存在，并且子代码由两个字母组成，那
么此子代码必须是[ISO 3166]，"国家名称的表示码"中定义的国家代码。如果第一个子代
码多于两个字母，那么它必须是在IANA注册的语言代码所表示的语言的子代码，除非它
Langcode以前缀"x-"或"X-"开头。

习惯上用小写字母给出语言代码，用大写字母给出国家代码(如果有的话)。注意这些值与
XML文件中的其他名字不同，是大小写无关的。

举例如下：

<p xml:lang="en">The quick brown fox jumps over the lazy dog.</p>
<p xml:lang="en-GB">What colour is it?</p>
<p xml:lang="en-US">What color is it?</p>
<sp who="Faust" desc='leise' xml:lang="de">
<l>Habe nun, ach! Philosophie,</l>
<l>Juristerei, und Medizin</l>
<l>und leider auch Theologie</l>
<l>durchaus studiert mit hei遝m Bem黨'n.</l>
</sp>

xml:lang所表示的语言选择适用于它所处元素的所有属性和内容，除非被此内容中的元素
内的另一个xml:lang的实例所覆盖。

xml:lang的一个简单声明可以采用如下形式：

xml:lang NMTOKEN #IMPLIED

但是如果合适的话，也可以给出特定的缺省值。在一本供英国学生使用的法文诗歌集中，
评注和注解使用英语，xml:lang属性可以这样声明：

<!ATTLIST poem xml:lang NMTOKEN 'fr'>
<!ATTLIST gloss xml:lang NMTOKEN 'en'>
<!ATTLIST note xml:lang NMTOKEN 'en'>

3. 逻辑结构
每个XML文件包含一个或多个元素，它们的边界用起始标签和结束标签分隔，或者，对于
空元素，用一个空元素标签分隔。每一个元素有一个用名字标识的类型，有时称之为它的
"通用标识符(generic identifier)"(GI)，同时它可以有一个属性说明(attribute
specification)集。每一个属性说明有一个名字和一个值。

元素
[39] element ::= EmptyElemTag
         | STag content ETag [ WFC: 元素类型匹配 ]
            [ VC: 元素有效性 ]

除了那些开头匹配(('X'|'x')('M'|'m')('L'|'l'))的名字保留用于本规范的此版本和后
继版本的标准化外，本规范不对元素类型和属性的语义，用法和名字(语法之外)作出限制
。

规范性约束: 元素类型匹配
元素结束标签中的Name必须和起始标签中的元素类型相匹配。

有效性约束: 元素有效性
如果有一个与elementdecl相匹配的声明的Name与元素类型相匹配，且下述之一成立时，
称此元素是有效的：

此声明与EMPTY相匹配，同时此元素没有内容。
此声明与children相匹配，同时子元素的序列属于内容模型中的正则表达式所产生的语言
，在每对子元素间允许有空白(匹配非终结符S的字符)。
此声明与Mixed相匹配，同时内容由其类型匹配内容模型中的名字的字符数据和子元素组
成。
此声明与ANY相匹配，同时每个子元素的类型均已声明。
3.1 起始标签，结束标签和空元素标签
每一个非空XML元素以一个起始标签作为开始的标记。

起始标签
[40] STag ::= '<' Name (S Attribute)* S? '>' [ WFC: 唯一的属性说明 ]
[41] Attribute ::= Name Eq AttValue [ VC: 属性值类型 ]
            [ WFC: 无外部实体引用 ]
            [ WFC: 在属性值中没有< ]

起始标签和结束标签中的Name给出了元素的类型。Name-AttValue对被统称为元素的属性
说明，其中每一对中的Name被称为属性名，AttValue的内容(在'或"分隔符间的文本)被称
为属性值。

规范性约束: 唯一的属性说明
一个属性名只能在同一个起始标签或空元素标签中出现一次。

有效性约束: 属性值类型
属性必须被声明，其值必须具有所声明的类型。(属性类型参见"3.3 属性表声明"。)

规范性约束: 无外部实体引用
属性值不能包含对外部实体直接或间接的实体引用。

规范性约束: 在属性值中没有<
在一个属性值中直接或间接引用的实体的置换文本(除了"&lt;")不能包含<。

起始标签的一个例子：

<termdef id="dt-dog" term="dog">

由一个起始标签开始的每一个元素必须用一个结束标签标记其结束，结束标签中的名字必
须与起始标签中给出的元素类型相同：

结束标签
[42] ETag ::= '</' Name S? '>'

结束标签的一个例子：

</termdef>

在起始标签和结束标签中的文本被称为元素的内容：

元素的内容
[43] content ::= (element | CharData | Reference | CDSect | PI | Comment)*

如果一个元素为空，它必须表示为一个起始标签紧跟一个结束标签或空元素标签。一个空
元素标签采用一种特殊的形式：

空元素标签
[44] EmptyElemTag ::= '<' Name (S Attribute)* S? '/>' [ WFC: 唯一的属性说明
]

不论元素是否用关键字EMPTY声明，空元素标签都可以用于任何没有内容的元素。出于互
操作性考虑，空元素必须用于，且只能用于声明为EMPTY的元素。

空元素的例子：

<IMG align="left"
src="http://www.w3.org/Icons/WWW/w3c_home" />
<br></br>
<br/>

3.2 元素类型声明
出于验证的目的，可以用元素类型和属性表声明限制XML文件中元素的结构。元素类型声
明限制了元素的内容。

元素类型声明通常限制了子元素的类型。由用户选择，当声明提到的元素类型没有相应的
声明时，XML处理器可以给出警告，但这不是一个错误。

元素类型声明形式如下：

元素类型声明 ode>唯一的属性说明 ]

不论元素是否用关键字EMPTY声明，空元素标签都可以用于任何没有内容的元素。出于互
操作性考虑，空元素必须用于，且只能用于声明为EMPTY的元素。

空元素的例子：

<IMG align="left"
src="http://www.w3.org/Icons/WWW/w3c_home" />
<br></br>
<br/>

3.2 元素类型声明
出于验证的目的，可以用元素类型和属性表声明限制XML文件中元素的结构。元素类型声
明限制了元素的内容。

元素类型声明通常限制了子元素的类型。由用户选择，当声明提到的元素类型没有相应的
声明时，XML处理器可以给出警告，但这不是一个错误。

元素类型声明形式如下：

元素类型声明
[45] elementdecl ::= '<!ELEMENT' S Name S contentspec S? '>' [ VC: 唯一的元
素类型声明 ]
[46] contentspec ::= 'EMPTY' | 'ANY' | Mixed | children

其中Name给出了所声明的元素类型。

有效性约束: 唯一的元素类型声明
元素类型只能声明一次。

元素类型声明的例子：

<!ELEMENT br EMPTY>
<!ELEMENT p (#PCDATA|emph)* >
<!ELEMENT %name.para; %content.para; >
<!ELEMENT container ANY>

3.2.1 元素内容
当某一类型的元素只能包含用可选空白(匹配非终结符S)分隔的子元素(无字符数据)时，
称此元素类型具有元素内容。在这种情况下，有内容模型作为类型限制之一，内容模型是
决定子元素类型和子元素出现顺序的一种简单文法。此文法用内容粒子(cp)构建，内容粒
子由名字，内容粒子的选择表(choice list)或内容粒子的序列表(sequence list)组成：

元素内容的模型
[47] children ::= (choice | seq) ('?' | '*' | '+')?
[48] cp ::= (Name | choice | seq) ('?' | '*' | '+')?
[49] choice ::= '(' S? cp ( S? '|' S? cp )* S? ')' [ VC: 严格的组/PE嵌套
]
[50] seq ::= '(' S? cp ( S? ',' S? cp )* S? ')' [ VC: 严格的组/PE嵌套 ]

其中每一个Name是可以作为子元素的元素的类型。选择表中出现的任意内容粒子在元素内
容中允许出现的位置对应于选择表在文法中的位置。序列表中出现的所有内容粒子必须以
相同的顺序出现在元素内容中。在名字或表之后的可选字符(optional character)决定了
表中元素或内容粒子可以出现一次或多次(+)，还是零次或多次(*)，或是零次或一次(?)
。没有这样一个操作符意味着元素或内容粒子必须恰好出现一次。这种语法和意义和本规
范中的产生式中所使用的相同。

当且仅当一个元素的内容可以通过满足内容模型中的选择，序列和重复操作符得到，并且
内容中的每一个元素与内容模型中的一种元素类型相匹配时，称此元素的内容与一个内容
模型相匹配。出于兼容性考虑， 如果文件的某个元素可以和内容模型中的一种元素类型
多次匹配，这是一个错误。 更详细的信息参见"E. 确定型内容模型".

有效性约束: 严格的组/PE嵌套
参数实体的置换文本用括号括起的组严格嵌套。即，如果choice，seq或Mixed语法成分的
开始或结束括号出现在某个参数实体的置换文本中，两者必须同在此置换文本中。出于互
操作性考虑，如果一个参数实体引用出现在choice，seq或Mixed语法成分中时，它的置换
文本不应为空，同时其置换文本的第一个和最后一个非空字符不应为一个连接符(|或,)。

元素内容模型的例子：

<!ELEMENT spec (front, body, back?)>
<!ELEMENT div1 (head, (p | list | note)*, div2*)>
<!ELEMENT dictionary-body (%div.mix; | %dict.mix;)*>

3.2.2 混合型内容(Mixed Content)
当某元素类型可以包含字符数据，其间可以随意穿插子元素时，称此元素类型具有混合型
内容。在这种情况下，对子元素的类型可能有所限制，但对它们的次序和出现次数没有限
制：

混合型内容声明
[51] Mixed ::= '(' S? '#PCDATA' (S? '|' S? Name)* S? ')*'
         | '(' S? '#PCDATA' S? ')' [ VC: 严格的组/PE嵌套 ]
            [ VC: 无重复类型 ]

其中Name给出了子元素的元素的类型。

有效性约束: 无重复类型
同一名字在单个混合型内容声明中只能出现一次。

混合内容声明的例子：

<!ELEMENT p (#PCDATA|a|ul|b|i|em)*>
<!ELEMENT p (#PCDATA | %font; | %phrase; | %special; | %form;)* >
<!ELEMENT b (#PCDATA)>

3.3 属性表声明
属性用于关联名字-值对和元素。属性说明只能在起始标签和空元素标签中出现; 因此，
用于识别它们的产生式出现在"3.1 起始标签，结束标签和空元素标签"中。属性表声明可
以用于：

定义与一给定元素类型有关的属性集。
确定这些属性的类型限制。
提供属性的缺省值。
属性表声明 详细说明了与给定元素类型相关联的每一个属性的名字，数据类型和缺省值
(如果有的话)：

属性表声明
[52] AttlistDecl ::= '<!ATTLIST' S Name AttDef* S? '>'
[53] AttDef ::= S Name S AttType S DefaultDecl

AttlistDecl规则中Name是元素的类型。由用户选择，当属性声明相关的元素类型没有被
声明时，XML处理器可以给出一个警告，但这不是一个错误。AttDef规则中的Name是属性
的名字。

当与某个给定元素类型相关的AttlistDecl超过一个时，这些声明中的内容被合并在一起
。当给定元素类型的某个属性的定义超过一个时，绑定第一个定义，其余定义被忽略。出
于互操作性考虑，DTD的作者可以选择一个给定的元素类型至多有一个属性表声明，一个
给定的属性名至多有一个属性定义，以及每个属性表声明至少有一个属性定义。出于互操
作性考虑，当一个给定元素有超过一个的属性表声明或一个给定属性有超过一个的属性定
义时，XML处理器可以，由用户选择，给出警告，但这不是一个错误。

3.3.1 属性类型
XML属性有三种类型：字符串类型，一组记号化类型和枚举类型。字符串类型可以以任意
常量字符串为值; 各个记号化类型有不同的词法和语义约束，如下：

属性类型
[54] AttType ::= StringType | TokenizedType | EnumeratedType
[55] StringType ::= 'CDATA'
[56] TokenizedType ::= 'ID' [ VC: ID ]
            [ VC: 每种元素类型一个ID ]
            [ VC: ID属性的缺省值 ]
         | 'IDREF' [ VC: IDREF ]
         | 'IDREFS' [ VC: IDREF ]
         | 'ENTITY' [ VC: 实体名 ]
         | 'ENTITIES' [ VC: 实体名 ]
         | 'NMTOKEN' [ VC: 名字记号 ]
         | 'NMTOKENS' [ VC: 名字记号 ]

有效性约束: ID
ID类型的值必须匹配Name产生式。作为此类型值的名字只能在XML文件中出现一次;即，
ID类型的值必须能唯一标识元素。

有效性约束: 每种属性类型一个ID
每种属性类型只能有一个ID属性。

有效性约束: ID属性的缺省值
ID属性必须有一个声明为#IMPLIED或#REQUIRED的缺省值。

有效性约束: IDREF
IDREF类型的值必须匹配Name产生式，IDREFS类型的值必须匹配Names产生式；每一个
Name必须匹配XML文件中某些元素ID属性的值；也就是说，IDREF类型的值必须匹配某些
ID属性的值。

有效性约束: 实体名
ENTITY类型的值必须匹配Name产生式，ENTITIES类型的值必须匹配Names产生式；每一个
Name必须匹配DTD中声明的未析实体的名字。

有效性约束: 名字记号
NMTOKEN类型的值必须匹配Nmtoken产生式;NMTOKENS类型的值必须匹配Nmtokens产生式。

枚举类型的属性可以在声明中提供的取值表中取值。有两种枚举类型：

枚举属性类型
[57] EnumeratedType ::= NotationType | Enumeration
[58] NotationType ::= 'NOTATION' S '(' S? Name (S? '|' S? Name)* S? ')' [
VC: 记法属性 ]
[59] Enumeration ::= '(' S? Nmtoken (S? '|' S? Nmtoken)* S? ')' [ VC: 枚举
]

一个NOTATION类型的属性标识了一种用于解释与此属性相关的元素的记法，此记法中用系
统或公共标识符在DTD中声明。

有效性约束: 记法属性
此类型的值必须与声明中所包含的记法名之一相匹配;声明中的所有记法名都必须声明。

有效性约束: 枚举
此类型的值必须与声明中所包含的Nmtoken记号之一相匹配。

出于互操作性考虑，同一Nmtoken只能在单个元素类型的枚举属性类型中出现一次。

3.3.2 属性缺省值
属性声明提供的信息指明了某属性是否必须出现，同时指明了在被声明的属性不是必须出
现而文件中没有出现此属性的情况下，XML处理器应如何处理。

属性缺省值
[60] DefaultDecl ::= '#REQUIRED' | #IMPLIED'
         | (('#FIXED' S)? AttValue) [ VC: 必须的属性 ]
            [ VC: 合法的属性缺省值 ]
            [ WFC: 在属性值中无< ]
            [ VC: 固定的属性缺省值 ]

在一个属性声明中，#REQUIRED表示必须总是提供此属性，#IMPLIED表示不提供缺省值。
如果声明既不是#REQUIRED，也不是#IMPLIED，那么AttValue值包含了所声明的缺省值;关
键字#FIXED规定此属性必须总是有缺省值。如果声明了一个缺省值，当XML处理器遇到一
个被省略的属性时，它将当成此属性以缺省值出现

有效性约束: 必须的属性
如果缺省值声明是关键字#REQUIRED，那么在所有此类型元素的属性表声明中必须有此属
性。

有效性约束: 合法的属性缺省值
被声明的属性缺省值必须满足被声明的属性类型的词法约束。

有效性约束: 固定的属性缺省值
如果某属性的缺省值用关键字#FIXED声明，此属性的所有实例必须匹配该缺省值。

属性表声明的例子：

<!ATTLIST termdef
id ID #REQUIRED
name CDATA #IMPLIED>
<!ATTLIST list
type (bullets|ordered|glossary) "ordered">
<!ATTLIST form
method CDATA #FIXED "POST">

3.3.3 属性-值对的规范化(Attribute-Value Normalization)
在将属性的值传给应用或检验有效性之前，XML处理器必须将其规范化：

对字符引用的处理是将被引用的字符附加在属性值之后
对实体引用的处理是递归地处理实体的置换文本
对空白字符(#x20，#xD，#xA，#x9)的处理是将#x20附加在规范化的值之后，例外是对作
为内部已析实体或内部已析实体常量实体值一部分的"#xD#xA"只附加一个#x20。
对于其他字符的处理是将它们附加与规范化的值之后
如果被声明的值不是CDATA，那么XML处理器必须继续处理规范化后的值，去掉其前导和尾
随空格(#x20)字符，并将空格(#x20)字符序列替换成单个空格(#x20)字符。

不进行验证的语法分析器应该将所有尚未读到声明部分的属性当成被声明为CDATA。

3.4 条件段(Conditional Sections)
条件段是文件类型声明外部子集的一部分，取决于相应的关键字，它们或被包含在DTD逻
辑结构之内，或被排除在DTD逻辑结构之外。

条件段
[61] conditionalSect ::= includeSect | ignoreSect
[62] includeSect ::= '<![' S? 'INCLUDE' S? '[' extSubsetDecl ']]>'
[63] ignoreSect ::= '<![' S? 'IGNORE' S? '[' ignoreSectContents* ']]>'
[64] ignoreSectContents ::= Ignore ('<![' ignoreSectContents ']]>'
Ignore)*
[65] Ignore ::= Char* - (Char* ('<![' | ']]>') Char*)

同内部或外部DTD子集一样，条件段可以包含一个或多个完整的声明，注释，处理指令，
或嵌套的条件段，其间可以夹杂空白。

如果条件段的关键字是INCLUDE，那么条件段的内容是DTD的一部分，如果条件段的关键字
是IGNORE，那么条件段的内容逻辑上不是DTD的一部分。注意对于可靠的语法分析过程，
甚至必须读取被忽略的条件段的内容以检测嵌套的条件段，保证最外层(被忽略)的条件段
的结尾被恰当地检测到。如果一个关键字为INCLUDE的条件段出现在更大的关键字为
IGNORE的条件段中，内外两个条件段都被忽略。

如果条件段的关键字是一个参数实体引用，处理器在决定是否包含或忽略此条件段前，必
须先将该参数实体置换成其内容。

一个例子：

<!ENTITY % draft 'INCLUDE' >
<!ENTITY % final 'IGNORE' >

<![%draft;[
<!ELEMENT book (comments*, title, body, supplements?)>
]]>
<![%final;[
<!ELEMENT book (title, body, supplements?)>
]]>

4. 物理结构
一个XML文件可能包含一个或多个存储单元。它们被称为实体(entity);它们都具有内容并
且都用名字进行标识(除了文件实体，见下，和外部DTD子集之外)。每一个XML文件有一个
称为文件实体的实体，它作为XML处理器处理的起点并可能包含了整个文件。

实体可以是已析的或未析的。已析实体(parsed entity)的内容被称为它的置换文本;此文
本被看成是文件整体的一部分。

未析实体(unparsed entity)是一种资源，其内容可以是也可以不是文本，并且，如果是
文本的话，可以不是XML。每一个未析实体有一个相关联的用名字标识的记法。除了要求
XML处理器能向应用提供实体和记法的标识符之外，XML对未析实体的内容不作任何限制。

已析实体以实体引用的方式使用名字来调用;未析实体用ENTITY或ENTITIES属性中给出的
名字调用。

普通实体(general entity)是那些在文件内容中使用的实体。在本规范中，普通实体有时
用未修饰的术语entity来表示。参数实体是用于DTD内的已析实体。这两类实体用不同形
式的引用，在不同的上下文中识别。另外，它们使用不同的名字空间;具有相同名字的参
数实体和普通实体是两个截然不同的两个实体。

4.1 字符和实体引用(Character and Entity References)
一个字符引用引用ISO/IEC 10646字符集中的一个字符。例如不能用输入设备直接输入的
字符。

字符引用
[66] CharRef ::= '&#' [0-9]+ ';'
         | '&#x' [0-9a-fA-F]+ ';' [ WFC: 合法字符 ]

规范性约束: 合法字符
用字符引用引用的字符必须匹配Char产生式。

如果字符引用以"&#x"开头，直到终结;的数字和字母提供了某字符在ISO/IEC 10646中代
码的一个十六进制表示。如果它仅以"&#"开头，直到终结;的数字提供了某字符的代码的
十进值表示。

实体引用(entity reference)引用一个命名实体的内容。对已析普通实体的引用使用
"and"号(&)和分号(;)作为分隔符。参数实体引用则使用百分号(%)和分号(;)作为分隔符
。

实体引用
[67] Reference ::= EntityRef | CharRef
[68] EntityRef ::= '&' Name ';' [ WFC: 声明实体 ]
            [ VC: 声明实体 ]
            [ WFC: 已析实体 ]
            [ WFC: 无递归 ]
[69] PEReference ::= '%' Name ';' [ VC: 声明实体 ]
            [ WFC: 无递归 ]
            [ WFC: 在DTD内 ]

规范性约束: 声明实体
在一个没有任何DTD的文件，或一个只有不包含参数实体引用的内部DTD子集的文件，或一
个"standalone='yes'"的文件内，在实体引用中给出的Name必须与实体声明中所给出的相
匹配，但规范的文件不需要声明以下的这些实体：amp，lt，gt，apos和quot。参数实体
的声明必须先于任何对它的引用。类似地，普通实体的声明必须先于任何在属性表声明中
的缺省值中出现的对它的引用。注意对于在外部子集或外部参数实体中声明的实体，不进
行验证的处理器不必要读取和处理它们的声明;对这些文件，仅当standalone='yes'时，
实体必须被声明的规则才是一个规范性约束。

有效性约束: 声明实体
在一个有外部子集或外部参数实体且"standalone='no'"的实体中，实体引用中给出的
Name必须与实体声明中所给出的相匹配。出于互操作性考虑，有效的文件应该以"4.6 预
定义实体"中的简化形式声明实体amp，lt，gt，apos和quot。参数实体的声明必须先于任
何对它的引用。类似地，普通实体的声明必须先于任何在属性表声明中的缺省值中出现的
对它的引用。

规范性约束: 已析实体
实体引用不能包含一个未析实体的名字。未析实体只能在声明为ENTITY或ENTITIES的属性
值中引用。

规范性约束: 无递归
已析实体不能直接或间接地包含对自身的递归引用。

规范性约束: 在DTD内
参数实体引用只能在DTD中出现。

字符引用和实体引用的例子：

Type <key>less-than</key> (&#x3C;) to save options.
This document was prepared on &docdate; and
is classified &security-level;.

参数实体引用的例子：

<!-- declare the parameter entity "ISOLat2"... -->
<!ENTITY % ISOLat2
SYSTEM "http://www.xml.com/iso/isolat2-xml.entities" >
<!-- ... now reference it. -->
%ISOLat2;

4.2 实体声明(Entity Declaration)
实体以如下方式声明：

实体声明
[70] EntityDecl ::= GEDecl | PEDecl
[71] GEDecl ::= '<!ENTITY' S Name S EntityDef S? '>'
[72] PEDecl ::= '<!ENTITY' S '%' S Name S PEDef S? '>'

[73] EntityDef ::= EntityValue | (ExternalID NDataDecl?)
[74] PEDef ::= EntityValue | ExternalID

实体引用中的Name标识了该实体;对于未析实体，ENTITY或ENTITIES属性的值标识了该实
体。如果同一实体被声明了不止一次，绑定第一个遇到的声明。由用户选择，如果实体被
多次声明，XML处理器可以给出警告。

4.2.1 内部实体(Internal Entities)
如果实体定义是一个EntityValue，被定义的实体被称为内部实体。内部实体没有单独的
物理存储对象，实体的内容在声明中给出。注意常量实体值中一些实体和字符引用的处理
可能要求产生正确的置换文本：参见"4.5 内部置换文本的构造"。

内部实体是已析实体。

内部实体声明的例子：

<!ENTITY Pub-Status "This is a pre-release of the
specification.">

4.2.2 外部实体(External Entities)
如果实体不是内部的，那么它是一个外部实体，声明如下：

外部实体声明
[75] ExternalID ::= 'SYSTEM' S SystemLiteral
         | 'PUBLIC' S PubidLiteral S SystemLiteral
[76] NDataDecl ::= S 'NDATA' S Name [ VC: 声明记法 ]

如果有NDataDecl，那么这是一个普通未析实体;否则它是一个已析实体。

有效性约束: 声明记法
Name必须与记法的名字相匹配。

SystemLiteral被称为该实体的系统标识符。这是一个URI，可以用于存取此实体。注意井
号(#)和URI中常用的片断标识符形式上而言不是URI的一部分；如果一个片断标识符作为
系统标识符的部分给出，XML处理器可以给出一个错误。除非在本规范范围之外另外给出
(如，一个特殊DTD中定义的专用XML元素类型，或一个特殊应用规范中定义的处理指令)，
相对URI指相对于实体声明所在资源的位置。因此，一个URI可能是相对于文件实体，或相
对于包含外部DTD子集的实体，或相对于其他一些外部参数实体。

XML处理器处理URI中的非ASCII字符时，应该将UTF-8中的字符用一个或多个字节表示，然
后将这些字符用URI转义机制转义(即，将每个字节转换成%HH，其中HH是字节值的十六进
制记法)。

除了系统标识符之外，外部标识符还可以包含公共标识符。试图存取实体内容的XML处理
器可以用公共标识符试着产生一个可选URI。如果处理器无法做到这一点，它必须使用系
统常量中的URI。在试着匹配之前，公共标识符中所有空白字符串必须被规范为单个空格
字符(#x20)，同时必须去掉前导和尾随空白。

外部实体声明的例子：

<!ENTITY open-hatch
SYSTEM "">http://www.textuality.com/boilerplate/OpenHatch.xml">
<!ENTITY open-hatch
PUBLIC "-//Textuality//TEXT Standard open-hatch boilerplate//EN"
"">http://www.textuality.com/boilerplate/OpenHatch.xml">
<!ENTITY hatch-pic
SYSTEM "../grafix/OpenHatch.gif"
NDATA gif >

4.3 已析实体(Parsed Entities)
4.3.1 文本声明(Text Declaration)
每个外部已析实体可以以文本声明作为开始。

文本声明
[77] TextDecl ::= '<?xml' VersionInfo? EncodingDecl S? '?>'

文本声明必须以常量形式给出，而不能使用已析实体的引用。文本声明只能在外部已析实
体的开头出现，不允许在其他任何地方出现。

4.3.2 规范的已析实体(Well-Formed Parsed Entities)
如果文件实体匹配document产生式，那么它是规范的。如果外部普通已析实体匹配
extParsedEnt产生式，那么它是规范的。如果外部参数实体匹配extPE产生式，那么它是
规范的。

规范的外部已析实体
[78] extParsedEnt ::= TextDecl? content
[79] extPE ::= TextDecl? extSubsetDecl

如果内部普通已析实体的置换文本匹配content产生式，那么它是规范的。根据定义，所
有内部的参数实体都是规范的。

实体符合规范性的一个结果是XML文件的逻辑和物理结构是严格嵌套的;起始标签，结束标
签，空元素标签，元素，注释，处理指令，字符引用，或实体引用都不能在一个实体中开
始而在另一个实体中结束。

4.3.3 实体中的字符编码(Character Encoding in Entities)
XML文件中的每个外部已析实体都可以对其字符采用一种不同的编码方案。所有XML处理器
必须能读编码为UTF-8或UTF-16的实体。

以UTF-16编码的实体必须以ISO/IEC 10646增补E和Unicode附录B(零宽度不间断空格字符
，#xFEFF)中所描述的字节次序标记(Byte Order Mark)开头。这是一个编码签名，即不是
XML文件中标记的一部分，也不是XML文件字符数据的一部分。XML处理器必须能用此字符
区分UTF-8编码和UTF-16编码的文件。

虽然XML处理器只被要求能读取UTF-8和UTF-16编码的实体，已有共识认为世界上还有其他
的编码方案。有时可能想让XML处理器读取以那些编码方案编码的实体。以不同与UTF-8和
UTF-16的编码方案存储的实体必须以包含编码声明的文本声明开头：

编码声明
[80] EncodingDecl ::= S 'encoding' Eq ('"' EncName '"' | "'" EncName "'" )

[81] EncName ::= [A-Za-z] ([A-Za-z0-9._] | '-')* /* 编码方案的名字只包含拉
丁字母 */

在文件实体中，编码声明是XML声明的一部分。EncName是所用编码方案的名字。

在一个编码声明中，值"UTF-8"，"UTF-16"，"ISO-10646-UCS-2"和"ISO-10646-UCS-4"应
该用于表示Unicode或ISO/IEC 10646中的各种不同编码和变换方案，值"ISO-8859-1"，
"ISO-8859-2"，... "ISO-8859-9"应该用于表示ISO 8859的各个部分，而值
"ISO-2022-JP"，"Shift_JIS"和"EUC-JP"应该用于表示JIS X-0208-1997的各种编码。
XML处理器可以识别其他编码方案;建议对于在Internet Assigned Numbers Authority
[IANA]注册的字符编码方案(以字符集(charset)的方式)，除了以上所列的之外，引用时
应使用其注册名。注意这些注册名定义为大小写敏感，因此欲与之匹配的处理器要以大小
写敏感的方式进行匹配。

在缺少外部传输协议(如HTTP或MIME)所提供的信息时，以下情况均是错误：XML处理器接
收到的实体的编码方案与实体所含编码声明中指出的编码方案不同，编码声明不在外部实
体的开头，既不以字节次序标记开头也不以编码声明开头的实体使用了不同于UTF-8的编
码。注意因为ASCII是UTF-8的一个子集，严格说来普通ASCII字符不需要编码声明。

当XML处理遇到的实体使用了它不能处理的编码时，是一个严重错误。

编码声明的例子：

<?xml encoding='UTF-8'?>
<?xml encoding='EUC-JP'?>

4.4 XML处理器对实体和引用的处理
下表汇总了字符引用，实体引用，和对未析实体的调用可以出现的上下文，以及每种情况
下XML处理器的动作。最左边一列的标签指明了识别时的上下文：

内容中的引用
可以在元素的起始标签之后，结束标签之前的任何地方以引用形式出现，对应于非终结符
content。
属性值中的引用
可以在起始标签内的属性值中，或属性声明内的缺省值中以引用形式出现;对应于非终结
符AttValue。
作为属性值
可以以Name而不是以引用的形式出现，作为声明为ENTITY类型的属性的值，或可以作为声
明为ENTITIES类型的属性值中的以空白分隔的记号之一。
实体值中的引用
可以在参数中或内部实体的实体声明内的常量实体值中以引用形式出现;对应于非终结符
EntityValue。
DTD中的引用
可以在DTD的内部或外部子集中以引用形式出现，但须在EntityValue和AttValue之外。

   实体类型 字符
参数 内部普通 外部已析普通 未析
内容中的引用 不被识别 被包含 进行验证时被包含 被禁止 被包含
属性值中的引用 不被识别 作为常量被包含 被禁止 被禁止 被包含
作为属性值 不被识别 被禁止 被禁止 通知 不被识别
实体值中的引用 作为常量被包含 不处理 不处理 被禁止 被包含
DTD中的引用 作为PE被包含 被禁止 被禁止 被禁止 被禁止

4.4.1 不被识别(Not Recognized)
在DTD之外，百分号字符%没有特殊含义;因此在DTD中的参数实体引用在content中不被当
成标记识别。类似地，除非未析实体的名字出现在已适当声明的属性的值中，否则它们不
被识别。

4.4.2 被包含(Included)
当一个实体的置换文本被当成出现在引用所在位置的文件的一部分一样被存取和处理时，
称此实体被包含。其置换文本可以包含字符数据和标记(不包括参数实体)，其中标记必须
以通常的方式识别，但用于转义标记分隔符(实体amp，lt，gt，apos和quot)的实体的置
换文本总是被当成数据。(字符串"AT&amp;T;"展开为"AT&T;"尚存的"and"号&不被识别为
实体引用的分隔符。)当被表示的字符被当成出现在引用所在位置一样被处理时，称此字
符引用被包含。

4.4.3 进行验证时被包含(Included If Validating)
当XML处理器识别出一个对已析实体的引用，为了验证该文件，处理器必须包含此实体的
置换文本。如果实体是外部的，而处理器不试图验证该XML文件，那么处理器可以，但不
是必须，包含此实体的置换文本。如果一个不验证的语法分析器不包含此置换文本，它必
须通知应用它识别出但没有读取此实体。

这条规范基于这样一个共识：由SGML和XML的实体机制提供的起初设计用于支持模块化创
作的自动包含不一定适合于其他应用，尤其是文件浏览。例如，当浏览器遇到一个外部已
析实体引用时，可能选择用可视方式表示其存在但只在被请求时才读取它进行显示。

4.4.4 被禁止(Forbidden)
以下情况被禁止，并构成一个严重错误：

出现对未析实体的引用。
在DTD中出现任何字符或普通实体引用，除非它们出现在EntityValue或AttValue中。
属性值中出现对外部实体的引用。
4.4.5 被包含在常量中(Included in Literal)
当实体引用出现在属性值中或参数实体引用出现在常量实体值中时，它们的置换文本被当
成出现在引用所在位置的文件的一部分一样被存取和处理，置换文本中的单双引号总是被
当成正常的数据字符而不会结束此常量。例如，下面的例子是规范的：

<!ENTITY % YN '"Yes"' >
<!ENTITY WhatHeSaid "He said &YN;" >

而这个例子不是：

<!ENTITY EndAttr "27'" >
<element attribute='a-&EndAttr;>

4.4.6 通知(Notify)
当未析实体名字作为记号在声明为ENTITY或ENTITIES类型的属性的值中出现时，进行验证
的处理器必须将此实体和它的相关记法的系统和公共(如果有的话)标识符通知给应用。

4.4.7 不处理(Bypassed)
当实体声明内一个普通实体引用出现在EntityValue中时，它不被处理，保持不变。

4.4.8 作为PE被包含(Included as PE)
和外部已析实体一样，参数实体只需在进行验证时被包含。当参数实体引用在DTD中被识
别并被包含时，它的置换文本被前后各加上一个空格字符;其目的在于强制参数实体的置
换文本包含整数个DTD中的语法记号。

4.5 内部实体置换文本的构建(Construction of Internal Entity)
在讨论内部实体的处理时，区分两种形式的实体值是有帮助的。常量实体值(literal
entity value)是实际出现在实体声明中用引号扩起的字符串。对应于非终结符
EntityValue。置换文本(replacement text)是置换了字符引用和参数实体引用后的实体
内容。

在内部实体声明(EntityValue)中给出的常量实体值可以包括字符引用，参数实体引用和
普通实体引用。这些引用必须被整个包含于常量实体值中。如前述方式被包含的实际置换
文本必须包含所有被引用的参数实体的置换文本，同时必须所有被引用的字符必须在常量
实体值中字符引用所在位置被包含。但普通实体的引用必须保持不变，不被展开。例如，
如果有以下的声明：

<!ENTITY % pub "&#xc9;ditions Gallimard" >
<!ENTITY rights "All rights reserved" >
<!ENTITY book "La Peste: Albert Camus,
&#xA9; 1947 %pub;. &rights;" >

那么实体"book"的置换文本为：

La Peste: Albert Camus,
?nbsp;1947 蒬itions Gallimard. &rights;

一旦引用"&book;"出现在文件的内容或属性值中时，普通实体引用"&rights;"应该被展开
。

这些简单的规则将可能会有复杂的相互作用;参见"D. 实体和字符引用的展开"中对一个难
的例子的详细讨论。

4.6 预定义实体(Predefined Entities)
实体和字符引用都可以用于转义左尖括号，"and"号(&)和其他分隔符。普通实体集合
(amp，lt，gt，apos，quot)专门用于此目的。也可以使用数值字符引用; 一旦被识别，
它们立即被展开，同时它们必须被当成字符数据，因此数值字符引用"&#60;"和"&#38;"可
以用于转义出现在字符数据中的<和&。

不管这些实体是否被声明，所有的XML处理器必须能识别它们。出于互操作性考虑，有效
的XML文件应该如其他实体一样，在使用这些实体前先声明它们。如果声明的话，这些实
体必须被声明为内部实体，其置换文本是被转义的单个字符或指向这个字符的字符引用。
如下所示。

<!ENTITY lt "&#38;#60;">
<!ENTITY gt "&#62;">
<!ENTITY amp "&#38;#38;">
<!ENTITY apos "&#39;">
<!ENTITY quot "&#34;">

注意在"lt"和"amp"的声明中，<和&被两次转义，这是为了满足实体置换的规范性要求。

4.7 记法声明(Notation Declarations)
记法用名字标识了未析实体的格式，具有记法属性的元素的格式以及处理指令所针对的应
用的格式。

记法声明赋予记法一个名字用于实体中，属性表声明中和属性说明中，同时也给出了一个
记法的外部标识符使得XML处理器或它的客户应用可以定位能以给定记法处理数据的助理
应用。

记法声明
[82] NotationDecl ::= '<!NOTATION' S Name S (ExternalID | PublicID) S?
'>'
[83] PublicID ::= 'PUBLIC' S PubidLiteral

XML处理器必须向应用提供任何在属性值中，属性定义中或实体声明中定义或引用的记法
的名字和外部标识符。它们还可以将外部标识符解析成系统标识符，文件名，或是应用调
用相应处理器处理给定记法格式的数据的所需的其他信息。(但如果XML处理器或应用所运
行的系统中没有处理XML文件声明和引用的记法的相应应用的情况，不是一个错误。)

4.8 文件实体(Document Entity)
文件实体(document entity)是实体树的根和XML处理器的处理起点。本规范没有规定XML
如何定位文件实体;与其他实体不同，文件实体没有名字，而且可以完全不带任何标识地
出现在处理器的输入流中。

5. 一致性(Conformance)
5.1 进行验证和不进行验证的处理器(Validating and Non-Validating Processors)
合乎规范的XML处理器可以分为两类：进行验证的和不进行验证的。

进行验证和不进行验证的处理器都必须报告在文件实体的内容中和任何其他它们读到的已
析实体中对规范性约束的违反。

进行验证的处理器必须报告违反DTD声明中所述约束的情况以及不满足本规范中给出的有
效性约束的情况。要完成这一点，进行验证的XML处理器必须读取和处理整个DTD和所有在
文件中引用的外部已析实体。

不进行验证的处理器只被要求检查文件实体和整个内部DTD子集的规范性。虽然它们不被
要求检查文件的有效性，但它们必须处理它们读取的所有内部DTD子集中的声明和所有参
数实体，直到遇到第一个对它们没有读取的参数实体的引用;也就是说，它们必须根据这
些声明中的信息规范化属性值，包含内部实体的置换文本，并提供缺省属性值。它们在遇
到第一个对它们没有读取的参数实体的引用后，不应处理其后的实体声明或属性表声明，
因为此实体中包含的声明可能覆盖前面的声明。

5.2 使用XML处理器
进行验证的处理器的行为是高度可预测的;它必须读取文件的所有部分，报告所有对规范
性和有效性的违反。对一个不进行验证的处理器的要求要低一点;它不需要读取文件实体
以外的任何文件部分。这对XML的处理器的用户而言可能会有两个重要的影响：

某些规范性错误，尤其是那些要求读取外部实体的，可能不会被不进行验证的处理器检测
到。例子有称为声明实体，已析实体和无递归的约束，以及"4.4 XML处理器对实体和引用
的处理"中描述为被禁止的一些情况。
取决于处理器是否读取参数和外部实体，从处理器传给应用的信息可能会有所不同。例如
，不进行验证的处理器可能不规范化属性值，不包含内部实体的置换文本，或不提供缺省
属性值，这些动作要求先读取外部或参数实体中的声明。
为了使不同XML处理器间的互操作有最大的可靠性，使用不进行验证的处理器的应用不应
依赖于不要求这些处理器具备的动作。那些要求使用如缺省值或在外部实体中声明内部实
体等功能的应用应该使用进行验证的XML处理器。

6. 记法(Notation)
本规范中XML的形式化文法用一种简单的扩展巴科斯范式(Extended Backus-Naur Form，
EBNF)给出。文法中的每一条规则定义了一个符号，形式如下：

symbol ::= expression

如果符号用正则表达式定义，则它以大写字母开头，否则以小写字母开头。字符串常量
(literal strings)用引号括起。

在规则右边的表达式中，以下表达式用于匹配一个或多个字符的字符串：

#xN
N是一个十六进制的整数，当ISO/IEC 10646中某个字符的规范(UCS-4)代码值作为无符号
二进制数与N相等时，此表达式匹配这个字符。#xN中的前导0没有意义，在相应的代码值
中的前导0的个数则由所用字符编码方案决定，对XML没有意义。
[a-zA-Z]， [#xN-#xN]

与其值在指定范围内的任何字符相匹配(含界，inclusive)。
[^a-z]， [^#xN-#xN]
与其值在指定范围之外的任何字符相匹配。
[^abc]， [^#xN#xN#xN]
与任何不在给定字符集内的字符相匹配。
"string"
与匹配双引号中所给字符串的常量字符串相匹配。
'string'
与匹配单引号中所给字符串的常量字符串相匹配。
这些符号可以按下列方式组合，以匹配更复杂的模式，其中A和B表示简单表达式：

(expression)
expression被当成一个单元，可以向本表描述的那样进行组合。
A?
与零个或一个A相匹配，即A可选。
A B
与A后跟B的模式相匹配。
A | B
与AB之一相匹配，但不同时匹配。
A - B
与任何匹配A但不匹配B的字符串相匹配。
A+
与一个或多个A相匹配。
A*
与零个或多个A相匹配。
其他在产生式中使用的记法有：

/* ... */
注释
[ wfc: ... ]
规范性约束;用名字标识一个对与某个产生式相关联的规范文件的约束。
[ vc: ... ]
有效性约束;用名字标识一个对与某个产生式相关联的有效文件的约束。

------------------------------------------------------------------------------
--

附录
A. 参考文献
A.1 正式的参考文献
IANA
(Internet Assigned Numbers Authority) Official Names for Character Sets， ed.
Keld Simonsen et al. See ftp://ftp.isi.
edu/in-notes/iana/assignments/character-sets.
IETF RFC 1766
IETF (Internet Engineering Task Force). RFC 1766: Tags for the
Identification of Languages， ed. H. Alvestrand. 1995.
ISO 639
(International Organization for Standardization). ISO 639:1988 (E). Code for
the representation of names of languages. [Geneva]: International Organization
for Standardization， 1988.
ISO 3166
(International Organization for Standardization). ISO 3166-1:1997 (E). Codes
for the representation of names of countries and their subdivisions -- Part 1:
Country codes [Geneva]: International Organization for Standardization，
1997.
ISO/IEC 10646
ISO (International Organization for Standardization). ISO/IEC 10646-1993 (E).
Information technology -- Universal Multiple-Octet Coded Character Set
(UCS) -- Part 1: Architecture and Basic Multilingual Plane. [Geneva]:
International Organization for Standardization， 1993 (plus amendments AM 1
through AM 7).
Unicode
The Unicode Consortium. The Unicode Standard， Version 2.0. Reading， Mass.:
Addison-Wesley Developers Press， 1996.
A.2 其他参考文献
Aho/Ullman
Aho， Alfred V., Ravi Sethi， and Jeffrey D. Ullman. Compilers: Principles,
Techniques, and Tools. Reading: Addison-Wesley, 1986, rpt. corr. 1988.
Berners-Lee et al.
Berners-Lee, T., R. Fielding, and L. Masinter. Uniform Resource Identifiers
(URI): Generic Syntax and Semantics. 1997. (Work in progress; see updates to
RFC1738.)
Br黦gemann-Klein
Br黦gemann-Klein, Anne. Regular Expressions into Finite Automata. Extended
abstract in I. Simon, Hrsg., LATIN 1992, S. 97-98. Springer-Verlag, Berlin
1992. Full Version in Theoretical Computer Science 120: 197-213, 1993.
Br黦gemann-Klein and Wood
Br黦gemann-Klein, Anne, and Derick Wood. Deterministic Regular Languages.
Universit鋞 Freiburg, Institut f黵 Informatik, Bericht 38, Oktober 1991.
Clark
James Clark. Comparison of SGML and XML. See http://www.w3.
org/TR/NOTE-sgml-xml-971215.
IETF RFC1738
IETF (Internet Engineering Task Force). RFC 1738: Uniform Resource Locators
(URL), ed. T. Berners-Lee, L. Masinter, M. McCahill. 1994.
IETF RFC1808
IETF (Internet Engineering Task Force). RFC 1808: Relative Uniform Resource
Locators, ed. R. Fielding. 1995.
IETF RFC2141
IETF (Internet Engineering Task Force). RFC 2141: URN Syntax, ed. R. Moats.
1997.
ISO 8879
ISO (International Organization for Standardization). ISO 8879:1986(E).
Information processing -- Text and Office Systems -- Standard Generalized
Markup Language (SGML). First edition -- 1986-10-15. [Geneva]: International
Organization for Standardization, 1986.
ISO/IEC 10744
ISO (International Organization for Standardization). ISO/IEC 10744-1992 (E).
Information technology -- Hypermedia/Time-based Structuring Language
(HyTime). [Geneva]: International Organization for Standardization, 1992.
Extended Facilities Annexe. [Geneva]: International Organization for
Standardization, 1996.
B. 字符的分类(Character Classes)
根据Unicode标准中定义的特征，字符被分为基字符(其中包括没有变音符的拉丁字母)，
表意字符和组合字符(其中包括大多数的变音符);这些类合起来组成了字母类。数字和扩
展符(extender)也各自被分成类。

字符
[84] Letter ::= BaseChar | Ideographic
[85] BaseChar ::= [#x0041-#x005A] | [#x0061-#x007A] | [#x00C0-#x00D6] |
[#x00D8-#x00F6] | [#x00F8-#x00FF] | [#x0100-#x0131] | [#x0134-#x013E] |
[#x0141-#x0148] | [#x014A-#x017E] | [#x0180-#x01C3] | [#x01CD-#x01F0] |
[#x01F4-#x01F5] | [#x01FA-#x0217] | [#x0250-#x02A8] | [#x02BB-#x02C1] | #x0386
| [#x0388-#x038A] | #x038C | [#x038E-#x03A1] | [#x03A3-#x03CE] |
[#x03D0-#x03D6] | #x03DA | #x03DC | #x03DE | #x03E0 | [#x03E2-#x03F3] |
[#x0401-#x040C] | [#x040E-#x044F] | [#x0451-#x045C] | [#x045E-#x0481] |
[#x0490-#x04C4] | [#x04C7-#x04C8] | [#x04CB-#x04CC] | [#x04D0-#x04EB] |
[#x04EE-#x04F5] | [#x04F8-#x04F9] | [#x0531-#x0556] | #x0559 | [#x0561-#x0586]
| [#x05D0-#x05EA] | [#x05F0-#x05F2] | [#x0621-#x063A] | [#x0641-#x064A] |
[#x0671-#x06B7] | [#x06BA-#x06BE] | [#x06C0-#x06CE] | [#x06D0-#x06D3] | #x06D5
| [#x06E5-#x06E6] | [#x0905-#x0939] | #x093D | [#x0958-#x0961] |
[#x0985-#x098C] | [#x098F-#x0990] | [#x0993-#x09A8] | [#x09AA-#x09B0] | #x09B2
| [#x09B6-#x09B9] | [#x09DC-#x09DD] | [#x09DF-#x09E1] | [#x09F0-#x09F1] |
[#x0A05-#x0A0A] | [#x0A0F-#x0A10] | [#x0A13-#x0A28] | [#x0A2A-#x0A30] |
[#x0A32-#x0A33] | [#x0A35-#x0A36] | [#x0A38-#x0A39] | [#x0A59-#x0A5C] | #x0A5E
| [#x0A72-#x0A74] | [#x0A85-#x0A8B] | #x0A8D | [#x0A8F-#x0A91] |
[#x0A93-#x0AA8] | [#x0AAA-#x0AB0] | [#x0AB2-#x0AB3] | [#x0AB5-#x0AB9] | #x0ABD
| #x0AE0 | [#x0B05-#x0B0C] | [#x0B0F-#x0B10] | [#x0B13-#x0B28] |
[#x0B2A-#x0B30] | [#x0B32-#x0B33] | [#x0B36-#x0B39] | #x0B3D | [#x0B5C-#x0B5D]
| [#x0B5F-#x0B61] | [#x0B85-#x0B8A] | [#x0B8E-#x0B90] | [#x0B92-#x0B95] |
[#x0B99-#x0B9A] | #x0B9C | [#x0B9E-#x0B9F] | [#x0BA3-#x0BA4] | [#x0BA8-#x0BAA]
| [#x0BAE-#x0BB5] | [#x0BB7-#x0BB9] | [#x0C05-#x0C0C] | [#x0C0E-#x0C10] |
[#x0C12-#x0C28] | [#x0C2A-#x0C33] | [#x0C35-#x0C39] | [#x0C60-#x0C61] |
[#x0C85-#x0C8C] | [#x0C8E-#x0C90] | [#x0C92-#x0CA8] | [#x0CAA-#x0CB3] |
[#x0CB5-#x0CB9] | #x0CDE | [#x0CE0-#x0CE1] | [#x0D05-#x0D0C] | [#x0D0E-#x0D10]
| [#x0D12-#x0D28] | [#x0D2A-#x0D39] | [#x0D60-#x0D61] | [#x0E01-#x0E2E] |
#x0E30 | [#x0E32-#x0E33] | [#x0E40-#x0E45] | [#x0E81-#x0E82] | #x0E84 |
[#x0E87-#x0E88] | #x0E8A | #x0E8D | [#x0E94-#x0E97] | [#x0E99-#x0E9F] |
[#x0EA1-#x0EA3] | #x0EA5 | #x0EA7 | [#x0EAA-#x0EAB] | [#x0EAD-#x0EAE] | #x0EB0
| [#x0EB2-#x0EB3] | #x0EBD | [#x0EC0-#x0EC4] | [#x0F40-#x0F47] |
[#x0F49-#x0F69] | [#x10A0-#x10C5] | [#x10D0-#x10F6] | #x1100 | [#x1102-#x1103]
| [#x1105-#x1107] | #x1109 | [#x110B-#x110C] | [#x110E-#x1112] | #x113C |
#x113E | #x1140 | #x114C | #x114E | #x1150 | [#x1154-#x1155] | #x1159 |
[#x115F-#x1161] | #x1163 | #x1165 | #x1167 | #x1169 | [#x116D-#x116E] |
[#x1172-#x1173] | #x1175 | #x119E | #x11A8 | #x11AB | [#x11AE-#x11AF] |
[#x11B7-#x11B8] | #x11BA | [#x11BC-#x11C2] | #x11EB | #x11F0 | #x11F9 |
[#x1E00-#x1E9B] | [#x1EA0-#x1EF9] | [#x1F00-#x1F15] | [#x1F18-#x1F1D] |
[#x1F20-#x1F45] | [#x1F48-#x1F4D] | [#x1F50-#x1F57] | #x1F59 | #x1F5B | #x1F5D
| [#x1F5F-#x1F7D] | [#x1F80-#x1FB4] | [#x1FB6-#x1FBC] | #x1FBE |
[#x1FC2-#x1FC4] | [#x1FC6-#x1FCC] | [#x1FD0-#x1FD3] | [#x1FD6-#x1FDB] |
[#x1FE0-#x1FEC] | [#x1FF2-#x1FF4] | [#x1FF6-#x1FFC] | #x2126 | [#x212A-#x212B]
| #x212E | [#x2180-#x2182] | [#x3041-#x3094] | [#x30A1-#x30FA] |
[#x3105-#x312C] | [#xAC00-#xD7A3]
[86] Ideographic ::= [#x4E00-#x9FA5] | #x3007 | [#x3021-#x3029]
[87] CombiningChar ::= [#x0300-#x0345] | [#x0360-#x0361] | [#x0483-#x0486] |
[#x0591-#x05A1] | [#x05A3-#x05B9] | [#x05BB-#x05BD] | #x05BF |
[#x05C1-#x05C2] | #x05C4 | [#x064B-#x0652] | #x0670 | [#x06D6-#x06DC] |
[#x06DD-#x06DF] | [#x06E0-#x06E4] | [#x06E7-#x06E8] | [#x06EA-#x06ED] |
[#x0901-#x0903] | #x093C | [#x093E-#x094C] | #x094D | [#x0951-#x0954] |
[#x0962-#x0963] | [#x0981-#x0983] | #x09BC | #x09BE | #x09BF | [#x09C0-#x09C4]
| [#x09C7-#x09C8] | [#x09CB-#x09CD] | #x09D7 | [#x09E2-#x09E3] | #x0A02 |
#x0A3C | #x0A3E | #x0A3F | [#x0A40-#x0A42] | [#x0A47-#x0A48] | [#x0A4B-#x0A4D]
| [#x0A70-#x0A71] | [#x0A81-#x0A83] | #x0ABC | [#x0ABE-#x0AC5] |
[#x0AC7-#x0AC9] | [#x0ACB-#x0ACD] | [#x0B01-#x0B03] | #x0B3C | [#x0B3E-#x0B43]
| [#x0B47-#x0B48] | [#x0B4B-#x0B4D] | [#x0B56-#x0B57] | [#x0B82-#x0B83] |
[#x0BBE-#x0BC2] | [#x0BC6-#x0BC8] | [#x0BCA-#x0BCD] | #x0BD7 | [#x0C01-#x0C03]
| [#x0C3E-#x0C44] | [#x0C46-#x0C48] | [#x0C4A-#x0C4D] | [#x0C55-#x0C56] |
[#x0C82-#x0C83] | [#x0CBE-#x0CC4] | [#x0CC6-#x0CC8] | [#x0CCA-#x0CCD] |
[#x0CD5-#x0CD6] | [#x0D02-#x0D03] | [#x0D3E-#x0D43] | [#x0D46-#x0D48] |
[#x0D4A-#x0D4D] | #x0D57 | #x0E31 | [#x0E34-#x0E3A] | [#x0E47-#x0E4E] | #x0EB1
| [#x0EB4-#x0EB9] | [#x0EBB-#x0EBC] | [#x0EC8-#x0ECD] | [#x0F18-#x0F19] |
#x0F35 | #x0F37 | #x0F39 | #x0F3E | #x0F3F | [#x0F71-#x0F84] | [#x0F86-#x0F8B]
| [#x0F90-#x0F95] | #x0F97 | [#x0F99-#x0FAD] | [#x0FB1-#x0FB7] | #x0FB9 |
[#x20D0-#x20DC] | #x20E1 | [#x302A-#x302F] | #x3099 | #x309A
[88] Digit ::= [#x0030-#x0039] | [#x0660-#x0669] | [#x06F0-#x06F9] |
[#x0966-#x096F] | [#x09E6-#x09EF] | [#x0A66-#x0A6F] | [#x0AE6-#x0AEF] |
[#x0B66-#x0B6F] | [#x0BE7-#x0BEF] | [#x0C66-#x0C6F] | [#x0CE6-#x0CEF] |
[#x0D66-#x0D6F] | [#x0E50-#x0E59] | [#x0ED0-#x0ED9] | [#x0F20-#x0F29]
[89] Extender ::= #x00B7 | #x02D0 | #x02D1 | #x0387 | #x0640 | #x0E46 |
#x0EC6 | #x3005 | [#x3031-#x3035] | [#x309D-#x309E] | [#x30FC-#x30FE]

在此定义的字符类可以从Unicode字符库中如下导出：

名字的起始字符必须属于Ll，Lu，Lo，Lt，Nl中的一类。
除了起始字符之外的命名字符必须属于Mc，Me，Mn，Lm或Nd中的一类。
兼容区(即代码大于#xF900，小于#xFFFE的字符)中的字符不允许在XML名字中出现。
不允许出现具有字集或兼容分解(即，库中第5区有"compatibility formatting tag"的字
符 -- "<"标志着5区的开始)的字符。
下列字符被当成名字起始字符，因为特性文件中将它们归于字母类： [#x02BB-#x02C1]，
#x0559，#x06E5，#x06E6。
不允许出现字符#x20DD-#x20E0(与Unicode的5.14节保持一致)。
字符#x00B7被分为扩展符，因为特性文件中对它是这么标识的。
字符#x0387被当成一个命名字符，因为#x00B7是它的等价规范形式。
字符':'和'_'可以作为名字起始字符。
字符'-'和'.'可以作为命名字符。
C. XML和SGML(非正式)
XML被设计为SGML的一个子集，表现在每一个有效的XML文件应该也是一个合乎规范的
SGML文件。对XML在SGML之外对文件所加的限制的详细讨论参见[Clark]。

D. 实体和字符引用的展开(非正式)
本附录中举例说明了在 "4.4 XML处理器对实体和引用的处理"一节中规定的实体和字符引
用的识别和展开的次序。

如果声明包含在DTD中

<!ENTITY example "<p>An ampersand (&#38;#38;) may be escaped
numerically (&#38;#38;#38;) or with a general entity
(&amp;amp;).</p>" >

那么XML处理器将在对实体声明进行语法分析时识别出字符引用，并在将下面的字符串存
为实体"example"的值前解析这些字符引用:

<p>An ampersand (&#38;) may be escaped
numerically (&#38;#38;) or with a general entity
(&amp;amp;).</p>

文件中对"&example;"的引用会导致对文本的重新分析，此时元素"p"的起始和结束标签被
识别，三个引用被识别和展开，其结果是一个包含下面内容(所有数据，无分隔符或标记
)"p"元素：

An ampersand (&) may be escaped
numerically (&#38;) or with a general entity
(&amp;).

一个更复杂的例子可以完整地说明这些规则和它们的作用。在下面的例子中，行号仅仅是
为了方便说明。

1 <?xml version='1.0'?>
2 <!DOCTYPE test [
3 <!ELEMENT test (#PCDATA) >
4 <!ENTITY % xx '&#37;zz;'>
5 <!ENTITY % zz '&#60;!ENTITY tricky "error-prone" >' >
6 %xx;
7 ]>
8 <test>This sample shows a &tricky; method.</test>

这个例子会导致下列动作：

在第4行，对字符37的引用会被立即展开，参数实体"xx"以值"%zz;"存于符号表中。因为
置换文本不被再次扫描，对参数实体"zz"的引用不会被识别。(而且如果它被识别的话则
是一个错误，因为"zz"还没有被声明。)
在第5行，字符引用"&#60;"被立即展开，而参数实体"zz"以置换文本"<!ENTITY tricky
"error-prone" >"被存储，此置换文本是一个规范的实体声明。
在第6行，对"xx"的引用被识别，"xx"的置换文本(即"%zz;")被分析。对"zz"的引用随后
被识别，它的置换文本("<!ENTITY tricky "error-prone" >")被分析。此时普通实体
"tricky"被声明，它的置换文本是"error-prone"。
在第8行，对普通实体"tricky"的引用被识别，并被展开，因此"test"元素的全部内容为
一个自说明的(也不合语法)字符串This sample shows a error-prone method.。
E. 确定型内容模型(非正式)
出于兼容性考虑，要求元素类型声明中的内容模型是确定型的。

SGML要求内容模型是确定型的(它称为"无歧义的"); 用SGML系统生成的XML处理器可能会
把非确定型内容模型标为错误。

例如，内容模型((b, c) | (b, d))是非确定型的，因为给定一个初始b，分析器没有在向
前看以知道b后是什么元素之前，无法知道匹配模型中的哪个b。在这种情况下，两个对b
的引用可以简化成单个的引用，使得模型成为(b,(c | d))。此时初始的b只和内容模型中
的一个名字明确匹配。分析器不需要向前看其后的内容。c或d都能被接受。

更形式化的说法：使用Aho，Sethi和Ullman所著[Aho/Ullman]3.9节中的标准算法3.5，可
以从内容模型构造出一个有限状态自动机。在很多这样的算法中，对应正则表达式中的每
一个位置(即正则表达式的语法树中的每个叶子节点)，都构造一个随集(follow set)；如
果任一位置的随集中不止一个后继位置被标为同一元素类型时，那么此内容模型出错，并
且可以被报为错误。

存在将许多但不是所有非确定型内容模型自动规约为等价的确定型模型的算法；参见Br黦
gemann-Klein 1991 [Br黦gemann-Klein].

F.

[
36m※ 修改:·sylvan 於 Apr 6 17:39:52 修改本文·[FROM: 166.111.163.236]
※ 修改:·sylvan 於 Apr 6 17:40:29 修改本文·[FROM: 166.111.163.236]
※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.163.236]


斑竹报到

 发信人: veb (君), 信区: XML
标 题: 斑竹报到
发信站: BBS 水木清华站 (Sun Apr 9 12:34:49 2000)

<?xml version="1.0" encoding="gb2312"?>
<报到>
<宗旨>互相帮助，</宗旨>
<宗旨>共同进步。</宗旨>
</报到>
--
Powered by eXtensible Markup Language

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.112.99.209]


JoyKiller (希望永在), 信区: XML

 发信人: JoyKiller (希望永在), 信区: XML
标 题: 申请XML（可扩展置标语言)板板斧! (转载)
发信站: BBS 水木清华站 (Sun May 21 11:11:43 2000)

【 以下文字转载自 Board 讨论区 】
【 原文由 JoyKiller 所发表 】

1.英文版名： XML
中文版名： 可扩展置标语言
分类目录： 电脑技术

2.User ID: JoyKiller

3.申请动机：
本人酷爱XML，WAP，JAVA，
有大半年的这方面的工作经验。
也深信在未来它们所能起到的巨大作用。
我非常愿意和朋友们一起探索和分享其中的乐趣。
也愿意为大家尽自己的一些微薄之力。

4.经营方向:
宣传XML，WAP技术，倡导XML，WAP应用，
为XML的爱好者服务。

5.删文原则:
违反有关站规和法规；
有恶意人生攻击的话语。

6.与站长、板务总管以及该板板主(veb)协调关系
服从站长与板务总管，与板主协商工作
共同繁荣XML版。

7.email: ysailor@263.net

--

宠辱不惊花开花落,
去留无意云卷云舒.

※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.5.46]


同意JoyKiller的辞职申请 (转载)

 发信人: terre (幸运星~~归隐山林~~竹篮打水), 信区: XML
标 题: 同意JoyKiller的辞职申请 (转载)
发信站: BBS 水木清华站 (Sat Jun 17 08:45:04 2000)

【 以下文字转载自 BoardManager 讨论区 】
【 原文由 terre 所发表 】
同意 JoyKiller 辞去 XML/可扩展置标语言 板板主职务
感谢 JoyKiller 网友在职期间的辛勤劳动

--

事在人为莫道万般皆是命
境由心造退后一步自然宽

※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.56.88]


terre (幸运星~~归隐山林~~竹篮打水), 信区: XML

 发信人: terre (幸运星~~归隐山林~~竹篮打水), 信区: XML
标 题: 任命takeiteasy为 XML/可扩展置标语言 版副版主 (转载)
发信站: BBS 水木清华站 (Sat Jun 17 08:48:20 2000)

【 以下文字转载自 Board 讨论区 】
【 原文由 terre 所发表 】
takeiteasy在 board 版的申请
经网友推荐并征得现任版主同意。
审核结果如下:

按照 "水木清华站板主管理办法" 赋予基本版主权限:
任命takeiteasy为 XML/可扩展置标语言 版副版主
请在三日内于 BoardManager 版报到后上任，否则取消版主权限

--

事在人为莫道万般皆是命
境由心造退后一步自然宽

※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.56.88]
上一篇 返回上一页 回到目录 回到页首


未整理 (BM: veb)

编号 | 类别 | 标题 | 编辑日期
1 | 文件 | 一个复杂的xsl文件功能齐全 veb | 2000.04.11
2 | 文件 | Re: 请问XML联盟的网址是什么？ veb | 2000.04.11
3 | 文件 | Re: 请问XML联盟的网址是什么？ veb | 2000.04.11
4 | 文件 | xml网络资源 veb | 2000.04.11
5 | 文件 | jaxp解析DTD的例子。 veb | 2000.04.11
6 | 文件 | Re: jaxp解析DTD的例子。 veb | 2000.04.11
7 | 文件 | Re: jaxp解析DTD的例子。 veb | 2000.04.11
8 | 文件 | Re: jaxp解析DTD的例子。 veb | 2000.04.11
9 | 文件 | Re: 可以将xml转换成pdf格式的文件吗？ veb | 2000.04.11
10 | 文件 | XML中国论坛开通，欢迎访问！www.xml.net veb | 2000.04.11
11 | 文件 | Should I use SAX or DOM? veb | 2000.04.11
12 | 文件 | An Introduction to C++ XML programming veb | 2000.04.11
13 | 文件 | Re: 哪里有比较详细的关于SAX的资料？ veb | 2000.04.11
14 | 文件 | Object model approaches veb | 2000.04.11
15 | 文件 | Uses and Tradeoffs veb | 2000.04.11
16 | 文件 | SAX event-driven approaches veb | 2000.04.11
17 | 文件 | Re: XML是数据库研究者的一次契机 veb | 2000.04.13
18 | 文件 | 请问xml... veb | 2000.04.14
返回上一页 回到上一级目录


一个复杂的xsl文件功能齐全

 发信人: tapebomb (枫树), 信区: XML
标 题: 一个复杂的xsl文件功能齐全
发信站: BBS 水木清华站 (Thu May 11 11:17:55 2000)

这是biztalk中的一个xsl文件,很复杂,其中有namspace,schema,以及连接生成,排序,表单
style,有特殊元素选取.从中可以模拟,不要在到处问人了.不过看懂
需要有一定的基本工啊!有些我还没有看懂.
发会邮箱漫漫看吧!(我用的是ie5.5)
test.xsl

<?xml version="1.0"?>
<!--

xdr-schema.xsl 1.0

Stylesheet for XML Data Reduced Schemas,
see http://msdn.microsoft.com/xml/reference/schema/start.asp.
XSL compatible with Microsoft Internet Explorer 5,
see http://msdn.microsoft.com/xml/xslguide.

Author: Jonathan Marsh <jmarsh@microsoft.com>
Copyright 2000 Microsoft Corp.

Change history:

1.0.1:
- typo ("childen" to "children")
- fixed test for element-scoped attributes ("..[@name]" to
"ancestor(s:ElementType)")

-->

<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl"
xmlns:s="urn:schemas-microsoft-com:xml-data"
xmlns:dt="urn:schemas-microsoft-com:datatypes">

<xsl:template match="/">
<!-- stylesheet works on schema elements, schema documents, and
documents
with in-lined schemas -->
<xsl:apply-templates select="s:Schema|*/s:Schema"/>
</xsl:template>

<xsl:template match="s:Schema">
<HTML>
<HEAD>
<title>Biztalk.org Schema</title>

<STYLE><![CDATA[
BODY { font-family: Arial; font-size: smaller }

A {text-decoration: none}
A:hover {text-decoration: underline}
A:active {text-decoration: underline}

TABLE.list {}
TABLE.list TH
{
background-color:#006600;
color:white;
padding:0.5em;
padding-right:4em;
margin:0px;
font-size: x-small;
font-weight: bold;
vertical-align:baseline;
text-align: left;
}
TABLE.list TH.elements { background-color:#006600; }
TABLE.list TH.attributes { background-color:#000066; }
TABLE.list TH A {color:white}

TABLE.list TD
{
border:1px solid darkgreen;
padding:0.5em;
margin:0px;
font-size: x-small;
vertical-align:baseline;
}
TABLE.list TD.elements { border: 1px solid darkgreen; }
TABLE.list TD.attributes { border: 1px solid darkgreen; }

TABLE.elements TD
{
padding-left:0.5em;
margin:0px;
font-size: x-small;
vertical-align:baseline;
}

TABLE.syntax-children TD
{
padding:0px;
margin:0px;
font-size: x-small;
vertical-align:baseline;
}

TABLE.syntax-children {
padding:0px;
margin:0px;
}

.heading { text-align:right;}
.content { vertical-align: baseline; }
PRE { font-size:8pt; background-color:#BBBBBB; }

.note { color:gray;}

.syntax-element { font-weight:bold; }
.syntax-datatype-enumeration { font-style:italic; color:#005500;
}
.syntax-attribute { font-style:italic; }
.syntax-element-attribute { }
.syntax-additional-attributes { padding:0px; margin:0px;}

.syntax-children .syntax-group-description { font-size:xx-small;
color:gray; }

.syntax-children .syntax-order {
vertical-align: middle;
color:#000066;
font-size:xx-small;
font-weight:bold;
border-right: 1px solid gray;
text-align:right;
padding-right:2px;
}

.syntax-children .left-bracket {
border-left: 1px solid black;
border-top: 1px solid black;
border-bottom: 1px solid black;
padding:0px;
}
.syntax-children .right-bracket {
border-right: 1px solid black;
border-top: 1px solid black;
border-bottom: 1px solid black;
padding:0px;
}
.syntax-children .left-group {
padding:0px;
}
.syntax-children .right-group {
border-right: 1px solid gray;
padding:0px;
}

.attribute-link { color:#000066; }
.element-link { color:#005500; }
.datatype-link { color :#660000; font-style : italic; }
.reference-link { color : #006666; font-style : italic; }

.description {
padding-bottom:.4em;
padding-top:.2em;
font-weight:bold;
border-bottom:1px solid gray;
}

.elementType
{
background-color:#006600;
color: white;
display: block;
font-size : larger;
font-weight : bolder;
padding : 1pt;
padding-left : 5pt;
margin-top : 18pt;
}

.attributeType
{
background-color:#000066;
color: white;
display: block;
font-size : larger;
font-weight : bolder;
padding : 1pt;
padding-left : 5pt;
margin-top : 18pt;
}

H2
{
background-color:#006600;
color: white;
padding : 4pt;
padding-left : 5pt;
}
#elements { background-color:#006600; }
#attributes { background-color:#000066; }
#reference { background-color:#660000; }
#datatypes { background-color:#006666; }
#source { background-color: darkgray; }

.ref-heading { font-size:smaller; font-weight:bold; }
.ref-content { font-size:smaller; margin-left:2em;
margin-bottom:.3em; }
]]></STYLE>
</HEAD>
<BODY>

<H1>
BizTalk.org Library - Schema Detail Browser
</H1><hr/>
<H2>
<xsl:if test="@name"><xsl:value-of select="@name"/></xsl:if>

</H2>

<DIV class="toc">

<!-- Treat any markup within a description as well-formed HTML
-->
<xsl:if test="s:description">
<P>
<xsl:apply-templates select="s:description/node()">
<xsl:template><xsl:copy><xsl:apply-templates

select="@*|node()"/></xsl:copy></xsl:template>
</xsl:apply-templates>
</P>
</xsl:if>
<hr/>
<H5 id="topOfDoc">Navigation Choices:</H5>
<UL>
<LI><A href="#elements">
View Element Definitions</A></LI>
<LI><A href="#attributes">
View Attribute Definitions</A></LI>
<LI><A href="#source">
View Schema Source</A></LI>
<LI><A href="#reference">Quick XDR Schema Reference</A></LI>
<LI><A href="#datatypes">Quick Datatypes Reference</A></LI>
</UL>
<P><a href="http://apps.xmlschema.com/biztalk/validate.asp"
target="_blank">Validate the

schema with Extensibility. </a></P>
<hr/>

<P>This schema defines XML elements and attributes as follows:
</P>

<TABLE class="list">
<TR>
<TH class="elements"><A href="#Elements">Elements</A></TH>
<TH class="attributes"><A
href="#Attributes">Attributes</A></TH>
<TH class="attributes"><A
href="#Attributes">Element-specific Attributes</A></TH>
</TR>

<TR>
<TD class="elements">
<xsl:for-each select="s:ElementType" order-by="@name">
<xsl:choose>
<!-- Look for the document element, as one which is
not contained in any
other element content models. Won't always work,
since XML Schema
currently doesn't have the concept of a
prescribed document element,
but generally this will work. -->
<xsl:when test="..[not(.//s:
element[@type=context()/@name])]">
<B>&lt;<A class="element-link"><xsl:attribute
name="href">#ELEMENT_<xsl:value-of

select="@name"/></xsl:attribute><xsl:value-of select="@name"/></A>&gt;
</B>
<xsl:choose>
<xsl:when test=".//s:element">
(document element)
</xsl:when>
<xsl:otherwise>
(possible orphan)
</xsl:otherwise>
</xsl:choose>
</xsl:when>
<xsl:otherwise>
&lt;<A class="element-link"><xsl:attribute
name="href">#ELEMENT_<xsl:value-of

select="@name"/></xsl:attribute><xsl:value-of select="@name"/></A>&gt;
</xsl:otherwise>
</xsl:choose>
<BR/>
</xsl:for-each>
</TD>

<TD class="attributes">
<xsl:for-each select="s:AttributeType" order-by="@name">
<A class="attribute-link"><xsl:attribute
name="HREF">#ATTRIBUTE_<xsl:value-of

select="@name"/></xsl:attribute><xsl:value-of select="@name"/></A>
<BR/>
</xsl:for-each>
</TD>

<TD class="attributes">
<!-- Handle element-scoped attributes separately -->
<xsl:for-each select="*//s:AttributeType"
order-by="ancestor(s:ElementType)/@name">
&lt;<A class="element-link"><xsl:attribute
name="HREF">#ELEMENT_<xsl:value-of

select="ancestor(s:ElementType)/@name"/></xsl:attribute><xsl:value-of

select="ancestor(s:ElementType)/@name"/></A>
<A class="attribute-link"><xsl:attribute
name="HREF">#ELEMENTATTRIBUTE_<xsl:value-of

select="ancestor(s:ElementType)/@name"/>_<xsl:value-of

select="@name"/></xsl:attribute><xsl:value-of select="@name"/></A>&gt;
<BR/>
</xsl:for-each>
</TD>
</TR>
</TABLE>

<P>Document conventions:</P>
<UL>
<LI>[] - optional</LI>
<LI>[]* - zero or more times</LI>
<LI>+ - one or more times</LI>
</UL>

</DIV>

<A href="#topOfDoc">Back to top</A><hr/>

<DIV class="list">
<H2 id="Elements"><xsl:if test="@name"><xsl:value-of
select="@name"/></xsl:if>
Defines These Elements</H2>
<xsl:apply-templates select="s:ElementType" order-by="@name"/>
</DIV>

<A href="#topOfDoc">Back to top</A><hr/>

<DIV class="list">
<H2 id="Attributes"><xsl:if test="@name"><xsl:value-of
select="@name"/></xsl:if>
Attributes Defined </H2>
<xsl:apply-templates select="s:AttributeType | *//s:AttributeType"
order-by="@name" />
</DIV>

<A href="#topOfDoc">Back to top</A><hr/>

<DIV class="list">
<H2 id="Source"><xsl:if test="@name"><xsl:value-of
select="@name"/></xsl:if>
Original Schema Source</H2>
<PRE><xsl:eval>this.xml</xsl:eval></PRE>
</DIV>

<A href="#topOfDoc">Back to top</A><hr/>

<H2 id="Reference">Quick XDR Schema Reference: </H2>
<DIV class="ref-content">
Schemas are described in XML. The following attributes can appear in
schemas:
</DIV>

<H3>Model - specifies extensibility model</H3>
<DIV class="ref-heading"><A
name="model_open">model="open"</A></DIV>
<DIV class="ref-content">
The element can contain elements, attributes, and text not
specified in
the content model. This is the default value. Content that is
added must be
qualified with a namespace reference to be valid. Open is the
default model.
</DIV>

<DIV class="ref-heading"><A name="model_closed"

class="ReferenceHeading">model="closed"</A></DIV>
<DIV class="ref-content">
The element cannot contain elements, attributes, and text except
for
that specified in the content model. DTDs use a closed model.
</DIV>
<hr/>
<H3>Content - specifies type of element content allowed</H3>
<DIV class="ref-heading"><A name="content_textOnly"

class="ReferenceHeading">content="textOnly"</A></DIV>
<DIV class="ref-content">
The element can contain only text and attributes, not elements.
Note that if the
model attribute is set to "open", the element can contain text and

additional elements.
</DIV>

<DIV class="ref-heading"><A name="content_eltOnly"

class="ReferenceHeading">content="eltOnly"</A></DIV>
<DIV class="ref-content">
The element can contain only other elements and attributes, but
not free text. Note that
if the model attribute is set to "open", the element can contain
text
and additional elements.
</DIV>

<DIV class="ref-heading"><A name="content_empty"

class="ReferenceHeading">content="empty"</A></DIV>
<DIV class="ref-content">
The element cannot contain text or elements. Note that if the
model
attribute is set to "open", the element can contain text and
additional
elements.
</DIV>

<DIV class="ref-heading"><A name="content_mixed"

class="ReferenceHeading">content="mixed"</A></DIV>
<DIV class="ref-content">
The element can contain a mix of named elements and text. This is

the default value. When elements and text are mixed together,
elements must not be between
portions of the text. It is advisable to set all elements
together followed by the data for
the element.
</DIV>
<hr/>
<H3>Order - defines cardinality of element contents</H3>
<DIV class="ref-heading"><A name="order_many"
class="ReferenceHeading">order="many"</A></DIV>
<DIV class="ref-content">
Permits the elements to appear (or not appear) in any order. This
is the default if no order
cardinality is specified.
</DIV>

<DIV class="ref-heading"><A name="order_one"
class="ReferenceHeading">order="one"</A></DIV>
<DIV class="ref-content">
Signifies that the schema authors intent is that only one of a set
of elements
to described is to be present in the final data sent.
<b>Caution</b> When used in

conjunction
with group type schema element, business documents become nearly
impossible to understand.

For
this reason, defining &lt;group order="one"&gt; is not
recommended.<br/>
Not all parsers enforce the <i>order="one"</i> convention during
validation.
</DIV>

<DIV class="ref-heading"><A name="order_seq"
class="ReferenceHeading">order="seq"</A></DIV>
<DIV class="ref-content">
Requires the elements contained to appear in the specified
sequence. Optional elements of a

given
type must all appear together in the order they are defined in the
schema.
</DIV>
<p/>
For a more complete XDR reference, refer to <a

href="http://msdn.microsoft.com/xml/reference/schema/start.asp"

target="msdn">http://msdn.microsoft.com/xml/reference/schema/start.
asp</a>

<br/>
<A href="#topOfDoc">Back to top</A><hr/>

<H2 id="Datatypes">Datatype Reference:</H2>

<DIV class="ref-heading"><A name="datatype_bin.base64"
class="ReferenceHeading">bin.base64

datatype</A></DIV>
<DIV class="ref-content">
MIME-style Base64 encoded binary BLOB.
</DIV>

<DIV class="ref-heading"><A name="datatype_bin.hex"
class="ReferenceHeading">bin.hex

datatype</A></DIV>
<DIV class="ref-content">
Hexadecimal digits representing octets.
</DIV>

<DIV class="ref-heading"><A name="datatype_boolean"
class="ReferenceHeading">boolean

datatype</A></DIV>
<DIV class="ref-content">
0 or 1, where 0 == "false" and 1 =="true".
</DIV>

<DIV class="ref-heading"><A name="datatype_char"
class="ReferenceHeading">char

datatype</A></DIV>
<DIV class="ref-content">
String, one character long.
</DIV>

<DIV class="ref-heading"><A name="datatype_date"
class="ReferenceHeading">date

datatype</A></DIV>
<DIV class="ref-content">
Date in a subset ISO 8601 format, without the time data. For
example: "1994-11-05".
</DIV>

<DIV class="ref-heading"><A name="datatype_dateTime"
class="ReferenceHeading">dateTime

datatype</A></DIV>
<DIV class="ref-content">
Date in a subset of ISO 8601 format, with optional time and no
optional zone. Fractional

seconds can be as precise as nanoseconds. For example, "1988-04-07T18:
39:09".
</DIV>

<DIV class="ref-heading"><A name="datatype_dateTime.tz"
class="ReferenceHeading">dateTime.tz

datatype</A></DIV>
<DIV class="ref-content">
Date in a subset ISO 8601 format, with optional time and
optional zone. Fractional seconds

can be as precise as nanoseconds. For example: "1988-04-07T18:39:09-08:
00".
</DIV>

<DIV class="ref-heading"><A name="datatype_entity"
class="ReferenceHeading">entity

datatype</A></DIV>
<DIV class="ref-content">
Represents the XML ENTITY type.
</DIV>

<DIV class="ref-heading"><A name="datatype_entities"
class="ReferenceHeading">entities

datatype</A></DIV>
<DIV class="ref-content">
Represents the XML ENTITIES type.
</DIV>

<DIV class="ref-heading"><A name="datatype_enumeration"
class="ReferenceHeading">enumeration

datatype</A></DIV>
<DIV class="ref-content">
Represents an enumerated type (supported on attributes only).

</DIV>

<DIV class="ref-heading"><A name="datatype_fixed.14.4"
class="ReferenceHeading">fixed.14.4

datatype</A></DIV>
<DIV class="ref-content">
Same as "number" but no more than 14 digits to the left of the
decimal point, and no more

than 4 to the right.
</DIV>

<DIV class="ref-heading"><A name="datatype_float"
class="ReferenceHeading">float

datatype</A></DIV>
<DIV class="ref-content">
Real number, with no limit on digits; can potentially have a
leading sign, fractional digits,

and optionally an exponent. Punctuation as in U.S. English. Values range
from

1.7976931348623157E+308 to 2.2250738585072014E-308.
</DIV>

<DIV class="ref-heading"><A name="datatype_id"
class="ReferenceHeading">id datatype</A></DIV>
<DIV class="ref-content">
Represents the XML ID type.
</DIV>

<DIV class="ref-heading"><A name="datatype_idref"
class="ReferenceHeading">idref

datatype</A></DIV>
<DIV class="ref-content">
Represents the XML IDREF type.
</DIV>

<DIV class="ref-heading"><A name="datatype_idrefs"
class="ReferenceHeading">idrefs

datatype</A></DIV>
<DIV class="ref-content">
Represents the XML IDREFS type.
</DIV>

<DIV class="ref-heading"><A name="datatype_int"
class="ReferenceHeading">int datatype</A></DIV>
<DIV class="ref-content">
Number, with optional sign, no fractions, and no exponent.
</DIV>

<DIV class="ref-heading"><A name="datatype_nmtoken"
class="ReferenceHeading">nmtoken

datatype</A></DIV>
<DIV class="ref-content">
Represents the XML NMTOKEN type.
</DIV>

<DIV class="ref-heading"><A name="datatype_nmtokens"
class="ReferenceHeading">nmtokens

datatype</A></DIV>
<DIV class="ref-content">
Represents the XML NMTOKENS type.
</DIV>

<DIV class="ref-heading"><A name="datatype_notation"
class="ReferenceHeading">notation

datatype</A></DIV>
<DIV class="ref-content">
Represents a NOTATION type.
</DIV>

<DIV class="ref-heading"><A name="datatype_number"
class="ReferenceHeading">number

datatype</A></DIV>
<DIV class="ref-content">
Number, with no limit on digits; can potentially have a leading
sign, fractional digits, and

optionally an exponent. Punctuation as in U.S. English. (Values have
same range as most significant

number, R8, 1.7976931348623157E+308 to 2.2250738585072014E-308.)
</DIV>

<DIV class="ref-heading"><A name="datatype_string"
class="ReferenceHeading">string

datatype</A></DIV>
<DIV class="ref-content">
Represents a string type.
</DIV>

<DIV class="ref-heading"><A name="datatype_time"
class="ReferenceHeading">time

datatype</A></DIV>
<DIV class="ref-content">
Time in a subset ISO 8601 format, with no date and no time zone.
For example: "08:15:27".
</DIV>

<DIV class="ref-heading"><A name="datatype_time.tz"
class="ReferenceHeading">time.tz

datatype</A></DIV>
<DIV class="ref-content">
Time in a subset ISO 8601 format, with no date but optional time
zone. For example:

"08:1527-05:00".
</DIV>

<DIV class="ref-heading"><A name="datatype_i1"
class="ReferenceHeading">i1 datatype</A></DIV>
<DIV class="ref-content">
Integer represented in one byte. A number, with optional sign,
no fractions, no exponent. For

example: "1, 127, -128".
</DIV>

<DIV class="ref-heading"><A name="datatype_i2"
class="ReferenceHeading">i2 datatype</A></DIV>
<DIV class="ref-content">
Integer represented in one word. A number, with optional sign,
no fractions, no exponent. For

example: "1, 703, -32768".
</DIV>

<DIV class="ref-heading"><A name="datatype_i4"
class="ReferenceHeading">i4 datatype</A></DIV>
<DIV class="ref-content">
Integer represented in four bytes. A number, with optional sign,
no fractions, no exponent.

For example: "1, 703, -32768, 148343, -1000000000".
</DIV>

<DIV class="ref-heading"><A name="datatype_r4"
class="ReferenceHeading">r4 datatype</A></DIV>
<DIV class="ref-content">
Real number, with seven digit precision; can potentially have a
leading sign, fractional

digits, and optionally an exponent. Punctuation as in U.S. English.
Values range from

3.40282347E+38F to 1.17549435E-38F.
</DIV>

<DIV class="ref-heading"><A name="datatype_r8"
class="ReferenceHeading">r8</A></DIV>
<DIV class="ref-content">
Real number, with 15 digit precision; can potentially have a
leading sign, fractional digits,

and optionally an exponent. Punctuation as in U.S. English. Values range
from

1.7976931348623157E+308 to 2.2250738585072014E-308.
</DIV>

<DIV class="ref-heading"><A name="datatype_ui1"
class="ReferenceHeading">ui1 datatype</A></DIV>
<DIV class="ref-content">
Unsigned integer. A number, unsigned, no fractions, no exponent.
For example: "1, 255".
</DIV>

<DIV class="ref-heading"><A name="datatype_ui2"
class="ReferenceHeading">ui2 datatype</A></DIV>
<DIV class="ref-content">
Unsigned integer, two bytes. A number, unsigned, no fractions,
no exponent. For example: "1,

255, 65535".
</DIV>

<DIV class="ref-heading"><A name="datatype_ui4"
class="ReferenceHeading">ui4 datatype</A></DIV>
<DIV class="ref-content">
Unsigned integer, four bytes. A number, unsigned, no fractions, no
exponent. For example: "1,

703, 3000000000".
</DIV>

<DIV class="ref-heading"><A name="datatype_uri"
class="ReferenceHeading">uri datatype</A></DIV>
<DIV class="ref-content">
Universal Resource Identifier (URI). For example, "urn:
schemas-microsoft-com:Office9".
</DIV>

<DIV class="ref-heading"><A name="datatype_uuid"
class="ReferenceHeading">uuid

datatype</A></DIV>
<DIV class="ref-content">
Hexadecimal digits representing octets, optional embedded
hyphens that are ignored. For

example: "333C7BC4-460F-11D0-BC04-0080C7055A83".
</DIV>

<A href="#topOfDoc">Back to top</A><hr/>
This documentation automatically generated using XSL.<br/>
BizTalk.org Library Schema browser ?000 Microsoft
Corporation<br/>
Any technical schema copyright is covered separately by schema
owner/author.<hr/>

</BODY>
</HTML>

</xsl:template>

<xsl:template match="s:ElementType">

<!-- The link and header -->
<DIV class="elementType" >
&lt;<A><xsl:attribute name="name">ELEMENT_<xsl:value-of

select="@name"/></xsl:attribute><xsl:value-of select="@name"/>&gt;</A>
</DIV>

<!-- First dump the explanation -->
<xsl:if test="s:description">
<DIV class="description">
<xsl:apply-templates select="s:description/node()">
<xsl:template><xsl:copy><xsl:apply-templates
select="@*|node()"/></xsl:copy></xsl:template>
</xsl:apply-templates>
</DIV>
</xsl:if>

<TABLE class="elements">

<!-- Syntax -->
<TR>
<TD class="heading">syntax:</TD>
<TD class="content">&lt;<SPAN class="syntax-element"><xsl:value-of
select="@name"/></SPAN>
<xsl:if test="s:attribute">
<TABLE cellspacing="0" cellpadding="0">
<xsl:for-each select="s:attribute" order-by="@type">
<TR class="syntax-additional-attributes">
<xsl:choose>
<xsl:when test="ancestor(s:ElementType)//s:
AttributeType[@name=context()/@type]">
<xsl:for-each

select="ancestor(s:ElementType)//s:
AttributeType[@name=context()/@type]">
<TD>&#160;<xsl:if test=".[not(@required) or

not(@required='yes')]">[</xsl:if></TD>
<TD class="syntax-element-attribute">
<A class="attribute-link"><xsl:attribute

name="HREF">#ELEMENTATTRIBUTE_<xsl:value-of select="ancestor(s:
ElementType)/@name"/>_<xsl:value-of

select="@name"/></xsl:attribute>
<xsl:value-of select="@name"/></A>
= <xsl:choose>
<xsl:when test="">@dt:type[.='enumeration']">
<A class="datatype-link"
href="#datatype_enumeration">enumeration</A>:
<SPAN class="syntax-constant"><xsl:for-each
select="@dt:values"><xsl:eval

no-entities="t">formatEnum(this,

this.selectSingleNode("../@default"));</xsl:eval></xsl:
for-each></SPAN>
</xsl:when>
<xsl:when test="@dt:type">
<A class="datatype-link"><xsl:attribute

name="href">#datatype_<xsl:value-of select="@dt:type"/></xsl:
attribute>
<xsl:value-of select="@dt:type"/></A>
</xsl:when>
<xsl:otherwise>
<SPAN class="syntax-attribute">string</SPAN>
</xsl:otherwise>
</xsl:choose>
<xsl:if test=".[not(@required) or
not(@required='yes')]"> ]</xsl:if>
</TD>
</xsl:for-each>
</xsl:when>
<xsl:otherwise>
<xsl:for-each select="ancestor(s:Schema)/s:
AttributeType[@name=context()/@type]">
<TD>&#160;<xsl:if test=".[not(@required) or

not(@required='yes')]">[</xsl:if></TD>
<TD class="syntax-element-attribute">
<A class="attribute-link"><xsl:attribute
name="HREF">#ATTRIBUTE_<xsl:value-of

select="@name"/></xsl:attribute>
<xsl:value-of select="@name"/></A>
= <xsl:choose>
<xsl:when test="">@dt:type[.='enumeration']">
<A class="datatype-link"
href="#datatype_enumeration">enumeration</A>:
<SPAN class="syntax-constant"><xsl:for-each
select="@dt:values"><xsl:eval

no-entities="t">formatEnum(this,

this.selectSingleNode("../@default"));</xsl:eval></xsl:
for-each></SPAN>
</xsl:when>
<xsl:when test="@dt:type">
<A class="datatype-link"><xsl:attribute

name="href">#datatype_<xsl:value-of select="@dt:type"/></xsl:
attribute>
<xsl:value-of select="@dt:type"/></A>
</xsl:when>
<xsl:otherwise>
<SPAN class="syntax-attribute">string</SPAN>
</xsl:otherwise>
</xsl:choose>
<xsl:if test=".[not(@required) or
not(@required='yes')]"> ]</xsl:if>
</TD>
</xsl:for-each>
</xsl:otherwise>
</xsl:choose>
</TR>
</xsl:for-each>
</TABLE>
</xsl:if>

<xsl:choose>
<xsl:when test="@content[.='empty'] | @content[.='eltOnly' and

not(..//s:element)]">/&gt;</xsl:when>
<xsl:otherwise>
&gt;
<TABLE class="syntax-children">
<xsl:choose>
<xsl:when test="@dt:type">
<xsl:for-each select="@dt:type">
<TR><TD>&#160;</TD><TD colspan="2"><A
class="datatype-link"><xsl:attribute

name="href">#datatype_<xsl:value-of select="."/></xsl:attribute>
<xsl:value-of select="."/></A> datatype</TD></TR>
</xsl:for-each>
</xsl:when>

<xsl:when test="s:element | s:group">
<TR>
<TD class="left-group">&#160;</TD>
<TD class="syntax-order">
<A class="reference-link"><xsl:attribute
name="href">#order_<xsl:value-of

select="@order"/></xsl:attribute>
<xsl:value-of select="@order"/></A>
<xsl:if test=".[not(@order)]"><A
class="reference-link"

href="#order_many">(many)</A></xsl:if>
</TD>

<TD>
<TABLE class="syntax-children">

<xsl:apply-templates select="s:element | s:
group">

<xsl:template/>

<xsl:template match="s:group">
<TR>
<TD class="left-group">&#160;</TD>
<TD class="syntax-order">
<A class="reference-link"><xsl:attribute

name="href">#order_<xsl:value-of select="@order"/></xsl:attribute>
<xsl:value-of select="@order"/></A>
<xsl:if test=".[not(@order)]"><A
class="reference-link"

href="#order_many">(many)</A></xsl:if>
</TD>
<TD>
<TABLE class="syntax-children"><xsl:
apply-templates select="s:element

| s:group"/></TABLE>
</TD>
<TD class="right-group">&#160;</TD>
<xsl:if test="@maxOccurs[.='*']">

STYLE="vertical-align:middle">+</TD></xsl:if>
</TR>
<xsl:if test="s:description">
<TR>
<TD colspan="2"/>
<TD class="syntax-group-description"
colspan="2">
<xsl:apply-templates select="s:
description/node()">
<xsl:template><xsl:copy><xsl:
apply-templates

select="@*|node()"/></xsl:copy></xsl:template>
</xsl:apply-templates>
</TD>
</TR>
</xsl:if>
</xsl:template>

<xsl:template match="s:group[@minOccurs='0']">
<TR>
<TD class="left-bracket">&#160;</TD>
<TD class="syntax-order">
<A class="reference-link"><xsl:attribute

name="href">#order_<xsl:value-of select="@order"/></xsl:attribute>
<xsl:value-of select="@order"/></A>
<xsl:if test=".[not(@order)]"><A
class="reference-link"

href="#order_many">(many)</A></xsl:if>
</TD>
<TD>
<TABLE class="syntax-children"><xsl:
apply-templates select="s:element

| s:group"/></TABLE>
</TD>
<TD class="right-bracket">&#160;</TD>
<xsl:if test=" @maxOccurs[.='*']">

STYLE="vertical-align:middle">*</TD></xsl:if>
</TR>
<xsl:if test="s:description">
<TR>
<TD colspan="2"/>
<TD class="syntax-group-description"
colspan="2">
<xsl:apply-templates select="s:
description/node()">
<xsl:template><xsl:copy><xsl:
apply-templates

select="@*|node()"/></xsl:copy></xsl:template>
</xsl:apply-templates>
</TD>
</TR>
</xsl:if>
</xsl:template>

<xsl:template match="s:element">
<TR><TD>&#160;</TD><TD colspan="2">&lt;<A

class="element-link"><xsl:attribute name="href">#ELEMENT_<xsl:value-of

select="@type"/></xsl:attribute><xsl:value-of select="@type"/></A>&gt;
<xsl:if test=" +@maxOccurs[.='*']">+
if></TD></TR>
</xsl:template>

<xsl:template match="s:
element[@minOccurs='0']">
<TR><TD>[&#160;</TD><TD colspan="2">&lt;<A

class="element-link"><xsl:attribute name="href">#ELEMENT_<xsl:value-of

select="@type"/></xsl:attribute><xsl:value-of select="@type"/></A>&gt;
]
<xsl:if test=" *@maxOccurs[.='*']">*
if></TD></TR>
</xsl:template>
</xsl:apply-templates>

</TABLE>
</TD>
</TR>
</xsl:when>
</xsl:choose>

<xsl:if test=".[not(@dt:type)][@content='mixed' or
@content='textOnly']">
<TR><TD>&#160;</TD><TD colspan="2" class="note"><xsl:
value-of select="@content"/>

content</TD></TR>
</xsl:if>

<xsl:if test=".[not(@dt:type)][not(@content)]">
<TR><TD>&#160;</TD><TD colspan="2" class="note">mixed
content</TD></TR>
</xsl:if>

</TABLE>

&lt;/<SPAN class="syntax-element"><xsl:value-of
select="@name"/></SPAN>&gt;
</xsl:otherwise>
</xsl:choose>
</TD>
</TR>

<TR>
<TD class="heading">content:</TD>
<TD class="content">
<xsl:choose>
<xsl:when test="@dt:type">
<A class="datatype-link"><xsl:attribute
name="href">#datatype_<xsl:value-of

select="@dt:type"/></xsl:attribute>
<xsl:value-of select="@dt:type"/></A> datatype
</xsl:when>
<xsl:when test="@content">
<A class="reference-link"><xsl:attribute
name="href">#content_<xsl:value-of

select="@content"/></xsl:attribute>
<xsl:value-of select="@content"/></A>
</xsl:when>
<xsl:otherwise>
<A class="reference-link" href="#content_mixed">mixed</A>
(default)
</xsl:otherwise>
</xsl:choose>
</TD>
</TR>

<TR>
<TD class="heading">order:</TD>
<TD class="content">
<xsl:choose>
<xsl:when test="@dt:type">
<SPAN class="note">Ignored when a datatype is specified.
</SPAN>
</xsl:when>
<xsl:when test="@order">
<A class="reference-link"><xsl:attribute
name="href">#order_<xsl:value-of

select="@order"/></xsl:attribute>
<xsl:value-of select="@order"/></A>
</xsl:when>
<xsl:otherwise>
<A class="reference-link" href="#order_many">many</A>
(default)
</xsl:otherwise>
</xsl:choose>
</TD>
</TR>

<!-- Find the parents -->
<TR>
<TD class="heading">parents: </TD>
<TD class="content">
<xsl:choose>
<xsl:when test="../s:ElementType[.//s:element[@type =
context()/@name ]]">
<xsl:for-each order-by="@name" select="../s:ElementType[.//s:
element[@type =

context()/@name ]]">
<A class="element-link" ><xsl:attribute
name="HREF">#ELEMENT_<xsl:value-of

select="@name"/></xsl:attribute>
<xsl:value-of select="@name"/></A><xsl:if
test="context()[not(end())]">, </xsl:if>
</xsl:for-each>
</xsl:when>
<xsl:otherwise>
<xsl:choose>
<xsl:when test=".//s:element">
<SPAN class="note">No parents found. This a most likely a
document element that can

stand be created.</SPAN>
</xsl:when>
<xsl:otherwise>
<SPAN class="note">No parents found. This probably an
orphan.</SPAN>
</xsl:otherwise>
</xsl:choose>
</xsl:otherwise>
</xsl:choose>
</TD>
</TR>

<!-- dump the possible children -->
<TR>
<TD class="heading">children: </TD>
<TD class="content">
<xsl:choose>
<xsl:when test="@dt:type">
<SPAN class="note">No children allowed when a datatype is
specified.</SPAN>
</xsl:when>
<xsl:when test=" ">@content[.='textOnly']">
<SPAN class="note">No children allowed when content is <A
class="reference-link"

href="#content_textOnly">textOnly</A>.</SPAN>
</xsl:when>
<xsl:when test=".//s:element">
<xsl:for-each select=".//s:element" order-by="@type">
<A class="element-link" ><xsl:attribute
name="HREF">#ELEMENT_<xsl:value-of

select="@type"/></xsl:attribute>
<xsl:value-of select="@type"/></A><xsl:if
test="context()[not(end())]">, </xsl:if>
</xsl:for-each>
</xsl:when>
<xsl:otherwise>
<I>(none)</I>
</xsl:otherwise>
</xsl:choose>
</TD>
</TR>

<!-- dump the possible attributes -->
<TR>
<TD class="heading">attributes: </TD>
<TD class="content">
<xsl:choose>
<xsl:when test="s:attribute">
<xsl:for-each select="s:attribute" order-by="@type">
<A class="attribute-link" ><xsl:choose>
<xsl:when test="ancestor(s:ElementType)//s:
AttributeType[@name=context()/@type]">
<xsl:attribute name="HREF">#ELEMENTATTRIBUTE_<xsl:value-of

select="ancestor(s:ElementType)/@name"/>_<xsl:value-of
select="@type"/></xsl:attribute>
<xsl:value-of select="@type"/></xsl:when>
<xsl:otherwise>
<xsl:attribute name="HREF">#ATTRIBUTE_<xsl:value-of

select="@type"/></xsl:attribute>
<xsl:value-of select="@type"/></xsl:otherwise>
</xsl:choose></A><xsl:if test="context()[not(end())]">,
</xsl:if>
</xsl:for-each>
</xsl:when>
<xsl:otherwise>
<I>(none)</I>
</xsl:otherwise>
</xsl:choose>
</TD>
</TR>

<TR>
<TD class="heading">model:</TD>
<TD class="content">
<xsl:choose>
<xsl:when test="@dt:type">
<SPAN class="note">Treated as <A class="reference-link"
href="#model_closed">closed</A>

when a datatype is specified.</SPAN>
</xsl:when>
<xsl:when test="@model">
<A class="reference-link"><xsl:attribute
name="href">#model_<xsl:value-of

select="@model"/></xsl:attribute>
<xsl:value-of select="@model"/></A>
</xsl:when>
<xsl:otherwise>
<A class="reference-link" href="#model_open">open</A>
(default)
</xsl:otherwise>
</xsl:choose>
</TD>
</TR>

<TR>
<TD class="heading">source:</TD>
<TD class="content">
<PRE><xsl:eval>suppressNS(this.xml)</xsl:eval></PRE>
</TD>
</TR>

</TABLE>
<A href="#topOfDoc">Back to top</A><hr/>

</xsl:template>

<xsl:template match="s:AttributeType">

<!-- The link and header -->
<DIV class="attributeType" >
<xsl:choose>
<xsl:when test="ancestor(s:ElementType)">
<A><xsl:attribute name="name">ELEMENTATTRIBUTE_<xsl:value-of

select="../@name"/>_<xsl:value-of select="@name"/></xsl:attribute>
&lt;<xsl:value-of select="../@name"/> <xsl:value-of
select="@name"/>&gt;
</A>
</xsl:when>
<xsl:otherwise>
<A><xsl:attribute name="name">ATTRIBUTE_<xsl:value-of
select="@name"/></xsl:attribute>
<xsl:value-of select="@name"/>
</A>
</xsl:otherwise>
</xsl:choose>
</DIV>

<xsl:if test="s:description">
<DIV class="description">
<xsl:apply-templates select="s:description/node()">
<xsl:template><xsl:copy><xsl:apply-templates
select="@*|node()"/></xsl:copy></xsl:template>
</xsl:apply-templates>
</DIV>
</xsl:if>

<TABLE class="elements">

<!-- First dump the explanation -->
<!-- Syntax -->
<TR>
<TD class="heading">syntax:</TD>
<TD class="content">
<xsl:if test=".[not(@required) or not(@required='yes')]">[ </xsl:
if>
<xsl:value-of select="@name"/>
= <xsl:choose>
<xsl:when test="">@dt:type[.='enumeration']">
<A class="datatype-link"><xsl:attribute

name="href">#datatype_enumeration</xsl:attribute>enumeration</A>:
<SPAN class="syntax-constant"><xsl:for-each select="@dt:
values"><xsl:eval

no-entities="t">formatEnum(this,

this.selectSingleNode("../@default"));</xsl:eval></xsl:
for-each></SPAN>
</xsl:when>
<xsl:when test="@dt:type">
<A class="datatype-link"><xsl:attribute
name="href">#datatype_<xsl:value-of

select="@dt:type"/></xsl:attribute>
<xsl:value-of select="@dt:type"/></A>
</xsl:when>
<xsl:otherwise>
<SPAN class="syntax-attribute">string</SPAN>
</xsl:otherwise>
</xsl:choose>
<xsl:if test=".[not(@required) or not(@required='yes')]"> ]</xsl:
if>
</TD>
</TR>

<!-- is this attribute required ? -->
<TR>
<TD class="heading">required:</TD>
<TD class="content">
<xsl:choose>
<xsl:when test="@required">
<xsl:value-of select="@required"/>
</xsl:when>
<xsl:otherwise>
no (default)
</xsl:otherwise>
</xsl:choose>
</TD>
</TR>

<!-- Is there a datatype? -->
<xsl:if test="@dt:type">
<TR>
<TD class="heading">datatype:</TD>
<TD class="content"><A class="datatype-link"><xsl:attribute

name="href">#datatype_<xsl:value-of select="@dt:type"/></xsl:
attribute>
<xsl:value-of select="@dt:type"/></A></TD>
</TR>
</xsl:if>

<xsl:if test="@dt:values">
<TR>
<TD class="heading">values:</TD>
<TD class="content"><xsl:for-each select="@dt:values"><xsl:eval

no-entities="t">formatEnum(this,

this.selectSingleNode("../@default"));</xsl:eval></xsl:for-each></TD>
</TR>
</xsl:if>

<!-- Is there a default value? -->
<xsl:if test="@default">
<TR>
<TD class="heading">default value:</TD>
<TD class="content"><B><xsl:value-of
select="@default"/></B></TD>
</TR>
</xsl:if>

<!-- Elements this attribute can appear on -->
<TR>
<TD class="heading">elements:</TD>
<TD>
<xsl:choose>
<xsl:when test="ancestor(s:ElementType)">
<A class="element-link" ><xsl:attribute
name="HREF">#ELEMENT_<xsl:value-of

select="../@name"/></xsl:attribute>
<xsl:value-of select="../@name"/></A>
</xsl:when>
<xsl:otherwise>
<xsl:choose>
<xsl:when test="../s:ElementType/s:
attribute[@type=context()/@name]">
<xsl:for-each select="../s:ElementType/s:
attribute[@type=context()/@name]"

order-by="@name">
<A class="element-link" ><xsl:attribute
name="HREF">#ELEMENT_<xsl:value-of

select="../@name"/></xsl:attribute>
<xsl:value-of select="../@name"/></A><xsl:if
test="context()[not(end())]">,

</xsl:if>
</xsl:for-each>
</xsl:when>
<xsl:otherwise>
<I>(none)</I>
</xsl:otherwise>
</xsl:choose>
</xsl:otherwise>
</xsl:choose>
</TD>
</TR>

<TR>
<TD class="heading">source:</TD>
<TD class="content">
<PRE><xsl:eval>suppressNS(this.xml)</xsl:eval></PRE>
</TD>
</TR>

</TABLE>
<A href="#topOfDoc">Back to top</A><hr/>
</xsl:template>

<xsl:script language="JScript"><![CDATA[
function formatEnum(values, defaultValue)
{
var e = values.nodeValue;
// trim trailing spaces
while (e.charAt(e.length - 1) == " ")
e = e.substring(0, e.length - 1);
var re = new RegExp("\\s+", "g");
e = e.replace(re, " | ")
if (defaultValue)
{
var d = defaultValue.nodeValue;
var re = new RegExp(d, "g");
e = e.replace(re, "<B>" + d + "</B>");
}
return e;
}

function suppressNS(xmlSource)
{
var re = / xmlns[^=]*=['"]urn:schemas-microsoft-com:xml-data['"]/g;

xmlSource = xmlSource.replace(re, "");
var re = / xmlns[^=]*=['"]urn:schemas-microsoft-com:
datatypes['"]/g;
xmlSource = xmlSource.replace(re, "");
return xmlSource;
}
]]></xsl:script>
</xsl:stylesheet>

下面是有个实验的xml文件:?nbsp;
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="test.xsl"?>

<Schema name="NORIS_PurchaseOrder" xmlns="urn:schemas-microsoft-com:
xml-data"
xmlns:dt="urn:schemas-microsoft-com:datatypes">

<ElementType name="referenceNo" content="textOnly" dt:
type="string"/>
<ElementType name="name" content="textOnly" dt:type="string"/>

<ElementType name="VATRate" content="textOnly" dt:type="float"/>
<ElementType name="amountExclVAT" content="textOnly" dt:
type="float"/>
<ElementType name="VATAmount" content="textOnly" dt:type="float"/>
<ElementType name="amountInclVAT" content="textOnly" dt:
type="float"/>
<ElementType name="Amount" content="eltOnly">
<element type="VATRate" minOccurs = "0" maxOccurs = "1"/>
<element type="amountExclVAT" minOccurs = "1" maxOccurs = "1"/>
<element type="VATAmount" minOccurs = "0" maxOccurs = "1"/>
<element type="amountInclVAT" minOccurs = "1" maxOccurs = "1"/>
</ElementType>

<ElementType name="firstName" content="textOnly" dt:type="string"/>
<ElementType name="lastName" content="textOnly" dt:type="string"/>
<ElementType name="title" content="textOnly" dt:type="string"/>
<ElementType name="suffix" content="textOnly" dt:type="string"/>
<ElementType name="position" content="textOnly" dt:type="string"/>
<ElementType name="tel" content="textOnly" dt:type="string"/>
<ElementType name="fax" content="textOnly" dt:type="string"/>
<ElementType name="email" content="textOnly" dt:type="string"/>
<ElementType name="ContactPerson" content="eltOnly">
<element type="referenceNo" minOccurs = "1" maxOccurs = "1"/>
<element type="firstName" minOccurs = "1" maxOccurs = "1"/>
<element type="lastName" minOccurs = "1" maxOccurs = "1"/>
<element type="title" minOccurs = "0" maxOccurs = "1"/>
<element type="suffix" minOccurs = "0" maxOccurs = "1"/>
<element type="position" minOccurs = "0" maxOccurs = "1"/>
<element type="tel" minOccurs = "0" maxOccurs = "1"/>
<element type="fax" minOccurs = "0" maxOccurs = "1"/>
<element type="email" minOccurs = "0" maxOccurs = "1"/>
</ElementType>

<ElementType name="street" content="textOnly" dt:type="string"/>
<ElementType name="city" content="textOnly" dt:type="string"/>
<ElementType name="state" content="textOnly" dt:type="string"/>
<ElementType name="postalCode" content="textOnly" dt:type="string"/>
<ElementType name="country" content="textOnly" dt:type="string"/>
<ElementType name="Address" content="eltOnly">

<element type="street" minOccurs = "0" maxOccurs = "1"/>
<element type="city" minOccurs = "0" maxOccurs = "1"/>
<element type="state" minOccurs = "0" maxOccurs = "1"/>
<element type="postalCode" minOccurs = "0" maxOccurs = "1"/>
<element type="country" minOccurs = "0" maxOccurs = "1"/>
</ElementType>

<ElementType name="registrationNo" content="textOnly" dt:
type="string"/>
<ElementType name="VATRegistrationNo" content="textOnly" dt:
type="string"/>
<ElementType name="url" content="textOnly" dt:type="string"/>
<ElementType name="Organization" content="eltOnly">
<element type="referenceNo" minOccurs = "1" maxOccurs = "1"/>
<element type="name" minOccurs = "1" maxOccurs = "1"/>
<element type="registrationNo" minOccurs = "1" maxOccurs = "1"/>
<element type="VATRegistrationNo" minOccurs = "0" maxOccurs =
"1"/>
<element type="url" minOccurs = "0" maxOccurs = "1"/>
</ElementType>

<ElementType name="InvoiceTo" content="eltOnly">
<element type="Organization" minOccurs = "1" maxOccurs = "1"/>
<element type="Address" minOccurs = "1" maxOccurs = "1"/>
</ElementType>

<ElementType name="DeliverTo" content="eltOnly">
<element type="Organization" minOccurs = "1" maxOccurs = "1"/>
<element type="Address" minOccurs = "1" maxOccurs = "1"/>
</ElementType>

<ElementType name="lineNo" content="textOnly" dt:type="number"/>
<ElementType name="productRef" content="textOnly" dt:type="string"/>
<ElementType name="productName" content="textOnly" dt:
type="string"/>
<ElementType name="quantity" content="textOnly" dt:type="float"/>
<ElementType name="unitOfMeasureRef" content="textOnly" dt:
type="string"/>
<ElementType name="unitPrice" content="textOnly" dt:type="float"/>
<ElementType name="priceLevelRef" content="textOnly" dt:
type="string"/>
<ElementType name="projectRef" content="textOnly" dt:type="string"/>
<ElementType name="projectTaskRef" content="textOnly" dt:
type="string"/>
<ElementType name="Line" content="eltOnly">
<element type="lineNo" minOccurs = "1" maxOccurs = "1"/>
<element type="productRef" minOccurs = "1" maxOccurs = "1"/>
<element type="productName" minOccurs = "0" maxOccurs = "1"/>
<element type="quantity" minOccurs = "1" maxOccurs = "1"/>
<element type="unitOfMeasureRef" minOccurs = "1" maxOccurs = "1"/>
<element type="unitPrice" minOccurs = "1" maxOccurs = "1"/>
<element type="Amount" minOccurs = "1" maxOccurs = "1"/>
<element type="shipmentDate" minOccurs = "0" maxOccurs = "1"/>
<element type="priceLevelRef" minOccurs = "0" maxOccurs = "1"/>
<element type="projectRef" minOccurs = "0" maxOccurs = "1"/>
<element type="projectTaskRef" minOccurs = "0" maxOccurs = "1"/>
</ElementType>

<ElementType name="customerOrderRef" content="textOnly" dt:
type="string"/>
<ElementType name="comments" content="textOnly" dt:type="string"/>
<ElementType name="orderDate" content="textOnly" dt:type="date"/>
<ElementType name="shipmentDate" content="textOnly" dt:type="date"/>
<ElementType name="totalAmount" content="textOnly" dt:type="float"/>
<ElementType name="roundingAmount" content="textOnly" dt:
type="float"/>
<ElementType name="currencyCode" content="textOnly" dt:
type="string"/>

<ElementType name="PurchaseOrder" content="eltOnly" >
<element type="customerOrderRef" minOccurs = "1" maxOccurs = "1"/>
<element type="InvoiceTo" minOccurs = "1" maxOccurs = "1"/>
<element type="DeliverTo" minOccurs = "1" maxOccurs = "1"/>
<element type="comments" minOccurs = "0" maxOccurs = "1"/>
<element type="ContactPerson" minOccurs = "0" maxOccurs = "1"/>
<element type="orderDate" minOccurs = "1" maxOccurs = "1"/>
<element type="shipmentDate" minOccurs = "1" maxOccurs = "1"/>
<element type="Amount" minOccurs = "1" maxOccurs = "*"/>
<element type="totalAmount" minOccurs = "1" maxOccurs = "1"/>
<element type="roundingAmount" minOccurs = "1" maxOccurs = "1"/>
<element type="currencyCode" minOccurs = "1" maxOccurs = "1"/>
<element type="Line" minOccurs = "1" maxOccurs = "*"/>
</ElementType>

</Schema>

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: softlab.nju.edu]
返回上一页 回到目录 回到页首 下一篇


Re: 请问XML联盟的网址是什么？

 发信人: tapebomb (枫树), 信区: XML
标 题: Re: 请问XML联盟的网址是什么？
发信站: BBS 水木清华站 (Thu Apr 27 09:06:13 2000)

www.xml.org.cn
其他参考网址是:
www.xml.com.cn

国外有:
www.w3c.org
www.oasis-open.org
www.xml.org
www.xml.com
www.biztalk.org(关于XML在e-commerce应用框架)
www.wdvl.com
【 在 zrdl (Clown) 的大作中提到: 】
∶ 如题！
∶ Thanks to all of you!

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: softlab.nju.edu]


Re: 请问XML联盟的网址是什么？

 发信人: JoyKiller (都市里的黑衣人), 信区: XML
标 题: Re: 请问XML联盟的网址是什么？
发信站: BBS 水木清华站 (Thu Apr 27 16:43:51 2000)

可以去ondisplay.com的网站 http://www.xmlconnect.com
着 这是一个比较好的BIZTALK的XML B2B SERVER。

【 在 veb (君) 的大作中提到: 】
∶ 已放入精华区。

--

宠辱不惊花开花落,
去留无意云卷云舒.

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.105.185.168]


xml网络资源

 发信人: windride (一欲成风), 信区: XML
标 题: xml网络资源
发信站: BBS 水木清华站 (Sat Apr 29 13:49:31 2000)

1. 中国XML权威技术站点: http://www.xml.org..cn
2. Chinese XML Now!:http://xml.ascc.net/
3. Xml.com.cn:htttp://www.xml.com.cn
4. 万维网联盟: http:// www.w3.org
5. 万维网联盟的技术报告:http:// www.w3.org/TR
6. XML可扩展标记语言: http://www.w3.org/XML
7. DOM文档对象模型:htttp://www.w3..org/DOM
8. RDF资源描述框架: http://www.w3.org/Metadata
9. MathML数学标记语言: http://www.w3.org/Math
10. XML.com: http:// www.xml.com
11. XML.org: http:// www.xml.org
12. Biztalk.org http://www.biztalk.org
13. Apache的XML工程: http:// xml.apache.org
14. IBM XML开发: http:// www.ibm.com/developer/xml
15. IBM XML Java解析工具: http:// www.alphaworks.ibm.com/formula/XML
16. IBM的XML教程：http://www.software.ibm.com/xml/education
17. Oracle的XML资源：http://www.oracle.com/xml
18. Sun的XML资源：http://java.sun.com/xml
19. WebMethods公司：http://www.webmethods.com
20. Xmlu.com:http://www.xmlu.com
21. XML技术大会信息: http:// www.xmlconference.com
22. XML全球技术: http:// www.xmlglobal.com
23. XML交换(XML票据交换,标记集共享和讨论): http:// www.xmlx.com
24. XML 之盒(提供XML产品和服务): http:// www.t2000-usa.com/
25. 西雅图XML特别兴趣小组: http:// www.seattlexml.org
26. Code360.com(提供基于XML的电子商务中间件解决方案):www.code360.com
27. XML和相关技术的索引: http:// www.xmlephant.com
28. XMLTree (XML内容和接口分类): http:// www.XMLTree.com
29. 结构信息标准促进组织(OASIS) : http:// www.oasis-open.org
30. 开放电子书: http:// www.openebook.org
31. WAP论坛:http://www.wapforum.com
32. Arbortext 公司(提供开放基于XML的软件): http:// www.arbortext.com
33. 高级数据工程公司ADEI: http:// www.adei.com
34. Web开发者虚拟图书馆: http:// www.wdvl.com
35. 有关XML的常见问题: http:// www.ucc.ie/xml/
36. 图形通信协会(GCA): http://www.gca.org/
37. XML信息网站: http://www.xmlinfo.com/
38. DataChannel公司(提供基于XML的EIP方案):http://www.datachannel.com
39. 在Python中处理XML的特别兴趣组:http://www.python.org/sigs/xml-sig
40. XML软件: http://www.xmlsoftware.com
41. James Clark的主页: http://www.jclark.com/xml
42. Tim Bray的主页: http://www.textuality.com/xml
43. XML Schema站点: http://www.schema.net
44. XML-CML:http://www.xml-cml.org
45. XML/EDI 组:http://www.xmledi.com
46. Redix 的XML/EDI 创作工具: http://www.redix.com
47. XMLShareware.com: http://www.xmlshareware.com
48. Textuality的XML网页: http://www.textuality.com/xml
49. XML杂志: http://www.xmlmag.com/
50. MSDN的XML: http://msdn.microsoft.com/xml
51. MSDN的XML Workshop: http://msdn.microsoft.com/workshop/xml
52. XMLFAQ.com：http://www.xmlfaq.com
53. Webreview的XML参考指南:http://webreview.com/xml
54. XMLHack:http://www.xmlhack.com
55. Robin Cover's的SGML/XML网页：http://www.oasis-open.org/cover
56. XML信息：http://www.xmlinfo.com
57. SAX ,XML简单API：http://www.megginson.com/SAX
58. Cafe con Leche 的XML新闻和资源：http://metalab.unc.edu/xml
59. XML共享软件资源：http://xmlshareware.com
60. WebDeveloper.com的XML资源和文章：http://www.webdeveloper.com/xml
61. Yahoo的XML网页：
http://www.yahoo.com/Computers_and_Internet/Information_and_Documentation/
Data_Formats/XML
62. XML参考:http://spectral.mscs.mu.edu/XML/XMLrefs.html
63. Microstar的XML工具和资源:http://www.microstar.com/XML/index.html
64. Netscape的XML: http://www.mozilla.org/rdf/doc/xml.html
65. XML实例: http://sunsite.unc.edu/xml/books/xml/examples
66. Builder.com: http://www.builder.com/Authoring/XmlSpot
67. XML知识库: http://www.xmlrepository.com
68. VBXML(基于Windows的开放开发组): http://www.vbxml.com
69. 韩国的XML网站XMLIS:http://www.xmlis.com

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.168.235]


jaxp解析DTD的例子。

 发信人: yangxuu (据说江西出美女), 信区: XML
标 题: jaxp解析DTD的例子。
发信站: BBS 水木清华站 (Wed May 3 00:07:46 2000)

上文winday问怎么解析的，我临时编了一个小测试程序，
相信想知道jaxp包如何进行DTD解析的人，看了这个简单例子就明白了。
1：类DTDTest源程序；
2：用于测试的DTD文档：boolk-order.dtd；
3：程序输出结果。
至于jaxp包，可从sun的网站得到。

1: DTDTest.java:
import org.xml.sax.InputSource;
import com.sun.xml.parser.Parser;
import java.io.*;
import org.xml.sax.*;
import com.sun.xml.parser.DtdEventListener;

public class DTDTest implements DtdEventListener{
private Parser parser;
private String dtdSource;
private InputSource buf;
public DTDTest(){
parser=new Parser();
parser.setDTDHandler(this);
File f=new File("file:book-order.dtd");
dtdSource=f.getPath();
byte[] data=("<!DOCTYPE UNKNOWN SYSTEM \""+dtdSource+"\"> <x />").getBytes();

buf=new InputSource(new ByteArrayInputStream(data));
String parent=f.getParent();
if(parent==null)parent=".\\";
buf.setSystemId(parent);
}

public void parse() throws Exception{
parser.parse(buf);
}
public static void main(String args[]){
DTDTest dtdtest=new DTDTest();
try { dtdtest.parse();}
catch (Exception e){}
}

/**The following will implement methods in DtdEventListener interface******/
public void notationDecl(String name,String publicId,String systemId){}
public void unparsedEntityDecl(String name,String publicId,String systemId,String notationName){}

public void startDtd (String rootName) throws SAXException{
System.out.println("Now begin to start to parse DTD File!");
if (rootName!=null) System.out.println("rootName: "+rootName);
System.out.println("");
}

public void externalDtdDecl (String publicId, String systemId) throws SAXException{
System.out.println("Now begin to do externalDtdDecl!");
if (publicId!=null) System.out.println("publicId: "+publicId);
if (systemId!=null) System.out.println("syutemId: "+systemId);
System.out.println("");
}

public void internalDtdDecl (String internalSubset) throws SAXException{
System.out.println("Now show internalDtdDecl!");
if (internalSubset!=null) System.out.println("internalSubset: "+internalSubset);
System.out.println("");
}

public void internalEntityDecl (String name, String value) throws SAXException{
System.out.println("Now show internalEntityDecl!");
if (name!=null) System.out.println("name: "+name);
if (value!=null) System.out.println("value: "+value);
System.out.println("");
}
public void externalEntityDecl (String name,String publicId, String systemId)
throws SAXException{
System.out.println("Now show externalEntityDecl!");
if (name!=null) System.out.println("name: "+name);
if (publicId!=null) System.out.println("publicId: "+publicId);
if (systemId!=null) System.out.println("systemId: "+systemId);
System.out.println("");

}
public void elementDecl (String elementName, String contentModel)
throws SAXException{
System.out.println("Now show elementDecl!");
if (elementName!=null) System.out.println("elementName: "+elementName);
if (contentModel!=null) System.out.println("contentModel: "+contentModel);
System.out.println("");

}
public void attributeDecl (String elementName,String attributeName,
String attributeType,String options [],
String defaultValue,boolean isFixed,
boolean isRequired) throws SAXException{
System.out.println("Now show attributeDecl!");
if (elementName!=null) System.out.println("elementName: "+elementName);
if (attributeName!=null) System.out.println("attributeName: "+attributeName);
if (attributeType!=null) System.out.println("attributeType: "+attributeType);
if (defaultValue!=null) System.out.println("defaultValue: "+defaultValue);
if (options!=null)
{
System.out.println("attribute value options: ");
for (int i=0;i<options.length;i++) System.out.println(options[i]);
}
System.out.println("");

}

public void endDtd () throws SAXException{
System.out.println("parse DTDFile is end!");
System.out.println("bye-bye");
}
}

2: book-order.dtd:

<!ELEMENT Order (Customer,Manifest,Receipt)>
<!ATTLIST Order xmlns CDATA #FIXED "">http://www.example.com/myschema.xml">

<!ELEMENT Customer (Name, Cardnum)>
<!ELEMENT Name (#PCDATA)>
<!ELEMENT Cardnum (#PCDATA)>

<!ELEMENT Manifest (Item*)>

<!ELEMENT Item (ID,Title,Quantity,UnitPrice)>
<!ELEMENT ID (#PCDATA)>
<!ELEMENT Title (#PCDATA)>
<!ELEMENT Quantity (#PCDATA)>
<!ELEMENT UnitPrice (#PCDATA)>

<!ELEMENT Receipt (Subtotal,Tax,Total)>
<!ELEMENT Subtotal (#PCDATA)>
<!ELEMENT Tax (#PCDATA)>
<!ELEMENT Total (#PCDATA)>

3: 程序输出结果：
Now begin to start to parse DTD File! rootName: UNKNOWN Now begin to
do externalDtdDecl! syutemId: file:book-order.dtd Now show elementDecl!
elementName: Order contentModel: (Customer,Manifest,Receipt) Now show
attributeDecl!
elementName: Order attributeName: xmlns attributeType: CDATA
defaultValue: http://www.example.com/myschema.xml Now show elementDecl!
elementName: Customer contentModel: (Name,Cardnum) Now show elementDecl!
elementName: Name
contentModel: (#PCDATA) Now show elementDecl! elementName: Cardnum
contentModel: (#PCDATA) Now show elementDecl! elementName: Manifest
contentModel: (Item*) Now show elementDecl! elementName: Item
contentModel: (ID,Title,Quantity,UnitPrice) Now show elementDecl!
elementName: ID contentModel: (#PCDATA) Now show elementDecl!
elementName: Title contentModel: (#PCDATA) Now show elementDecl!
elementName: Quantity contentModel: (#PCDATA) Now show elementDecl!
elementName: UnitPrice contentModel: (#PCDATA) Now show elementDecl!
elementName: Receipt contentModel: (Subtotal,Tax,Total) Now show
elementDecl! elementName:
Subtotal contentModel: (#PCDATA) Now show elementDecl!
elementName: Tax contentModel: (#PCDATA) Now show elementDecl!
elementName: Total contentModel: (#PCDATA)
parse DTDFile is end!
bye-bye
Process Exit...

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.136.36]


Re: jaxp解析DTD的例子。

 发信人: yangxuu (据说江西出美女), 信区: XML
标 题: Re: jaxp解析DTD的例子。
发信站: BBS 水木清华站 (Wed May 3 12:32:22 2000)

【 在 winday (贪玩的知了~~反省中) 的大作中提到: 】
∶ 太搞了，拿我的程序来教我 ：）
呵呵，确实原来在教研组看过你的程序，但这个程序可是我在看到
你的文章后，15分钟内编出的，不存在剽窃一说吧。另外编这个程序
旨在把这个共享出来，或许别的网友在需要解析DTD的时候能用得上。

∶ 我就是不想用ByteArrayInputStream，因为这样做其实还是在
∶ 解析XML，DTD只是“顺便”被解析了。
∶ 如果有什么接口能够直接以DTD为参数就好了。
你是想直接得到DTD的结构树吧？呵呵，是不是太懒了？
jaxp都把一个个零件给你卸下来了，组装一下有什么难的。

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.136.36]


Re: jaxp解析DTD的例子。

 发信人: lanyjie (收复台湾), 信区: XML
标 题: Re: jaxp解析DTD的例子。
发信站: BBS 水木清华站 (Thu May 4 12:40:18 2000)

【 在 yangxuu (据说江西出美女) 的大作中提到: 】
∶ 呵呵，确实原来在教研组看过你的程序，但这个程序可是我在看到
∶ 你的文章后，15分钟内编出的，不存在剽窃一说吧。另外编这个程序
^^^^^^^^!!!!!!!!没有BUG吗，牛死了，呵呵

∶ 旨在把这个共享出来，或许别的网友在需要解析DTD的时候能用得上。
∶ 你是想直接得到DTD的结构树吧？呵呵，是不是太懒了？
∶ jaxp都把一个个零件给你卸下来了，组装一下有什么难的。

--
._ _
)c .r _=--=' .%' z _=_z
d'.F__, -b--zc _~ )_ `_]'P|,
Z.P)~]' r""r _Zy----' `'`CZ`b`'
]L4'`uP .C~= `" ._, .F z--'
)~'P _-z _~Cd~ ]~~'Z' .F /-`]P

※ 修改:·lanyjie 於 May 4 12:41:57 修改本文·[FROM: 162.105.40.80]
※ 来源:·BBS 水木清华站 smth.org·[FROM: 162.105.40.80]


XML中国论坛开通，欢迎访问！www.xml.net.cn (转载)

 发信人: sleep (守护者), 信区: XML
标 题: XML中国论坛开通，欢迎访问！www.xml.net.cn (转载)
发信站: BBS 水木清华站 (Tue May 9 12:24:42 2000)

【 以下文字转载自 ITExpress 讨论区 】
【 原文由 sleep 所发表 】
焦点时空

就某一主题进行多角度、全方位、深层次的讨论，在这里您可以集中读到对于某一专题，本网站各个栏目的相关文章。每期焦点的推出时间间隔不超过两个星期。关注焦点，可以更深入地了解和掌握XML技术。

最新动态

所谓"网络摩尔定律"，无非是想说明网络发展和变化的速度有多快。掌握最新的技术发展动态，对从事网络工作的人来说自然更为重要，我们有XML的新消息一定会及时发布，网友您如果有什么新消息也别忘了告诉我们。

XML问答

什么是XML？XML可以应用在哪些领域？哪些技术与XML相关？如果您想知道上述问题的答案，请进入"XML问答"。如果"XML问答"回答得不能令您满意，您还可以到"初学进阶"、"开发指南"中找找答案。如果您的问题还得不到解答，可以把您的问题贴到我们的"XML沙龙"中，让我们与其他网友
一起探讨。

初学进阶

初学者的乐园，在这里您可以从零开始，循序渐进、轻轻松松地步入XML的殿堂。在这个栏目中，分十个章节向您介绍XML。第一章的题目是："山重水复疑无路，柳暗花明又一村--XML的诞生"；第二章的题目是："没有规矩，不成方圆--XML语法"...。听起来是不是很有意思？让我们一起来
初学进阶，拾级而上，不断求索，加油！

再插一句，本栏目的各章节，将采用边写边发表的方式来完成，欢迎网友也参加到我们的写作中来。

技术专题

分专题深入探讨XML各项技术，从原理性介绍，到实用技术研究，到发展前景及展望，从不同角度、不同层面详细论述XML及相关技术。专业人士，敬请关注技术专题。

本栏目一共设立了七个专题：信息表现、信息交换、信息存储对应的是XML网络应用的三个层面。针对信息表现，XML已经有了不俗的表现，SVG、XHTML、SMIL这些标准的制定，为在互联网上信息的表现，开创了一个广阔的讨论、研究和发展的空间。就信息交换而言，使用XML制定标准、开
发相应的应用程序、提出完整的解决方案，这当中有多少话题可讲？讨论XML在信息存储中的应用，当然要提到数据库，把XML与数据库结合在一起感觉真好。电子商务、网络出版、移动通讯是XML技术应用的三个主要领域，讨论XML当然要讨论这三个话题。对于在中文环境下使用XML技术存
在的特殊问题将在中文处理栏目中进行讨论。

信息表现
信息交换
信息存储
电子商务
网络出版
移动通讯
中文处理

开发指南

面向使用XML技术进行系统及软件开发的程序设计人员，提供XSLT、DOM、SAX等方面的开发技术支持，是切磋、交流、探讨XML开发技术的园地，愿成为所有软件开发者的朋友。下围棋有"手筋"，用软件有"秘笈"，开发XML程序也少不了诀窍，本栏目一方面可以把我们的开发心得与网友交流
，另一方面也为网友展现自己的开发诀窍提供了一片天地，本着"互联网精神"，不要太小气哟。

DOM与SAX
XSL
其它

XML实验室

看了那么多的介绍文章，是否真正掌握了XML？百看不如一做，XML互动实验室，给您提供了难得的机会。虚拟的实验室，确有实实在在的体验。在网上做程序开发实验是不是挺新鲜？那就来试一试。在网上做实验，如果您有什么高招，也欢迎您推荐给我们，让大家共享。

软件园地

推介XML软件，提供数十个XML软件的产品介绍及下载信息。与XML相关的软件自成一体，丰富多彩，提供源码、免费使用是这些软件的共同特点。本栏目所能提供的也许仅是冰山一角，您如果有新发现...，欢迎您把信息提供给我们。

标准集萃

荟萃世界范围内各公司、企业、组织制定的基于XML的各类标准，提供查询、阅读、下载功能。为您提供最新、最全的标准信息。XML对互联网技术的最大贡献，莫过于提供了制定Web世界信息交换标准的工具。有了XML，制定信息交换标准不再是少数人的特权。从理论上讲，在制定标准这件
比较敏感的事情上，大家都站在比较平等的起跑线上，成功与否就要看各人的努力了。标准太重要了，本栏目的内容将会越来越丰富，这是可以预见的。

XML沙龙

本栏目就是本网站的BBS，之所以叫作"XML沙龙"，无非是提醒网友们，当您想和别人讨论XML相关话题时，别忘了我们。既然是"沙龙"，当然是喝茶聊天的高雅去处，讨论XML的您，当然会选择这样的去处。

资源链接

本栏目是提供热站导航的。与XML相关的站点异彩纷呈，我们根据我们的理解和偏好将这些站点分成六类：XML技术、电子商务、移动通信、XML/XSL学习、eBook、SVG。通过这个栏目，除了可以让您以它作为门户，迅速了解到许多相关网站外，是不是还能让您对网站的"网"字有了另外一层
含义的理解？

站点地图

给您提供一张了解本网站内容结构的关系图，对于您尽快地了解本网站和快速查询到您关心的内容会有帮助。

投资合作

作为一个技术网站，离不开业界企业的支持。在本栏目中，我们将荣幸地向大家介绍我们的赞助企业和合作伙伴。如果您有兴趣以企业的身份与我们合作，请打开本栏目。

建议与投稿

您如果有消息想告诉我们，有文章想在我们网站上发表，有意见建议要向我们提，这里将提供与我们交流的联系方式。

关于XML中国论坛

如果您想了解我们的简单情况、我们的目标、我们的技术背景、我们的管理运作模式、网站的建设者都是谁，"关于XML中国论坛"会告诉您。

会员注册

如果您还不是XML中国论坛的会员，那就赶快注册吧。成为会员之后您将定期收到网站的更新快报，掌握网站的最新动态。会员还将有权利在XML沙龙发表高见，并收到会员联谊会的邀请函。

XML中国论坛欢迎您的加入！

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 162.105.183.35]


Should I use SAX or DOM?

 发信人: flier (小海 //爱喝可乐^_^), 信区: XML
标 题: Should I use SAX or DOM?
发信站: BBS 水木清华站 (Wed May 10 12:30:55 2000)

pdf
discuss
download
home
Should I use SAX or DOM?
Author Name : Nazmul Idris
Created On : May 22, 1999
Modified On : May 23, 1999 5:57 pm
Table of contents
----------------------------------------------------------------------------
----
Why they were both built
What is DOM?
What is SAX?
When to use DOM
When to use SAX
Conclusion
Why they were both built
----------------------------------------------------------------------------
----
SAX (Simple API for XML) and DOM (Document Object Model) were both designed
to allow programmers to access their information without having to write a p
arser in their programming language of choice. By keeping the information in
XML 1.0 format, and by using either SAX or DOM APIs your program is free to
use whatever parser it wishes. This can happen because parser writers must
implement the SAX and DOM APIs using their favorite programming language. SA
X and DOM APIs are both available for multiple languages (Java, C++, Perl, P
ython, etc.).
So both SAX and DOM were created to serve the same purpose, which is giving
you access to the information stored in XML documents using any programming
language (and a parser for that language). However, both of them take very d
ifferent approaches to giving you access to your information.
What is DOM?
----------------------------------------------------------------------------
----
DOM gives you access to the information stored in your XML document as a hie
rarchical object model. DOM creates a tree of nodes (based on the structure
and information in your XML document) and you can access your information by
interacting with this tree of nodes.The textual information in your XML doc
ument gets turned into a bunch of tree nodes. Figure 1 illustrates this.
Regardless of the kind of information in your XML document (whether it is ta
bular data, or a list of items, or just a document), DOM creates a tree of n
odes when you create a Document object given the XML document. Thus DOM forc
es you to use a tree model (just like a Swing TreeModel) to access the infor
mation in your XML document. This works out really well because XML is hiera
rchical in nature. This is why DOM can put all your information in a tree (e
ven if the information is actually tabular or a simple list).
Figure 1 is overly simplistic, because in DOM, each element node actually co
ntains a list of other nodes as its children. These children nodes might con
tain text values or they might be other element nodes. At first glance, it m
ight seem unnecessary to access the value of an element node (e.g.: in "<nam
e> Nazmul </name>", Nazmul is the value) by looking through a list of childr
en nodes inside of it. If each element only had one value then this would tr
uly be unnecessary. However, elements may contain text data and other elemen
ts; this is why you have to do extra work in DOM just to get the value of an
element node. Usually when pure data is contained in your XML document, it
might be appropriate to "lump" all your data in one String and have DOM retu
rn that String as the value of a given element node. This does not work so w
ell if the data stored in your XML document is a document (like a Word or Fr
amemaker document). In documents, the sequence of elements is very important
. For pure data (like a database table) the sequence of elements does not ma
tter. So DOM preserves the sequence of the elements that it reads from XML d
ocuments, because it treats everything as it if were a document. Hence the n
ame DOCUMENT object model.
If you plan to use DOM as the Java object model for the information stored i
n your XML document then you really don't need to worry about SAX. However,
if you find that DOM is not a good object model to use for the information s
tored in your XML document then you might want to take a look at SAX. It is
very natural to use SAX in cases where you have to create your own CUSTOM ob
ject models. To make matters a little more confusing, you can also create yo
ur object model(s) on top of DOM. OOP is a wonderful thing.
What is SAX?
----------------------------------------------------------------------------
----
SAX chooses to give you access to the information in your XML document, not
as a tree of nodes, but as a sequence of events! You ask, how is this useful
? The answer is that SAX chooses not to create a default Java object model o
n top of your XML document (like DOM does). This makes SAX faster, and also
necessitates the following things:
creation of your own custom object model
creation of a class that listens to SAX events and properly creates your obj
ect model.
Note that these steps are not necessary with DOM, because DOM already create
s an object model for you (which represents your information as a tree of no
des).
In the case of DOM, the parser does almost everything, read the XML document
in, create a Java object model on top of it and then give you a reference t
o this object model (a Document object) so that you can manipulate it. SAX i
s not called the Simple API for XML for nothing, it is really simple. SAX do
esn't expect the parser to do much, all SAX requires is that the parser shou
ld read in the XML document, and fire a bunch of events depending on what ta
gs it encounters in the XML document. You are responsible for interpreting t
hese events by writing an XML document handler class, which is responsible f
or making sense of all the tag events and creating objects in your own objec
t model. So you have to write:
your custom object model to "hold" all the information in your XML document
into
a document handler that listens to SAX events (which are generated by the SA
X parser as its reading your XML document) and makes sense of these events t
o create objects in your custom object model.
SAX can be really fast at runtime if your object model is simple. In this ca
se, it is faster than DOM, because it bypasses the creation of a tree based
object model of your information. On the other hand, you do have to write a
SAX document handler to interpret all the SAX events (which can be a lot of
work).
What kinds of SAX events are fired by the SAX parser? These events are reall
y very simple. SAX will fire an event for every open tag, and every close ta
g. It also fires events for #PCDATA and CDATA sections. You document handler
(which is a listener for these events) has to interpret these events in som
e meaningful way and create your custom object model based on them. Your doc
ument handler will have to interpret these events and the sequence in which
these events are fired is very important. SAX also fires events for processi
ng instructions, DTDs, comments, etc. But the idea is still the same, your h
andler has to interpret these events (and the sequence of the events) and ma
ke sense out of them.
When to use DOM
----------------------------------------------------------------------------
----
If your XML documents contain document data (e.g., Framemaker documents stor
ed in XML format), then DOM is a completely natural fit for your solution. I
f you are creating some sort of document information management system, then
you will probably have to deal with a lot of document data. An example of t
his is the Datachannel RIO product, which can index and organize information
that comes from all kinds of document sources (like Word and Excel files).
In this case, DOM is well suited to allow programs access to information sto
red in these documents.
However, if you are dealing mostly with structured data (the equivalent of s
erialized Java objects in XML) DOM is not the best choice. That is when SAX
might be a better fit.
When to use SAX
----------------------------------------------------------------------------
----
If the information stored in your XML documents is machine readable (and gen
erated) data then SAX is the right API for giving your programs access to th
is information. Machine readable and generated data include things like:
Java object properties stored in XML format
queries that are formulated using some kind of text based query language (SQ
L, XQL, OQL)
result sets that are generated based on queries (this might include data in
relational database tables encoded into XML).
So machine generated data is information that you normally have to create da
ta structures and classes for in Java. A simple example is the address book
which contains information about persons, as shown in Figure 1. This address
book XML file is not like a word processor document, rather it is a documen
t that contains pure data, which has been encoded into text using XML.
When your data is of this kind, you have to create your own data structures
and classes (object models) anyway in order to manage, manipulate and persis
t this data. SAX allows you to quickly create a handler class which can crea
te instances of your object models based on the data stored in your XML docu
ments. An example is a SAX document handler that reads an XML document that
contains my address book and creates an AddressBook class that can be used t
o access this information. The first SAX tutorial shows you how to do this.
The address book XML document contains person elements, which contain name a
nd email elements. My AddressBook object model contains the following classe
s:
AddressBook class, which is a container for Person objects
Person class, which is a container for name and email String objects.
So my "SAX address book document handler" is responsible for turning person
elements into Person objects, and then storing them all in an AddressBook ob
ject. This document handler turns the name and email elements into String ob
jects.
Conclusion
----------------------------------------------------------------------------
----
The SAX document handler you write does element to object mapping. If your i
nformation is structured in a way that makes it easy to create this mapping
you should use the SAX API. On the other hand, if your data is much better r
epresented as a tree then you should use DOM.
Copyright The Bean Factory, LLC. 1998-1999. All Rights Reserved
pdf
discuss
download
home

--
. 生命的意义在于 /\ ____\ /\_ \ /\_\ .
. 工作、 \ \ \___/_\/\ \ \/_/__ __ _ _★ .
. 希望、 \ \ ____\\ \ \ /\ \ /'__`\ /\`'_\ .
. 爱你的人、 \ \ \___/ \ \ \___\ \ \/\ __//\ \ \/ .
. 和你爱的人 \ \___\ \ \_____\ \__\ \____\ \ \_\ .
. …… \/___/ \/_____/\/__/\/____/ \/_/ @126.com .

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.114.32.16]


An Introduction to C++ XML programming

 发信人: flier (小海 //爱喝可乐^_^), 信区: XML
标 题: An Introduction to C++ XML programming
发信站: BBS 水木清华站 (Wed May 10 12:33:59 2000)

An Introduction to C++ XML programming
by Fabio Arciniegas A.
Nov. 17, 1999
Contents
?Part 1: XML Programming with C++
?Part 2: The SAX-based approach
?Part 3: The Object Model-based approach
?Part 4: Uses and Tradeoffs
C++ is a popular programming language for which many XML related efforts alr
eady exist. The aim of this article is to introduce and analyze the differen
t options available when using C++ for your XML applications.
We will examine two things: the main APIs and strategies for parsing and man
ipulating XML in your C++ application, and the practical uses and tradeoffs
of approaches to XML parsing.
To get the most from this article, a basic understanding of the C++ language
is required. Static model diagrams are illustrated in UML: the diagrams use
d show mainly inheritance and simple relationships and may not require previ
ous UML knowledge. Nevertheless, we provide a basic UML guide containing all
you need to know in order to understand the examples.
Different approaches to XML processing
Several toolkits and libraries have been produced for C++ based manipulation
. Those toolkits mainly fall into two categories: event-driven processors an
d object model construction processors. We will examine both.
Event-driven approaches
In an event-driven approach for processing XML data, a parser reads the data
and notifies specialized handlers that undertake the desired actions. Note
that here the term event-driven means a process that calls specific handlers
when the contents of the XML document are encountered. For instance, callin
g endDocument() when the end of the XML document is found.
The various XML parser implementations differ in their application program i
nterfaces. For example, one parser could notify a handler of the start of an
element, passing it only the name of the element and then requiring another
call for the handling of attributes. Another parser could notify a handler
when it finds the same start-element tag and pass it not only the name of th
e element, but a list of the attributes and values of that element.
Another important difference between XML parsers is in which representation
they use to pass data from the parser to the application: e.g. one parser co
uld use an STL list of strings, while another could use a specially made cla
ss to hold attributes and values. The methods for handling a start-element t
ag with each approach would be very different and would certainly affect how
you program them.
// Example: different ways of communicating data to handlers
// STL based attribute passing
// with an STL based event-driven handler a startElementHandler
// method might look like this
virtual void HypotheticalHandler::startElementHandler
(const String name,const list<String> attributes) = 0;
// Special Attribute List Class provided
// With some event-driven APIs a special AttributeList object
// containing attribute information
// is used. This is the case with IBM's xml4c2 parser.
virtual void DocumentHandler::startElement(const XMLCh* const name,
AttributeList& attrs) = 0;
As you can see, the way processors notify applications about elements, attri
butes, character data, processing instructions and entities is parser-specif
ic and can greatly influence the programming style behind the XML-related mo
dules of your system.
Efforts to create a standard event-driven XML processing API have produced S
AX (the Simple API for XML). A standard interface for SAX in C++ has not yet
been developed. Nevertheless, the importance and growing use of SAX in C++
XML based applications is unquestionable, and makes it an important topic in
our discussion.
In the next two sections, we examine the ideas behind both non-SAX and SAX-b
ased event-driven approaches to parsing. For our examples, we will be using
expatpp (C++ wrapper of James Clark's expat parser) and xml4c2 (IBM's C++ XM
L parser), respectively. IBM's parser will be re-released at the end of this
year as "Xerces," part of the new Apache XML Project.
Non SAX event-driven approaches
Expat is a C parser developed and maintained by James Clark. It is event-dri
ven, in the sense that it calls handlers as parts of the document are encoun
tered by the parser. User-defined functions can be registered as handlers.
Here is a sample of a typical expat use in C:
/*
This is a simple demonstration of how to use expat. This program
reads an XML document from standard input and writes a line
with the name of each element to standard output, indenting
child elements by one tab stop more than their parent element.
[Taken from the standard expat distribution] */
void startElement
(void *userData, const char *name, const char **atts)
{
int i;
int *depthPtr = userData;
for (i = 0; i < *depthPtr; i++)
putchar('\t');
puts("I found the element:");
puts(name);
*depthPtr += 1;
}
void endElement(void *userData, const char *name)
{
int *depthPtr = userData;
*depthPtr -= 1;
}
int main()
{
char buf[BUFSIZ];
XML_Parser parser = XML_ParserCreate(NULL);
int done;
int depth = 0;
XML_SetUserData(parser, &depth);
XML_SetElementHandler(parser, startElement, endElement);
do {
size_t len = fread(buf, 1, sizeof(buf), stdin);
done = len < sizeof(buf);
if (!XML_Parse(parser, buf, len, done)) {
fprintf(stderr,
"%s at line %d\n",
XML_ErrorString(XML_GetErrorCode(parser)),
XML_GetCurrentLineNumber(parser));
return 1;
}
} while (!done);
XML_ParserFree(parser);
return 0;
}
This program simply shows the string "I found the element" followed by the e
lement name for each element found. Note the existence of a void *userData p
arameter that expat uses to give you the possibility of managing your inform
ation across calls. In the previous example, the userData is employed to kee
p track of the indentation level that should be used when printing elements
and attributes to the standard output.
Expat has many advantages: it is very fast and very portable. It is also und
er the GPL (the GNU General Public License), which means you can freely use
and distribute it. But it is just plain C, so some strategy must be chosen i
n order to integrate it with your OO C++project.
One strategy would be simply to create global functions to register with exp
at. Those functions can receive a pointer to the data you want to modify whi
le reading the file (e.g., a Count object that will store the number of char
acters in the file), and then all you have to do is register them with expat
. This is a straightforward approach, but it brings several undesirable cons
equences into the picture:
It decreases the modularity of your program.
It makes your program less cohesive (i.e., related methods are not bundled t
ogether).
It may ruin your OO design on a fundamental level (e.g., XML serialization o
f your objects).
All of the above will probably result in a less-maintainable program with an
error prone design. A better option would be to wrap expat using a C++ clas
s that will encapsulate the C details and provide you with a clean list of m
ethods that you can override to suit your particular needs. This is how wrap
pers like expatpp work.
Expatpp is a C++ wrapper for expat. It was developed by Andy Dent with this
basic idea: the constructor of expatpp creates an instance of an expat parse
r, and registers dummy functions as handlers that call the corresponding exp
atpp override-able methods.
Some code will make things clearer:
// In its class definition, expatpp declares the callbacks
// that it will register with the parser:
static void startElementCallback
(void *userData, const XML_Char*
name, const XML_Char** atts);
static void endElementCallback
(void *userData, const XML_Char* name);
static void charDataCallback(void *userData, const XML_Char* s,
int len);
//... and so on for the other handlers like
// processingInstructionCallback
// At the constructor, expatpp creates an expat parser and registers
// the callbacks
expatpp::expatpp()
{
mParser = XML_ParserCreate(0);
XML_SetUserData(mParser, this); //Note that the user data is
//the object itself
XML_SetElementHandler(mParser, startElementCallback,
endElementCallback);
XML_SetCharacterDataHandler(mParser, charDataCallback);
//... and so on with the other callbacks
}
// Now, for each callback there is a partner override-able member
// like
virtual void startElement(const XML_Char* name, const
XML_Char** atts){
// Note that the default behavior is to do nothing. In your
// derived class you can override this and for example print
// the name of the element like
// count << name;
}
// All a callback does is to call its partner method
inline void
expatpp::startElementCallback
(void *userData, const XML_Char* name,
const XML_Char** atts)
{
((expatpp*)userData)->startElement(name, atts);
}
// In runtime, when the parser begins calling the callback, the
// appropriate method overridden in your derived class will be
// called. For the complete code look at expatpp.[h|c]
As you can see, the userData is used to maintain a pointer to your expatpp o
bject. When the object is constructed, the callbacks are registered as handl
ers to expat. When parsing events occur, the handlers call the appropriate m
ethods in the class. The default behavior of these methods is to do nothing,
but you can override them for your own purposes.
expatpp interface
The expatpp interface defines wrappers for all the methods in expat and incl
udes the following members:
virtual void startElement
(const XML_Char* name, const XML_Char** atts);
virtual void endElement(const XML_Char* name);
virtual void charData(const XML_Char *s, int len);
virtual void processingInstruction(const XML_Char* target, const
XML_Char* data);
virtual void defaultHandler(const XML_Char *s, int len);
virtual void unparsedEntityDecl(const XML_Char *entityName, const
XML_Char* base, const XML_Char* systemId,
const XML_Char* publicId,
const XML_Char* notationName);
virtual void notationDecl(const XML_Char* notationName, const
XML_Char* base, const XML_Char* systemId,
const XML_Char* publicId);
// XML interfaces
int XMLPARSEAPI XML_Parse
(const char *s, int len, int isFinal);
XML_Error XMLPARSEAPI XML_GetErrorCode();
int XMLPARSEAPI XML_GetCurrentLineNumber();
This interface defines a handler base for expatpp (look at the source code f
or details). Along with the example included below, it should be enough to g
et you started with expatpp in an XML project.
expatpp sample
The following example uses expatpp to create a tree view of the elements of
the document. Unlike the rest of the examples in this article, this particul
ar program was constructed using Inprise C++ builder, and depends on it.
// We declare a handler that will be capable of
// constructing the tree. In order to do so it will override
// the startElement and endElement methods (the others can
// be ignored)
// [from myParser.h]
class myParser : public dexpatpp
{
private:
TTreeView *mTreeView;
// The tree view in which the elements will be shown
TTreeNode *lastNode;
public:
inline myParser(TTreeView *treeToUse);
inline void startElement
(const XML_Char* name, const XML_Char** atts);
inline void endElement(const XML_Char* name);
};
// Now, for the implementation, all we have to do is
inline
void myParser::startElement
(const XML_Char* name, const XML_Char** atts)
{
lastNode = mTreeView->Items->AddChild(lastNode, name);
}
// and
inline
void myParser::endElement(const XML_Char* name)
{
lastNode = lastNode->Parent;
}
For the complete, and more verbosely documented, code, download this file: e
xpatppExample.zip. When given an XML file, the application will produce some
thing like this:
The same approach can be, and has been, used for wrapping other C parsers fo
r use in C++ code. These other parsers include, most notably, the Gnome Proj
ect libxml parser by Daniel Veillard.
The next section will cover the Simple API for XML—SAX.
Next: The SAX-based approach

--
. 生命的意义在于 /\ ____\ /\_ \ /\_\ .
. 工作、 \ \ \___/_\/\ \ \/_/__ __ _ _★ .
. 希望、 \ \ ____\\ \ \ /\ \ /'__`\ /\`'_\ .
. 爱你的人、 \ \ \___/ \ \ \___\ \ \/\ __//\ \ \/ .
. 和你爱的人 \ \___\ \ \_____\ \__\ \____\ \ \_\ .
. …… \/___/ \/_____/\/__/\/____/ \/_/ @126.com .

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.114.32.16]


Re: 哪里有比较详细的关于SAX的资料？

 发信人: marc (Parser), 信区: XML
标 题: Re: 哪里有比较详细的关于SAX的资料？
发信站: BBS 水木清华站 (Wed May 10 12:33:59 2000)

/www.megginson.com/sax
【 在 flier (小海 //爱喝可乐^_^) 的大作中提到: 】
∶ 自问自答好了，灌几篇文章，呵呵

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 162.105.170.65]


Object model approaches

 发信人: flier (小海 //爱喝可乐^_^), 信区: XML
标 题: Object model approaches
发信站: BBS 水木清华站 (Wed May 10 12:36:42 2000)

Object model approaches
Contents
?Part 1: XML Programming with C++
?Part 2: The SAX-based approach
?Part 3: The Object Model-based approach
?Part 4: Uses and Tradeoffs
The previous section presented the event-driven approach to handling XML doc
uments. There is another option for the handling of XML documents: the "obje
ct model" approach. This approach is also known as the "tree based approach,
" and it is based on the idea of parsing the whole document and constructing
an object representation of it in memory.
There is a standard language independent specification, written in OMG's IDL
, for the constructed object model. It is called the Document Object Model,
or DOM.
DOM
The next section presents the basic ideas behind the DOM, and the typical st
eps involved when writing a XML DOM-based module in your C++ application.
Expressing a document as a structure and making it available to the applicat
ion is not new: all major browsers have done so for years in their own propr
ietary way. The important idea behind the XML DOM is that it standardizes th
e model to use when representing any XML document in memory. DOM-based C++ p
arsers produce a DOM representation of the document instead of informing the
application when they encounter elements, attributes etc.
The Document Object Model is a language- and platform-independent interface
that allows programs and scripts to dynamically access and update the conten
t structure and style of documents. There is a core set of interfaces that e
very DOM 1.0-compliant implementation must provide. Here we concentrate on t
hose core interfaces. Currently, anything in a document can be accessed usin
g the DOM (1.0), except for the internal and external DTD subsets, for which
no API currently exists.
The DOM, as the name implies, is an object model as opposed to a data model
(see a complete UML class diagram here).
The object-oriented interfaces define the semantics of a structural model, i
ndependently of the implementation chosen for it. That means that DOM parser
implementations are free to choose whatever internal representation they li
ke, as long as they comply with the DOM interfaces. The next section will sh
ow the basic DOM core interfaces; then we will look at the steps you will us
e with the DOM approach.
DOM Interfaces
The DOM level 1 core defines a basic set of interfaces that allow the manipu
lation of XML documents. It provides methods for the access and population o
f the document. These methods are encapsulated in two sets of interfaces: th
e fundamental core interfaces and the extended interfaces.
Here is a basic presentation of the main interfaces. For a complete descript
ion and all the methods, you will need to download a DOM library. Again, xml
4c2 is a good choice because of its excellent documentation.
Fundamental Interfaces
Interface Description
Node This interface is the primary datatype for the entire Document Object M
odel. It represents a single node in the document tree. This is the base int
erface for everything in the model—therefore all objects implementing the N
ode interface expose the methods defined by it. One should be careful about
this because some derivatives of node, like the text node, expose some Node
methods they don't really support like "get children," which results in an e
xception since a text node cannot have children.
Document Class to refer to XML Document nodes in the DOM. Conceptually, a DO
M document node is the root of the document tree, and provides the primary a
ccess to the document's data.
DocumentFragment DocumentFragment is a "lightweight" Document object. This o
bject encapsulates a portion of the document, which is very useful in applic
ations that need to rearrange or modify portions of the tree, for example an
editor doing a cut/paste. Note that the fragment contained is not (necessar
ily or even often) a valid XML document.
Element The majority of objects, apart from text, that one may find in the D
OM Tree are DOM Element nodes. They represent elements in the document objec
t model, and since they can have other Element nodes as children, their stru
cture reflects the arrangement of the original XML document.
Other fundamental interfaces The rest of the fundamental interfaces are: DOM
Implementation, NodeList, NamedNodeMap, CharacterData, DOMException (which i
n IDL is not an interface but an exception), Attr, Text, Comment. Again, for
more details on these, you are encouraged to download the complete document
ation included in toolkits like xml4c2.
Extended Interfaces
The extended interfaces also form part of the core DOM. These interfaces are
∶
CDATASection
DocumentType
EntityReference
ProcessingInstruction
Important details about DOM level 1
In order to get a complete view of the DOM, you should read the W3C recommen
dation. Nevertheless, here are some important points to keep in mind:
Limitations of Level 1
DOM Level 1 is strictly limited to those methods needed to represent and man
ipulate the document structure. At the time of the writing of this article D
OM level 2 was not yet endorsed as a W3C Recommendation, and no C++ implemen
tation was available, so for the sake of usability, I decided to focus on DO
M level 1. Future DOM levels may provide:
Thread safety
Events
Control for rendering via stylesheets
Access control
Persistence
Saving the DOM representation is left to the implementation
Repercussions of changes to nodes
Changes to a Node are reflected in any NodeList or NamedNodeMap that refer t
o them. (This translates to the use of references or pointers in your C++ im
plementation.)
Memory management
The DOM API is memory-management-philosophy independent (i.e., the recommend
ation does not specify any memory management policy). This is the responsibi
lity of the implementation.
DOMString type
DOM defines the DOMString type in IDL as
typedef sequence<unsigned short> DOMString;
That is, a sequence of 16 bit characters using the UTF-16 encoding.
Case sensitivity
Even though some HTML processors may expect normalization to uppercase, the
DOM bases its string matching in a purely case sensitive way. Nevertheless,
it is admitted by the recommendation that some normalizations may occur befo
re DOM construction.
The basic structure of an XML DOM-based module
In contrast to the role of the application during event-based parsing, the f
ocus of the activity in a DOM-based application is post-parsing. The basic l
ayout of an XML module using DOM might look something like this:
Here the main XML application class is no longer a handler but a manipulator
of the DOM representation produced. Note that this is an important change o
f focus: your application's processing is no longer done at parsing time but
rather in an extra module that will manipulate nodes.
The basic steps for the creation of your XML module would be:
Create and register handlers for errors and other implementation-dependent a
ctivities.
Create a DOM manipulator that will have the responsibility of (1) issuing pa
rsing requests to the parser (2) manipulating the results of such requests.
Include the necessary manipulator/rest of the application interaction.
In order to complete the picture and give you a real idea of how all this fi
ts together, the best thing to do is a complete walk-through of an example D
OM-based implementation. Again, we consider an XML "pretty printer" as an ex
ample. A full example can be found in the DOMPrint sample distributed with I
BM's xml4c2.
Note that for bigger projects, the correct encapsulation of the DOM processi
ng activities in the above scheme is meant to keep your design clean and you
r program manageable.
The translation of the DOMPrint example to the DOM manipulator/DOM Parser/Re
st of the application scheme is left as a simple exercise for the reader. In
this case, all it requires is to take the methods of the original and encap
sulate them in a class. So the main function can be something like:
#include "DOMBeautifier.h"
static char* xmlFile = 0; // The name of the file to parse
// --------------------------------------------------------------
// Main - very simplified version -- for guidance purposes only.
// Note that the main no longer takes responsibility of creating
// the parser or printing the file. Try encapsulating that
// in the DOMBeautifier class yourself, based on the original
// DOM_Print (it's very easy an will give you a better feeling
// of the library)
// --------------------------------------------------------------
int main(int argC, char* argV[])
{
// Check command line and extract arguments.
if (argC != 2)
return 1;
// The first parameter must be the file name
xmlFile = argV[1];
// Now initialize the XML4C2 platform
try {
XMLPlatformUtils::Initialize();
}
catch(const XMLException& toCatch) {
return 1;
}
DomBeautifier *myBeautifier = new DomBeautifier();
if(myBeautifier->Beautify(xmlFile) == ERRORS){
return 2;
}
// Cleanup
delete myBeautifier;
return 0;
}
Now that we have seen both the event-based and DOM approaches to C++ XML doc
ument handling, we will examine the different considerations that will help
you decide between each approach.
Next: Uses and Tradeoffs
Prev: The SAX-based approach

--
. 生命的意义在于 /\ ____\ /\_ \ /\_\ .
. 工作、 \ \ \___/_\/\ \ \/_/__ __ _ _★ .
. 希望、 \ \ ____\\ \ \ /\ \ /'__`\ /\`'_\ .
. 爱你的人、 \ \ \___/ \ \ \___\ \ \/\ __//\ \ \/ .
. 和你爱的人 \ \___\ \ \_____\ \__\ \____\ \ \_\ .
. …… \/___/ \/_____/\/__/\/____/ \/_/ @126.com .

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.114.32.16]


Uses and Tradeoffs

 发信人: flier (小海 //爱喝可乐^_^), 信区: XML
标 题: Uses and Tradeoffs
发信站: BBS 水木清华站 (Wed May 10 12:39:05 2000)

Uses and Tradeoffs
Contents
?Part 1: XML Programming with C++
?Part 2: The SAX-based approach
?Part 3: The Object Model-based approach
?Part 4: Uses and Tradeoffs
In this section, uses of and tradeoffs between the event-based and object mo
del approaches will be discussed. In particular, three topics will be examin
ed: having XML-aware objects that can be used as handlers, using factories t
o create/modify objects, and having a document-centered application. The sec
tion concludes with a list of C++ parsers and their suitability for the purp
oses outlined.
Note that the designs outlined here, while useful and used in real applicati
ons, are not necessarily the best ones for your project. They are provided o
nly as a guide.
XML-aware objects used as handlers
The first form of XML modules your application might use are simple XML awar
e classes designed to be registered in an event-driven parser. These classes
are characterized not only by their handler nature, but by the self-contain
ment of their activities. Their use doesn't usually compromise other classes
, and the parsing of an XML document will often result in a change in their
attributes or output operations.
These classes will take the following simple form:
Note that the handler base your handler inherits from is not necessarily Han
dlerBase from SAX; we use the term because every C++ event-driven parser wil
l provide such base classes with a default behavior (HandlerBase in the case
of xml4c2 or SAXParser, and expatpp itself in the case of expatpp).
Numerous examples of this approach are found with every parser, and they con
stitute the simplest, though very useful, form of XML use. Among the typical
examples are the counting of elements in a document and the printing of eac
h document element as it is found. Our SAX pretty printing example is good e
xample of this approach.
These example activities could also be performed by traversing the object re
presentation of the document, but they are typically done by the event-drive
n method because it does not require the memory expenditure that creating th
e object representation would.
There are lazy ways of creating the DOM in order to minimize the memory cons
umption, but even so in general terms, the event-driven approach must be use
d in these traversal cases for the sake of simplicity and good use of memory
resources.
Factories for the creation or modification of other objects
The next typical scenario is the definition of factory classes for the manip
ulation of other objects according to the information in the XML document. T
hese classes will usually take the following form:
The first of such manipulations that comes to mind is serialization. The pro
cess of making an object persistent using XML is a very important issue that
can be handled this way. The responsibility of saving the object as XML cou
ld also be in the object itself, but this approach—abstracting the responsi
bility for serialization—is often preferred.
Many other uses for this approach can be found. A simple example would be th
e manipulation of a collection of objects in accordance with XML-encoded ins
tructions sent by a remote object, for example, a collection like:
map<name, long, less<string>> directory;
// A simple STL directory using an associative container map
// That will hold names(the keys) and phone numbers(the longs
// that serve as values for that keys)
// the third parameter less<string> is a function object
// used to compare two keys.
could be manipulated by a remote object by sending messages like
<changeNumber name="Borges">5716124469</changeNumber>
to our factory that would translate them to:
directory["Borges"] = 5716124469;
Again, as in the simpler handlers described above, the preferred approach fo
r these factories is the event-driven one, since it doesn't involve the cost
of keeping the document in memory.
Of course, there are many special cases that must be considered. Take the ca
se of an object that must answer questions from other objects about a partic
ular document (like "is there any element named H1?"). In this case a tradeo
ff between memory consumption and speed takes place, since both a DOM and an
event-driven approach could be used. The first involves more memory consump
tion but will greatly speed the searches of specific elements in the documen
t. The second will consume no memory representing the document but will requ
ire a O(n) complexity over the XML document on disk for each search. The fin
al decision will have to take into consideration the amount of requests, the
size of the documents, and the amount of available resources.
So far, we have reviewed two mainly event-driven uses. In the next section w
e will explore cases where DOM is a more natural option.
Document-centered applications
The uses of the DOM can be very varied, such as exposing an object model of
the document in a browser so an extension language can be used to manipulate
the document. We will concentrate on a general case: the use of DOM as the
model in a Model-View-Controller scheme.
Using DOM in a Model View Controller (MVC)
Basically, the MVC defines a structure where there is an underlying model, s
everal views that reflect the state of the model, and a controller that rece
ives requests to change the model. It also ensures that these changes are re
ported to the views.
This is the case in many document-centered applications. For example, take a
simple application that reads a document containing a memo like this:
<?xml version="1.0"?>
<header>
<to>Panda</to>
<from>Le roi sanche</from>
</header>
...and shows it to the user allowing it to be edited and written back to a f
ile.
This, like any other application that needs to manipulate an object represen
tation of the document itself as a base model, is perfect for DOM use.
Refinements to the model of constructing the tree and modifying the DOM via
direct calls to the API can be used. Real life view objects can issue comman
d objects that include the document fragment that is the target of the chang
e (instead of changing the DOM directly). Also, several strategies to avoid
loading the whole document at once could be applied.
Nevertheless, the basic idea remains what our simple example tries to show:
whenever you need to manipulate the document directly as your model (instead
of constructed domain-specific objects), DOM constitutes the natural choice
.
Widely used parsers
We finish this section by presenting a list of commonly used C++ parsers and
their basic information. (For performance comparisons, please refer to Benc
hmarking XML Parsers.)
Parser DOM Support SAX Support Platforms supported Validation support Downlo
ad from
libxml YES YES Linux, Win32 (possibly many others) YES ftp://rpmfind.net/pub
/veillard/
expat (C) NO NO Win32, Unix, and practically everywhere a modern C compiler
exists. NO ftp://ftp.jclark.com/pub/xml/expat.zip
expatpp (only the wrapper, without extensions) NO NO Win32, Linux, Mac (and
many untested others) NO ftp://ftp.highway1.com.au/pub/adsoftware/xml/
xml4c2 YES YES IBM platforms: AIX 4.1.4 and higher, Win32 (MSVC 5.0, 6.0 com
pilers), Solaris 2.6, HP-UX B10.2 (aCC and CC), HP-UX B11 (aCC and CC), Linu
x YES http://www.alphaworks.ibm.com/
As you can see, C++ is well suited for XML processing in terms of availabili
ty, size and complexity of code, conformance, and even to a great extent, po
rtability—not to mention performance. There is nothing especially better ab
out using other languages like Java for XML programming.
All languages have strengths and weaknesses that should be taken into consid
eration when choosing the language to use for your project. It may be true t
hat C++ has a steeper learning curve, and perhaps C++ programmers can be a l
ittle harder to find, but those considerations have nothing to do with C++'s
ability to process XML. Great care should be taken when facing marketing hy
pe about supposedly "perfect marriages" between a language and a specific te
chnology. XML is no exception.
Back to part 1: XML Programming with C++
Prev: The Object Model-based approach

--
. 生命的意义在于 /\ ____\ /\_ \ /\_\ .
. 工作、 \ \ \___/_\/\ \ \/_/__ __ _ _★ .
. 希望、 \ \ ____\\ \ \ /\ \ /'__`\ /\`'_\ .
. 爱你的人、 \ \ \___/ \ \ \___\ \ \/\ __//\ \ \/ .
. 和你爱的人 \ \___\ \ \_____\ \__\ \____\ \ \_\ .
. …… \/___/ \/_____/\/__/\/____/ \/_/ @126.com .

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.114.32.16]


SAX event-driven approaches

 发信人: flier (小海 //爱喝可乐^_^), 信区: XML
标 题: SAX event-driven approaches
发信站: BBS 水木清华站 (Wed May 10 12:42:54 2000)

SAX event-driven approaches
Contents
?Part 1: XML Programming with C++
?Part 2: The SAX-based approach
?Part 3: The Object Model-based approach
?Part 4: Uses and Tradeoffs
The Simple API for XML, SAX, is an event-driven API for parsing XML document
s. It defines several handler classes that encapsulate the methods needed fo
r specific tasks when parsing XML documents, such as external entity handlin
g. As with other event-driven parsers, the basic process for the definition
of an XML module in your project may be described by the following steps:
Subclass the required handler base classes. (In the previous section you did
so only from expatpp; now you have more classes available for subclassing,
which we will explore below.)
Override the desired methods.
Register your handler with the parser.
Start parsing.
These steps can be seen in the following example which prints an XML file, k
eeping track of the correct indentation. The interfaces used are explained f
urther below. You can also look at the SAXCount example from IBM's xml4c2 do
cumentation.
// We declare a handler of our own that will be capable of
// remembering the correct indentation for "pretty"
// printing the file. In order to do so we override
// the startElement, characters and endElement handlers.
// Take time to compare this solution to the expatpp solution to
// the same problem (above)
void PrettyPrint::startElement(const XMLCh* const name,
AttributeList& attributes)
{
indent++; // A new element started, it should be indented one
// level further than the current level
int i;
for(i = 0; i < indent; i++)
outStrm << "\t";
outStrm << "<" << name;
unsigned int len = attributes.getLength();
for (unsigned int i = 0; i < len; i++)
{
outStrm << " " << attributes.getName(i)
<< "=\"" << attributes.getValue(i) << "\"";
}
outStrm << ">";
}
void PrettyPrint::endElement(const XMLCh* const name)
{
int i;
for(i = 0; i < indent; i++)
outStrm << "\t";
outStrm << "</" << name << ">";
indent--;
}
void PrettyPrint::characters(const XMLCh* const chars,
const unsigned int length)
{
for (unsigned int index = 0; index < length; index++)
{
switch (chars[index])
{
case chAmpersand :
outStrm << "&";
break;
case chOpenAngle :
outStrm << "<";
break;
case chCloseAngle:
outStrm << ">";
break;
case chDoubleQuote :
outStrm << """;
break;
default:
outStrm << chars[index];
break;
}
}
}
void PrettyPrint::processingInstruction(const XMLCh* const target,
const XMLCh* const data)
{
int i;
for(i = 0; i < indent; i++)
outStrm << "\t";
outStrm << "<?" << target;
if (data)
outStrm << " " << data;
outStrm << "?>\n";
}
Download the full source here: saxExample.zip.
What makes SAX important is not the idea behind the parsing—the essence of
the event-driven approach is the same as with expatpp or any other event-ori
ented parser—but the standardization of the interfaces and classes that are
used to communicate with the application during the parsing process.
These classes and interfaces (abstract classes in C++) are divided thus:
Classes implemented by the parser: Parser, AttributeList, Locator (optional
class used to track the location of an event)
Classes implemented by the application: DocumentHandler (very important—thi
s is the one you will subclass in nearly all applications), ErrorHandler, DT
DHandler, EntityResolver.
Standard SAX classes: InputSource, SAXException, SAXParseException and Handl
erBase. (This might be your starting point in many applications since it inh
erits from all the handlers, providing default behavior for all non-override
n methods.)
SAX was initially developed for Java, but it has been ported to other langua
ges like Python, Perl and C++. In C++, you have several representations and
strategies to choose from when porting the original SAX API. Since there is
no common C++ SAX interface, the different implementations might have some s
mall, and not-so-small, differences.
In this article, we'll stick with IBM's xml4c2 SAX implementation. In order
to write your own XML modules, you will need to inherit from the application
classes of the API and override the methods you want to perform special act
ions.
Here is an overview of the handlers you will inherit from, a more complete d
ocumentation of them can be found with the xml4c2 distribution.
Handler Description
DocumentHandler This is the main interface that SAX applications implement.
It defines methods to let the parser inform the application about basic par
sing events. In order to use it, the application should use a class that imp
lements DocumentHandler and then register an instance with the parser, which
will later feed it with the appropriate events.
ErrorHandler This interface is provided in order to allow the SAX applicatio
n to implement customized error handling. It is registered using the setErro
rHandler method. The parser will then report all errors and warnings through
this interface.
DTDHandler Objects of a class that implement the DTDHandler interface receiv
e information about notations and unparsed entities. They are registered usi
ng the parser's setDTDHandler method.
EntityResolver (less commonly used) If the application needs to intercept an
y external entities before their inclusion, it must make use of a class that
implements this interface registering it via the setEntityResolver method.
Any external entities (including the external DTD subset and external parame
ter entities) will be reported through it.
Note that by making use of the multiple inheritance support of C++, a user-d
efined handler can implement several of those functions (e.g., error handlin
g and document handling).
// ...
class MyHandler : public DocumentHandler, ErrorHandler
// ...
parser = new NonValidatingSAXParser;
MyHandler* handler = new MyHandler();
parser->setDocumentHandler(handler);
parser->setErrorHandler(handler);
The XML part of your application will probably take the following form:
If you are familiar with patterns, you will see this is similar to a simple
Builder Pattern, i.e., we detach the XML responsibility from the client obje
cts and delegate it to a collection of objects (the parser itself and your h
andlers) that will know how to incrementally construct some product. For a c
omplete description of the Builder pattern see the book "Design Patterns" by
Gamma et al. ("The Gang of Four.")
Note that this product can be expressed as another object, a simple return v
alue, or even as some transformation of the attributes of your handler objec
t.
This concludes the SAX review, and can serve as a starting point for your C+
+ XML modules. Please review the documentation of your chosen implementation
for further examples. IBM's xml4c2 is recommended because of its comprehens
ive documentation.
Next: The Object Model-based approach
Prev: XML Programming with C++

--
. 生命的意义在于 /\ ____\ /\_ \ /\_\ .
. 工作、 \ \ \___/_\/\ \ \/_/__ __ _ _★ .
. 希望、 \ \ ____\\ \ \ /\ \ /'__`\ /\`'_\ .
. 爱你的人、 \ \ \___/ \ \ \___\ \ \/\ __//\ \ \/ .
. 和你爱的人 \ \___\ \ \_____\ \__\ \____\ \ \_\ .
. …… \/___/ \/_____/\/__/\/____/ \/_/ @126.com .

※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.114.32.16]


Re: XML是数据库研究者的一次契机

 发信人: cfish (武装到牙齿), 信区: XML
标 题: Re: XML是数据库研究者的一次契机
发信站: BBS 水木清华站 (Sat May 13 11:52:27 2000)

【 在 cloudLo (呵呵) 的大作中提到: 】
∶ 请详细介绍这方面的东西，thanx

自www.xml.net.cn
这个站点有许多关于xml的资料

Microsoft SQL Server数据库的XML支持

作者: 王仲 写作日期:2000-04-06

一、背景
就在XML技术在全球日益盛行的时候，Microsoft于2000年1月宣布其SQL Server对XML提供支持，并且发布了一个预览版本，它意味着Microsoft在其战略决策上将XML技术放在一个何等重要的地位，而这一消息的发布无疑将给广大的XML技术人员和SQL
Server用户带来强劲动力。Microsoft SQL Server的XML支持计划，是其下一步庞大计划的一部分，即旨在产生一组功能强大的产品和服务来实现所谓的BizTalk 框架。BizTalk 是Microsoft现有的、帮助商务公司实现应用软件一体化的分布式互连网应用DNA (Windows Distributed
interNet Applications )体系结构的延伸和扩展。以后的Microsoft产品和工具本身都将包含对BizTalk 服务体系结构的支持。Microsoft Commerce Platform、Office, BackOffice 以及Windows 都将利用BizTalk XML Schema来保存文档的额外信息、并且用它来实现BackOffice
和基于Windows应用软件的一体化集成。Microsoft产品套件、Microsoft Office 2000 发行的下一个主要版本都打算将HTML 提升成为一种内置支持的文件格式，并且使用XML来存储额外的文档信息。Microsoft SQL Server正是其实现这一目的的底层数据的有力工具。
二、技术特点
在此之前，Microsoft就一直致力于将XML技术同其数据库旗舰产品SQL Server相集成，以帮助建立下一代的高效的基于Web的企业应用。Microsoft宣称，其下一版本SQL
Server，即代号为Shiloh，将是一个完全支持XML的产品，利用该产品，用户可以在Web浏览器下输入一个URL地址，即可访问SQL
Server数据库，而返回的结果可以是一个XML文档。另外，它还允许通过输入样式参数，指定样式信息，以便在浏览器中输出丰富的页面。一个典型的URL如下所述：href = http: // localhost / Northwind ? sql = select + firstname,lastname + from + employees + for + xml +
auto Microsoft宣称，SQL Server Shiloh将在2000年中期正式发布，现在发布的预览版只是其全部支持中的一部分，其技术核心是IIS ISAPI的一个扩展，支持环境是Windows NT 4.0 + IIS 4.0，或者Windows 2000 +IIS 5.0，数据库为SQL Server 7.0 或 SQL Server 6.5 Service Pack
5。一个例外是，安装于Windows 98上的Personal Web Server将不提供对XML支持。
XML SQL 技术预览提供了以下几种XML访问功能：
利用HTTP协议以URL的方式访问SQL Server数据库
这是最基本的访问方式。另外，通过指定样式模板参数，可以返回具有一定样式信息的数据。该样式模板是一个包含一条或多条SQL 语句的合法的XML文档。返回的XML文档可以通过指定的XML模式来定义，三种模式为：RAW、AUTO、EXPLICIT。

利用在SELECT语句中附加FOR XML来返回XML格式数据
作为对XML模式的一种补充，通过在FOR XML中指定DTD或XML schema来达到对返回XML文档的格式化。

利用基于XML的UPDATE语句来更新数据库中的记录
SQL Server支持基于XML的插入、删除、修改等数据库更新操作。通用的更新语法是：
<sql:sync xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<sql:before>
<TABLENAME [sql:id="value"] col="value" col="value"…../>
</sql:before>
<sql:after>
<TABLENAME [sql:id="value"] [sql:at-identity="value"] col="value" col="value"…../>
</sql:after>
</sql:sync>
插入操作的更新语法是：
<sql:sync xmlns:sql="urn:schemas-microsoft-com:xml-sql">
[…
</sql:before>]
<sql:after>
<TABLENAME [sql:id="value"] [sql:at-identity="value"] col="value" col="value"…../>
</sql:after>
</sql:sync>
删除操作的更新语法是：
<sql:sync>
<sql:before>
<TABLENAME KeyCol1="PKCol1Value" KeyCol2="PKCol2Value"
..
ColA="Value" ColB="Value"../>
</sql:before>
[<sql:after>
</sql:after>]
</sql:sync>
修改操作的更新语法是：
<sql:sync>
<sql:before>
<TABLENAME [sql:id="value"] KeyCol1="KeyCol1Value" KeyCol2="KeyCol2Value"
..
ColA="OldValue" ColB="OldValue"../>
</sql:before>
<sql:after>
<TABLENAME [sql:id="value"] KeyCol1="KeyCol1Value" KeyCol2="KeyCol2Value"
..
colA="NewValue" colB="NewValue"…../>
</sql:after>
</sql:sync>

利用对象模型在Script脚本程序中实现同样的功能
XML SQL 技术预览提供的osqlxml.dll允许利用对象模型在Script脚本程序中实现基于XML的数据库操作。下面是一个ASP示例：
<%@ LANGUAGE = VBScript %>
<% Response.ContentType = "text/xml" %>>
<%
SET oSQLXML = CreateObject("Microsoft.SQLXMLRequest")
oSQLXML.Connection = "Driver=SQL Server;Server=FRANKMAN-CAVE;Database=Northwind;uid=sa;pwd="
oSQLXML.ExecuteQuery("Select * from customers for XML AUTO")
Response.BinaryWrite oSQLXML.ResultAsBinary
%>

三、结束语
XML SQL 技术预览为我们展示了Microsoft在XML技术应用上的实力，通过将XML同数据库相结合实现了强大的功能，但是，由于该技术目前只是一个预览版本，其本身还会不断发展，相信在正式发布时将会有所改进。

相关文章

Oracle Java版本XML SQL实用工具概述

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.112.116.88]


请问xml...

 发信人: watery (云之风~~水云间), 信区: XML
标 题: 请问xml...
发信站: BBS 水木清华站 (Sun May 14 03:48:03 2000)

请问浏览器端用xml+xsl显示,
可是如何同EJB,servlet,数据库通信呢?
用eJB,xml如何构成三层体系?

能请那位大侠给解释一下.
谢谢!

--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.112.3.85]
上一篇 返回上一页 回到目录 回到页首


水木清华精华区_No Title

 上一篇 返回上一页 回到目录 回到页首


可扩展置标语言 (BM: takeiteasy inannan)

BBS水木清华站∶精华区

编号 | 类别 | 标题 | 编辑日期
1 | 目录 | 初识XML (BM: inannan) | 2001.05.30
2 | 目录 | 标准与规范 (BM: inannan) | 2001.05.30
3 | 目录 | 相关资源 (BM: inannan) | 2001.05.25
4 | 目录 | XML教程 (BM: inannan) | 2001.05.25
5 | 目录 | XML应用(ec,wap,etc) (BM: inannan) | 2001.05.30
6 | 目录 | 技术交流(你问我答) (BM: inannan) | 2001.05.30
7 | 目录 | XML与数据库 (BM: inannan) | 2001.05.28
8 | 目录 | 开发指南 (BM: inannan) | 2001.05.30
9 | 目录 | 工具使用 (BM: inannan) | 2001.05.30
10 | 目录 | 业界动态 (BM: inannan) | 2001.05.30
11 | 目录 | 版主工作区 (BM: inannan) | 2001.05.25
12 | 文件 | 精华区更新于2000.6.30日&文章整理至835� inannan | 2001.05.25
返回上一页 回到上一级目录

BBS水木清华站∶精华区