xml - 最佳实践 : XML attribute vs XML element - When should I use elements and when should I use attributes?

标签 xml

<分区>

这种 XML 数据的正确格式是什么?它们是等效的还是两者之间有取舍?

1.

<sitemap>
  <category name="Animals">
    <section title="Dogs">
      <page url="/pics/greatdane.jpg" title="Great Dane"/>
    </section>
  </category>
</sitemap>

2.

<sitemap>
  <page>
    <category>Animals</category>
    <section>Dogs</section>
    <title>Great Dane</title>
    <url>/pics/greatdane.jpg</url>    
  </page>
</sitemap>

我已经用我的样式表实现了第一个例子,它似乎工作正常,但我不确定正确的形式应该是什么。

最佳答案

属性与元素的问题已经存在了十年的大部分时间,并且没有正确的答案。相反,考虑差异,您应该能够决定使用哪个差异:

  • 一个属性只能有一个实例,尽管您可以使用 DTD 或 XML Schema 对元素强制执行这一点;
  • 属性是无序的。元素不是;
  • 如果没有 child ,属性会导致更简洁的语法。比较:

到:

<page>
  <name>Sitemap</name>
</page>

我知道我更喜欢哪一个;

  • 现在不太相关,因为 DTD 在 XML 模式上使用不多(如果有的话),但我还是要添加它:DTD 允许属性的默认值(隐含的)但元素没有这样的机制;和
  • 作为元素,元素可以有自己的子元素和属性。属性显然不能。

所以,从你的例子来看,你最里面的<page>元素有一个 URL 属性(尽管出于某种原因它是一个图像——也许是一个预览图标?如果是这样,属性名称会产生误导)。一个网页只有一个 URL(通常),所以这是一个可以作为属性的例子。

另一方面,如果您想在页面上列出图片,显然可能不止一个,因此您需要相应的元素。

但是,最终,大多数时候没有正确或错误的答案,这主要是风格问题。

关于xml - 最佳实践 : XML attribute vs XML element - When should I use elements and when should I use attributes?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/395527/

相关文章:

android - 如何从自定义 ListView 中的 PopupMenu 获取项目的位置

android - 使用外部库: No resource identifier found for attribute

PHP - MySQL 到 SimpleXML,确保正确的编码

C# 将 XML 值加载到字典中,名称作为索引

java - 如何在 Android 应用程序中更新信息

.net - 如何从 .NET 发布 SOAP 请求?

iphone - 将具有大量子节点的 XML 解析为 UITableView

java - 用 Fragment 替换 CardView

xml - 根据节点值对XPath查询进行分组?

python - Flask Api 解析返回错误的 xml post 请求