元素内容与简单XML值的属性

时间:2010-06-16 16:47:25

标签: xml

我知道元素与属性的争论在这里和其他地方多次出现(例如hereherehereherehere但是我没有看到很多关于元素与简单属性值属性的讨论。

您认为以下哪种方法更适合存储简单值?

A:元素内容中的值

<TotalCount>553</TotalCount>
<CelsiusTemperature>23.5</CelsiusTemperature>
<SingleDayPeriod>2010-05-29</SingleDayPeriod>
<ZipCodeLocation>12203</ZipCodeLocation>

B:属性值

<TotalCount value="553"/>
<CelsiusTemperature value="23.5"/>
<SingleDayPeriod day="2010-05-29"/>
<ZipCodeLocation code="12203"/>

我怀疑将元素内容(A)中的值放在大多数人看来会更熟悉(虽然我不确定)。

将值放在属性(B)中可能会使用较少的字符,但这取决于元素和属性名称的长度。

将值放在属性(B)中可能更具可扩展性,因为您可能会将所有类型的额外信息作为嵌套元素包含在内。然而,通过将值放在元素内容(A)中,您将限制可扩展性以添加更多属性。但是,可扩展性通常不是真正简单属性的关注点 - 有时你知道你永远不需要添加额外的数据。

底线可能只是无关紧要,但听到一些想法并看到两个选项的投票仍然会很棒。

5 个答案:

答案 0 :(得分:1)

使用方法B,您必须记住属性名称。自动完成的XML编辑器可以简化这一点,但是,使用选项A,使用元素值,还有一件事要记住,并且没有歧义。例如,如果我定义两个属性,例如

,这意味着什么
<MyProperty code="ABC" date="01-02-03"/>

您选择的属性或元素值将取决于您的目标受众,XML文件的生成方式,验证方式以及阅读频率(由人们阅读)。

答案 1 :(得分:1)

我不确定这值得投票。选项B显然是错误的。它使用冗余信息,并且很难使用XML模式进行验证。

一般“debate”是关于是否使用您的选项A或类似的东西:

<Measurements totalCount="553" 
              celsiusTemperature="23.5"
              singleDayPeriod="2010-05-29"
              zipcodeLocation="12203"/>

答案 2 :(得分:0)

答:元素内容中的值更好。 e.g。

<TotalCount>553</TotalCount>
<CelsiusTemperature>23.5</CelsiusTemperature>
<SingleDayPeriod>2010-05-29</SingleDayPeriod>
<ZipCodeLocation>12203</ZipCodeLocation>

(仅针对投票目的的答案 - 我将其标记为社区维基,因此我不会因为赞成而获得赞誉。)

答案 3 :(得分:0)

B:属性值更好:

<TotalCount value="553"/>
<CelsiusTemperature value="23.5"/>
<SingleDayPeriod day="2010-05-29"/>
<ZipCodeLocation code="12203"/>

(仅针对投票目的的答案 - 我将其标记为社区维基,因此我不会因为赞成而获得赞誉。)

答案 4 :(得分:0)

怎么样:

<weather>
  <TotalCount type="string">553</TotalCount>
  <CelsiusTemperature type="string">23.5</CelsiusTemperature>
  <SingleDayPeriod type="date" format="%Y-%m-%d">2010-05-29</SingleDayPeriod>
  <ZipCodeLocation type="integer">12203</ZipCodeLocation>
</weather>

SimpleXML仅在您直接在密钥

上请求时显示属性
print_r( $wheather->SingleDayPeriod )

如果您请求结构

,则不会
print_r( $weather )