王朝网络
分享
 
 
 

XML基础入门(一)

王朝other·作者佚名  2006-01-30
宽屏版  字体: |||超大  

基本XML

讨论xml文件以前我们先看一个例子:

<person>

Alan Turing

</person>

这就是一个标记完好的xml文件,<person>和</person>分别是开始标记和结束标记。

l 开始标记:以<开始,以>结束,中间是标记名称。

l 结束标记:以</开始,以>结束,中间是标记名称。

注意:开始标记和结束标记对应的标记名称必须相同,但是具体使用什么作为名称就没有规定,这个和html是不同的(html的标记名是若干个确定的),你可以使用person来标记一个人,使用cat来标记一只猫。

标记中间的Alan Turing就是数据,其中Alan和Turing之间的空格也是数据,也就是说标记里面的数据中的空格不会别忽略。

有时候我们也许需要没有任何数据的元素(元素指开始标记和结束标记之间的内容,包含开始标记和结束标记,比如上面提到的例子就是一个元素),例如下面的:

<person></person>

这是一个空标记,但是我们有另外更简捷的标记表示空标记:

<person/>

注意:xml是区分大小写的,这与html不同。<Person>和<PERSON>是不同标记,比如你有一个元素以<person>开始,那么你就不能使用</ Person >作为结束标记。

上面的例子指含有一个元素,我们现在给出一个复杂点的例子,然后给出xml树的概念。

<person>

<name>

<first_name>Alan</first_name>

<last_name>Turing</last_name>

</name>

<profession>computer scientist</profession>

<profession>mathematician</profession>

<profession>cryptographer</profession>

</person>

显然上面的例子外层仍然是一个person元素,但是与先前不同的是这个元素含有4个子元素,1个name元素和3个profession元素。我们称person是name的父元素,显然他也是profession的父元素,同样我们可以看到name是first_name和last_name的父元素。

上面的例子我们发现标记进行了嵌套,这是允许的。但是重叠标记是非法的,比如:

<strong><em>this common example from HTML</strong></em>

应该是:

<strong><em>this common example from HTML</em></strong>

根据上面的例子中父子元素的关系以及注意到任何xml文件只能且只能含有一个根元素(也就是没有父元素的元素)看起来很象一个树,如图:

现在我们给出一个混合数据的xml文件的例子,

<biography>

<name><first_name>Alan</first_name> <last_name>Turing</last_name>

</name> was one of the first people to truly deserve the name

<emphasize>computer scientist</emphasize>. Although his contributions

to the field are too numerous to list, his best-known are the

eponymous <emphasize>Turing Test</emphasize> and

<emphasize>Turing Machine</emphasize>.

<definition>The <term>Turing Test</term> is to this day the standard

test for determining whether a computer is truly intelligent. This

test has yet to be passed. </definition>

<definition>The <term>Turing Machine</term> is an abstract finite

state automaton with infinite memory that can be proven equivalent

to any any other finite state automaton with arbitrarily large memory.

Thus what is true for a Turing machine is true for all equivalent

machines no matter how implemented.

</definition>

<name><last_name>Turing</last_name></name> was also an accomplished

<profession>mathematician</profession> and

<profession>cryptographer</profession>. His assistance

was crucial in helping the Allies decode the German Enigma

machine. He committed suicide on <date><month>June</month>

<day>7</day>, <year>1954</year></date> after being

convicted of homosexuality and forced to take female

hormone injections.

</biography>

上面的例子我不作解释,但是你要知道他是一个合法的xml文件,也就是说标记和内容可以混排。但是这样格式的xml文件在程序的处理上就很麻烦,所以不推荐使用。

接着我们谈谈属性(Attributes)。看例子:

<person born="1912-06-23" died="1954-06-07">

Alan Turing

</person>

其中红色标记的born和died就是属性。其中born是属性名,1912-06-23是属性值,属性值是用”筐起来的,当然也可以用单引号’筐起来。

<person died = '1954-06-07' born = '1912-06-23' >

Alan Turing

</person>

使用单引号的作用是你可以在属性的值里面添加双引号。

到这里我们发现一个问题:

<person>

<name first="Alan" last="Turing"/>

<profession value="computer scientist"/>

<profession value="mathematician"/>

<profession value="cryptographer"/>

</person>

这个例子中我在person元素里面添加了4个子元素,每个元素有自己的属性,以及对应的值,然后这4个元素都是空元素。对照前面我们给出的对应的例子,你觉得是把值限定在属性里面好还是直接放在标记之间好呢?这是一个争论不休的问题,我的看法是由你自己定,看哪个爽就使用哪个。但是要注意对同一个元素,他不能同时含有几个相同名称的属性。

<person born="1912-06-23" born="1954-06-07">

Alan Turing

</person>

上面的是非法的xml文件。

接着我们看看特殊字符带来的问题。由于<和>是作为标记使用的,所以一般情况下我们不能在数据部分直接包含<和>,而是使用&lt;和&gt; ,其实这个问题在html里面就有了,处理方式也是和html一样,比如&我们使用&amp; ,双引号”使用&quot;等。

再看看注释,方法和html是一样的:

<!-- 左边的是注释开始标记,右边的是结束标记 -->

但是注意注释的内容不能包含 -- ,同时注释里面的任何标记都会被忽略!同时需要注意的是注释不能出现在一个元素的标记里面。

现在我们从整体上来看xml:

1. xml声明

所有的xml文档可能(也应该!)由一个xml声明(XML Declaration)开始。虽然文档声

明使用的是同指令处理类似的语法,但从技术上讲,根据X M L推荐标准它们并不是一回事,因

为声明是xml中的保留部分。

<?xml version="1.0" encoding="ASCII" standalone="yes"?>

<person>

Alan Turing

</person>

如果包括X M L声明,它必须处在文档最前面—前面不允许有任何空白或注释。严格地讲,

在X M L当中这种声明并不是必须的,但我们后面会看到,当处理文档时,它确实会起到一些优化的作用。

这些属性已经在XML 1.0规范中做出了定义:

? version—不能省略;值必须为“ 1 . 0”;该属性用来保证对X M L未来版本的支持。

? e n c o d i n g—可选;值必须是一种合法的字符编码,例如“ U T F - 8”、“U T F - 1 6”或者

“I S O - 8 8 5 9 - 1”(即L a t i n - 1字符编码)。所有X M L解析器都要求至少支持U T F - 8和U T F - 1 6。

如果没有包含这个属性,就假设是“ U T F - 8”或“ U T F - 1 6”编码,这取决于开始的“< ? x m l”字符串的格式。

? s t a n d a l o n e—可选;值必须是“ y e s”或“n o”;如果是“y e s”就意味着所有必须的实体声明都包含在文档中,如果是“ n o”就意味着需要外部的D T D。DTD将在后面介绍。

最后给出好的xml的相关要求:

1. 每个开始标记必须有一个结束标记匹配

2. 标记可以嵌套但是不能重叠

3. 每个xml文件只有一个根元素

4. 一个元素不能含有两个相同名字的属性

5. 注释不能出现在元素标记里面

6. 没有<或者&等类似的字符出现在元素值或者属性值里面

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
>>返回首页<<
推荐阅读
 
 
频道精选
 
静静地坐在废墟上,四周的荒凉一望无际,忽然觉得,凄凉也很美
© 2005- 王朝网络 版权所有