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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • angular路由懒加载强制刷新_angular路由

    angular路由懒加载强制刷新_angular路由version7.x{path:’test’,loadChildren:’./test/test_ui.module#TestUIModules’},version8.x{path:’test’,loadChildren:()=>import(‘./test_ui/test_ui.module’).then(mod=>mod.TestUIModules)},

    2022年10月7日
    0
  • pychrome 激活码2021【在线注册码/序列号/破解码】

    pychrome 激活码2021【在线注册码/序列号/破解码】,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月20日
    49
  • DNA和纳米(Nano)Fusion技术的发展趋势

    DNA和纳米(Nano)Fusion技术的发展趋势

    2022年1月11日
    39
  • 企业微信api接口文档_接口文档示例

    企业微信api接口文档_接口文档示例提供一些我自己使用过的api数据接口,让学习前端的朋友可以提早熟练地调用一些Api接口。以下api数据接口主要为一些学过ajax或一些学过vue基础的同学。第一个:网易云音乐的api数据接口,基础访问地址(api的跟地址)为:https://autumnfish.cn/点击查看文档,就可以进入接口文档的详细使用步骤了。这个接口很适合喜欢音乐的朋友去打造属于自己的音乐主页第二个:黑马…

    2022年9月18日
    0
  • 震惊!2022 年秋招 Java 后端开发岗竟然一片红海!算法岗都不香了吗?

    据说,2022年算法岗遇冷,BAT暑期实习甚至收不到简历,Java反而爆炸。难道,Java的春天(映射Spring全家桶)又要来了吗?作为Java领域的优质创作者(见下图),又可以在CSDN横着走了吗?如何看待2022年秋招Java后端开发岗一片红海?这不仅让我想起脉脉上的一段话——来自某文豪。划重点:有后选后,无后选前无后无前,算法也甜条件允许,无脑后端前途无量,预定高管这里的后,Java后端敢称第二,没人敢称第一。为什么我敢这么肯定呢?从4个方面来说

    2022年4月14日
    108
  • python中callback_python安装后怎么打开

    python中callback_python安装后怎么打开刚接触Python的时候,简单的异常处理已经可以帮助我们解决大多数问题,但是随着逐渐地深入,我们会发现有很多情况下简单的异常处理已经无法解决问题了,如下代码,单纯的打印异常所能提供的信息会非常有限。deffunc1():raiseException(“–func1exception–“)defmain():try:func1()exceptExceptionase:printe…

    2025年5月28日
    0

发表回复

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

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