虽然我对XML和XML Schema了解不多,但我已经很久没有使用它了,并且从未特别使用它。 因此,对以下内容的一点帮助将非常感激。
我们目前收到分隔数据文件,并希望切换到XML Schema验证的XML文件。 当前分隔文件包含一个包含记录计数的预告片记录。
例如:TRL0000155
在XML版本中,此记录计数是否应包含在主<data_file>
元素的属性中
<data_file record_count="155">
<record>
record XML...
</record>
<record>
record XML...
</record>
...
</data_file>
或作为<data_file>
<data_file>
<record_count>155</record_count>
<record>
record XML...
</record>
<record>
record XML...
</record>
...
<data_file>
或者我说这一切都错了,你可以给我一个关于完全替换记录计数的正确方法的提示。
我确实认识到元素和属性之间的区别,但在这种情况下,我希望它是许多以前遇到的问题,并且可以很好地解释为什么一个是首选解决方案。
FWIW我更倾向于属性解决方案,因为count是关于<data_file>
元素的元数据,但我很乐意遵循更多专家指导。
提前致谢...
答案 0 :(得分:2)
由于每个记录都有一个<record>
元素,因此技术上不需要显式记录计数。当然,你仍然可以拥有它,例如,如果它有助于提高性能。但另一方面,它引入的问题是它必须与<record>
元素的数量保持一致。
如果您决定存储记录计数,那么您的两种方法(属性和元素)都可以。主要区别在于,当您( if you)构建文件的字符串内容时,属性将被忽略,而元素中的文本节点则不会。因此,计数将显示在第二种情况下,但不会显示在第一种情况下。
如果您可以将XPath应用于XML文件,那么确定记录优势很容易;这只是count(/data_file/record)
。在这种情况下,确实没有必要明确地存储该值。
答案 1 :(得分:1)
属性或元素......通常你会发现它们完全可以互换。一个主要的区别是元素可以重复,而只有一个具有该限定名称的属性可以出现在元素上。
从语义上讲,当您想要对某个元素或结构说 about 时,我更喜欢使用属性。名称本身就是这样说的:它是包含元素的属性。既然你打算说一下你的data_file,即记录的数量,那么使用一个属性很有意义。
除此之外,这是我在做出决定时使用的其余资格: