我必须在xml中表示逗号分隔的字符串。第一个字符串应对应于索引0,第二个字符串应对应于索引1等
这是我打算做的事情
选项1
<Representation>
<indexes>0,1,2</indexes>
<values><![CDATA[x,y,z]]>,![CDATA[x1,y1,z1]]>,![CDATA[x2,y2,z2]]></values>
</Representation>
选项2
<Representation>
<index id="0">x,y,z</index>
<index id="1">x1,y1,z1</index>
<index id="2">x2,y2,z2</index>
</Representation>
我更喜欢选项1,因为我可以用4行表示所有内容而不是选项2,这意味着让我们说要表示100个索引,选项1用两行完成,而在选项2中,线数会增加。选项1是否有效,我不确定?
答案 0 :(得分:1)
两种XML设计的一个主要缺点是它们无法分别标记看似重要的数据项(x,y和z)。通常不应强迫XML的使用者进一步解析XML解析。
请改为尝试:
<Representation>
<group>
<item>x</item>
<item>y</item>
<item>z</item>
</index>
<!-- ... -->
</Representation>
补充说明:
@separator
上的group
属性可能对某些用途有用。答案 1 :(得分:1)
在XML模式中,您可以使用列表类型来实现选项1,但每个字符串需要用空格分隔。
答案 2 :(得分:1)
使用CDATA是错误的。使用CDATA的唯一原因是避免必须转义特殊字符(&
和<
)。您的数据不使用这些字符,因此CDATA不合适。许多XML处理技术没有向XML使用者透露CDATA边界,因此它不是指示逻辑结构的有用方法。
其次,需要非常小心地使用微语法(即属性或元素值中的任何类型的内部非XML语法)。在某些情况下,它可能很有用,但一般来说,与使用XML标记表示结构相比,您使收件人处理数据更加困难。问题是,您正在清楚地查看XML的各种设计选项,但您没有向我们提供任何关于您用来评估哪个选项“正确”的标准的线索。这通常会有一些易于写作,易于阅读,空间经济和变革的可能性,但不知道你想要优化的是什么,我们无法判断。
您已经标记了问题“xsd”,我们可能会猜测您的一个标准是您想要一个可以在XSD中准确描述的结构。如果是这种情况,那么你肯定希望避免任何比空间分隔列表更复杂的微结构,因为这是XSD能够描述的最多。