如何定义XSD以允许任何整数序列元素和特定值类型

时间:2014-08-14 11:30:36

标签: xml xsd

我有以下要求,并且正在尝试确定如何最好地对XSD进行建模以表示这些要求。

我的示例XML如下所示:

<Langauge>
    <0>English</0>
    <1>Dutch</1>
    <2>French</2>
    ..
    ..
</Language>

Langauge标签中的元素数量会有所不同,但元素总是按顺序排列。

关于如何根据上述要求定义XSD的任何建议?

1 个答案:

答案 0 :(得分:1)

不可能。

Valid XML element names cannot begin with a digit。因此,根据定义,名为<1>的标签无法合法定义。

如果您将标记重命名为tag0,tag1,tag2等,那么它将是可行的。您可以将Language定义为该顺序中的元素序列,所有可选项。请注意,这仍然允许使用tag0后跟tag4(中间没有1,2或3)但是它们按顺序排列。

最后 - 即便如此,你也不应该这样做。通过要求这些元素按顺序排列,您可以尝试将数组编号放入元素名称中,您不应该尝试这样做。相反,只需创建相同的元素(类似LanguageName),然后使用其相对子位置作为您想要的数字。例如:

<Language>
   <LanguageName>English</LanguageName>
   <LanguageName>French</LanguageName>
</Language>

在任何XML处理框架中,知道英语= 0和法语= 1(父母下的孩子的索引)会很简单。因此,我一直怀疑是否有一个很好的建模理由想要将该升序数放入元素名称中。