在工作中,我们被要求创建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中使用元素或属性吗?
我从来没有弄清楚何时使用xml属性.我总是使用元素.我刚读过 这篇w3schools文章.文章指出使用属性是不好的做法,因为:
它指出的唯一例外是当您为标记分配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中使用元素或属性吗?
我正在用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)
显然这是一个非常简单的例子......但是,对于将某些类型作为属性与子节点进行比较,是否存在专家和骗局?或两者兼而有之?