XML属性与XML元素

在工作中,我们被要求创建XML文件以将数据传递给另一个离线应用程序,然后创建第二个XML文件传回以更新我们的一些数据。 在此过程中,我们一直在与其他应用程序的团队讨论XML文件的结构。

我提出的样本基本上是这样的:

<INVENTORY>
   <ITEM serialNumber="something" location="something" barcode="something">
      <TYPE modelNumber="something" vendor="something"/> 
   </ITEM>
</INVENTORY>

另一个团队说这不是行业标准,属性只能用于元数据。 他们建议:

<INVENTORY>
   <ITEM>
      <SERIALNUMBER>something</SERIALNUMBER>
      <LOCATION>something</LOCATION>
      <BARCODE>something</BARCODE>
      <TYPE>
         <MODELNUMBER>something</MODELNUMBER>
         <VENDOR>something</VENDOR>
      </TYPE>
   </ITEM>
</INVENTORY>

我建议第一个的原因是创建的文件的大小要小得多。 在传输过程中将会有大约80000个文件在文件中。 他们的建议实际上比我建议的要大三倍。 我搜索了被提及的神秘的“行业标准”,但我能找到的最接近的是XML属性应该只用于元数据,但表示辩论是关于实际元数据。

在冗长的解释之后(对不起)你如何确定什么是元数据,并且在设计XML文档的结构时,应该如何决定何时使用属性或元素?


我使用这个经验法则:

  • 属性是自包含的东西,即颜色,ID,名称。
  • 一个元素有或者可能拥有自己的属性或者包含其他元素。
  • 所以你很接近。 我会做这样的事情:

    编辑 :根据以下反馈更新原始示例。

      <ITEM serialNumber="something">
          <BARCODE encoding="Code39">something</BARCODE>
          <LOCATION>XYX</LOCATION>
          <TYPE modelNumber="something">
             <VENDOR>YYZ</VENDOR>
          </TYPE>
       </ITEM>
    

    属性的一些问题是:

  • 属性不能包含多个值(子元素可以)
  • 属性不易扩展(适用于将来的更改)
  • 属性不能描述结构(子元素可以)
  • 属性更难以被程序代码操纵
  • 属性值不容易针对DTD进行测试
  • 如果您将属性用作数据容器,则最终会生成难以读取和维护的文档。 尝试使用元素来描述数据。 仅使用属性来提供与数据无关的信息。

    不要这样结束(这不是应该如何使用XML):

    <note day="12" month="11" year="2002" 
          to="Tove" from="Jani" heading="Reminder"  
          body="Don't forget me this weekend!"> 
    </note>
    

    资料来源:http://www.w3schools.com/xml/xml_dtd_el_vs_attr.asp


    “XML”代表“可扩展标记语言”。 标记语言意味着数据是文本,用关于结构或格式的元数据标记。

    XHTML是一个使用它的方式使用XML的例子:

    <p><span lang="es">El Jefe</span> insists that you
        <em class="urgent">MUST</em> complete your project by Friday.</p>
    

    在这里,元素和属性之间的区别是明确的。 文本元素显示在浏览器中,属性是关于如何显示它们的说明(尽管有几个标签不能这样工作)。

    当XML不是用作标记语言,而是用作数据序列化语言时,会出现混淆,其中“数据”和“元数据”之间的区别比较模糊。 因此,元素和属性之间的选择或多或少是任意的,除了不能用属性表示的东西(参见feenster的答案)。

    链接地址: http://www.djcxy.com/p/66419.html

    上一篇: XML attribute vs XML element

    下一篇: Microsoft SQL Server 2005/2008: XML vs text/varchar data type