相关疑难解决方法(0)

XML属性与XML元素

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

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

<INVENTORY>
   <ITEM serialNumber="something" location="something" barcode="something">
      <TYPE modelNumber="something" vendor="something"/> 
   </ITEM>
</INVENTORY>
Run Code Online (Sandbox Code Playgroud)

另一个团队表示,这不是行业标准,属性应仅用于元数据.他们建议:

<INVENTORY>
   <ITEM>
      <SERIALNUMBER>something</SERIALNUMBER>
      <LOCATION>something</LOCATION>
      <BARCODE>something</BARCODE>
      <TYPE>
         <MODELNUMBER>something</MODELNUMBER>
         <VENDOR>something</VENDOR>
      </TYPE>
   </ITEM>
</INVENTORY>
Run Code Online (Sandbox Code Playgroud)

我建议第一个的原因是创建的文件的大小要小得多.在转移过程中,文件中将有大约80000个项目.实际上他们的建议比我建议的大三倍.我搜索了上面提到的神秘的"行业标准",但我能找到的最接近的是XML属性应该只用于元数据,但是辩论是关于什么是实际的元数据.

经过长时间的解释(对不起),您如何确定什么是元数据,在设计XML文档的结构时,您应该如何决定何时使用属性或元素?

xml xsd

246
推荐指数
12
解决办法
7万
查看次数

XML元素与属性

可能重复:
我应该在XML中使用元素或属性吗?

我从来没有弄清楚何时使用xml属性.我总是使用元素.我刚读过 这篇w3schools文章.文章指出使用属性是不好的做法,因为:

  • 属性不能包含多个值(子元素可以)
  • 属性不易扩展(用于将来的更改)
  • 属性无法描述结构(子元素可以)
  • 属性更难以通过程序代码进行操作
  • 属性值不容易针对DTD进行测试

它指出的唯一例外是当您为标记分配ID时.

它是否正确?为什么属性甚至存在呢?这是xml的设计错误吗?这里有什么我想念的吗?

我想到使用属性的唯一原因是一对一的关系.即:名称.但它必须是与原始(或字符串)的一对一关系.因为将来你不想把它分成几个不同的部分是很重要的.即:

<date> May 23, 2001 </date>
Run Code Online (Sandbox Code Playgroud)

至:

<date>
   <month> May </month>
   <d> 23 </d>
   <yr> 2001 </yr>
</date>
Run Code Online (Sandbox Code Playgroud)

因为属性不可能实现这一点.

奖金问题:在日期示例中可以执行以下操作:

<date>
   <default> May 23, 200 </default>
   <month> May </month>
   <d> 23 </d>
   <yr> 2001 </yr>
</date>
Run Code Online (Sandbox Code Playgroud)

为未来的应用程序提供更多(或不同)信息,同时仍然提供相同格式的现有应用程序?或者你必须这样做:

<date> May 23, 2001 </date>
<NEWdate>
   <month> May </month>
   <d> 23 </d>
   <yr> 2001 </yr>
</NEWdate>
Run Code Online (Sandbox Code Playgroud)

xml

10
推荐指数
1
解决办法
5803
查看次数

适当的XML格式

可能重复:
我应该在XML中使用元素或属性吗?

我正在用XML编写配置文件,而且我对整个XML热潮都很陌生.

我很好奇SO社区如何考虑如何在XML中表示各种值,因为我可以看到几种方法来实现它.

例如,值何时应该是属性,何时应该嵌套在标记中?

<node1 message="Hello world" id="1" />
Run Code Online (Sandbox Code Playgroud)

<node1>
  <message>Hello world</message>
  <id>1</id>
</node1>
Run Code Online (Sandbox Code Playgroud)

显然这是一个非常简单的例子......但是,对于将某些类型作为属性与子节点进行比较,是否存在专家和骗局?或两者兼而有之?

xml

5
推荐指数
1
解决办法
4144
查看次数

标签 统计

xml ×3

xsd ×1