使用xml模式,如何验证具有递增元素名称的xml文件?
示例: xml:
<liste_of_element>
<element_1> ...... </element_1>
<element_2> ...... </element_2>
<element_3> ...... </element_3>
</liste_of_element>
答案 0 :(得分:2)
这是一个不良的XML设计,而不良的XML设计的症状之一通常是XSD不允许您对其进行验证。
如果确实需要,可以使用XSD 1.1断言来做到这一点:
<xs:assert test="every $e in child::*
satisfies local-name($e) =
concat('element_', count(preceding-sibling::*) + 1"/>
但是我真的建议更改设计。序列号不提供任何额外的信息,并且使处理XML(无论您使用哪种处理API或语言)都变得更加困难。
答案 1 :(得分:0)
以我的经验,w3schools.com是学习XML,XML Schema等的好地方。它是免费阅读且可靠的。
要搜索的关键字是序列。参见:https://www.w3schools.com/xml/el_sequence.asp
答案 2 :(得分:0)
仅出于完整性考虑:这是一个非常糟糕的XML设计。
XML的目的之一就是避免这种情况。
看来,这种SO答案"Can I use regular expressions in XML Schema element names?"表示的XSD 1.0完全不支持这种命名方案。
与这种元素名称匹配的XPath表达式为
concat('element_',position())
,但是由于上述情况,这不能在XSD 1.0中表示。 XSD 1.1中也许有一种方法。