XML指南——XML 屬性

XML指南——XML 屬性

跟HTML一樣,XML元素再開始標記處可以由元素屬性。

屬性通常包含一些關於元素的額外信息。

XML屬性

XML元素可以擁有屬性。

你一定還記得這樣的HTML代碼吧: <IMG SRC=”computer.gif”>。src是img元素的屬性,提供了關於img元素的額外信息。

在HTML中 (在XML中也一樣)元素的屬性提供了元素的額外信息。

<img src=”computer.gif”>

<a href=”demo.asp”>

書信提供的信息通常不是數據的一部分。在下面的例子中,類型和數據毫不相關,但對於操作這個元素的軟件來說卻相當重要。

<file type=”gif”>computer.gif</file>

引用風格”female” 還是 』female』?

屬性值必須用引號引著。單引號、雙引號都可以使用。例如一個人的性別,person元素可以這樣寫:

<person sex=”female”>

也可以這樣寫: 

<person sex=』female』>

上面的兩種寫法在一般情況下是沒有區別的,使用雙引號的應用更普遍一些。但是在某些特殊的情況下就必須使用單引號,比如下面的例子:

<gangster name=』George “Shotgun” Ziegler』>

  

使用子元素還是使用屬性

數據既可以存儲在子元素中也可以存儲在屬性中。

請看下面的例子:

<person sex=”female”>

<firstname>Anna</firstname>

<lastname>Smith</lastname>

</person>

<person>

<sex>female</sex>

<firstname>Anna</firstname>

<lastname>Smith</lastname>

</person>

在第一個例子中,sex是一個屬性,在第二個例子中,sex則是一個子元素。這兩個例子都提供了相同的信息。

什麼時候用屬性,什麼時候用子元素沒有一個現成的規則可以遵循。我的經驗是屬性在HTML中可能相當便利,但在XML中,你最好避免使用。

我喜歡的風格

我更願意把數據存儲到子元素中。

下面的三個XML文檔包含了相同的信息:

第一個例子使用了data屬性:

<note date=”12/11/99″>

<to>Tove</to>

<from>Jani</from>

<heading>Reminder</heading>

<body>Don』t forget me this weekend!</body>

</note>

第二個例子使用了data元素:

<note>

<date>12/11/99</date>

<to>Tove</to>

<from>Jani</from>

<heading>Reminder</heading>

<body>Don』t forget me this weekend!</body>

</note>

第三個例子使用了擴展的data元素: (這就是我推薦的樣式):

<note>

<date>

<day>12</day>

<month>11</month>

<year>99</year>

</date>

<to>Tove</to>

<from>Jani</from>

<heading>Reminder</heading>

<body>Don』t forget me this weekend!</body>

</note> 

避免使用屬性?

應該避免使用屬性麼?

這裡有一些使用屬性引發的問題: 

屬性不能包含多個值(子元素可以)。 

屬性不容易擴展。 

屬性不能夠描述結構(子元素可以)。 

屬性很難被程序代碼處理。 

屬性值很難通過DTD進行測試。 

如果使用屬性來存儲數據,那麼所編寫的XML文檔一定很難閱讀和操作。盡量使用元素來描述數據,僅使用屬性來描述那些與數據關係不大的額外信息。

不要象下面的例子那樣(如果你那麼做了說明你還沒有明白上面的觀點)。

<note day=”12″ month=”11″ year=”99″

to=”Tove” from=”Jani” heading=”Reminder” 

body=”Don』t forget me this weekend!”>

</note> 

屬性規則的例外

規則總是有例外的。

我的關於屬性的規則也有一個例外:

有些時候應該為一個元素設計一個ID引用,通過這個ID可以引用存取特定的XML元素,就像HTML中的name和id屬性一樣。請看下面的例子:

<messages>

<note ID=”501″>

<to>Tove</to>

<from>Jani</from>

<heading>Reminder</heading>

<body>Don』t forget me this weekend!</body>

</note>

<note ID=”502″>

<to>Jani</to>

<from>Tove</from>

<heading>Re: Reminder</heading>

<body>I will not!</body>

</note> 

</messages>

在上面的例子中,ID屬性就相當於一個計數器,或者是一個唯一的標識符,在XML文檔中標識不同的便條信息,他不是便條信息的一部分。

我們所要盡力向讀者說明的是:元數據(與數據有關的數據)應該以屬性的方式存儲,而數據本身應該以元素的形式存儲。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/111025.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • python 两个list 求交集,并集,差集

    python 两个list 求交集,并集,差集在python中,数组可以用list来表示。如果有两个数组,分别要求交集,并集与差集,怎么实现比较方便呢?当然最容易想到的是对两个数组做循环,即写两个for循环来实现。这种写法大部分同学应该都会,而且也没有太多的技术含量,本博主就不解释了。这里给大家使用更为装bility的一些方法。老规矩,talkischeap,showmethecode#!/usr/bin/envpython#

    2022年6月21日
    27
  • 远程连接opc服务器设置[通俗易懂]

    远程连接opc服务器设置[通俗易懂]准备工作1.1软件基础(1)安装所需的软件,机器上有必要的OPCclient、OPCServer,如ifix,rslinx,保证rslinx的版本能支持远程opc功能。1.2通讯基础(1)在同一局域网内,能ping通(物理连接,处于同一网段下)(2)建立同名用户及相同密码,win7系统将用户放置于于distributedCOMUser下,若是XP系统,则开启来宾用户…

    2022年6月20日
    23
  • python进阶(25)协程「建议收藏」

    python进阶(25)协程「建议收藏」协程的定义协程(Coroutine),又称微线程,纤程。(协程是一种用户态的轻量级线程)作用:在执行A函数的时候,可以随时中断,去执行B函数,然后中断B函数,继续执行A函数(可以自动

    2022年8月7日
    5
  • python文件句柄_Python 文件操作学习 就是这么简单!-文件句柄

    python文件句柄_Python 文件操作学习 就是这么简单!-文件句柄一、前言Python对文件的操作是相当简单的。二、文件操作函数的介绍Python通过open函数来打开文件,语法如下open(file,mode=‘r’,buffering=None,encoding=None,errors=None,newline=None,closefd=True)可以看到,除了第一个file参数是必须的,其它都是可选的。1、file:操作的文件2、mode:操…

    2022年10月18日
    4
  • 再谈单链表

    再谈单链表

    2021年9月12日
    46
  • linux下解压zip文件命令

    linux下解压zip文件命令1、把/home目录下面的data目录压缩为data.zipzip-rdata.zipdata#压缩data目录2、把/home目录下面的data.zip解压到databak目录里面unzipdata.zip-ddatabak3、把/home目录下面的a文件夹和3.txt压缩成为a123.zipzip-ra123.zipa3.txt4、把/home目录下面的t.z…

    2022年6月7日
    67

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号