gpt4 book ai didi

validation - 在 RelaxNG 模式中允许任意顺序的元素

转载 作者:行者123 更新时间:2023-12-04 18:20:48 26 4
gpt4 key购买 nike

我有一个看起来很像这样的 RelaxNG 模式:

<grammar xmlns="http://relaxng.org/ns/structure/1.0">
<start>
<element name="xml">
<zeroOrMore>
<element name="multi">
<data type="string"/>
</element>
</zeroOrMore>
<optional>
<element name="optional">
<data type="string"/>
</element>
</optional>
</element>
</start>
</grammar>

我想允许 0-N multi标签,但 0-1 optional .只要 multis 在可选之前,它就可以正常工作,但是因为 relative order matters in RNG ,如果他们之后出现,它会失败:

有效的:
<xml>
<optional/>
</xml>

<xml>
<multi/>
<multi/>
<optional/>
</xml>

无效的:
<xml>
<optional/>
<multi/>
<multi/>
</xml>

那么我怎样才能允许任意顺序但保留约束呢?我尝试将整个内容包裹在 <zeroOrMore><choice> 中 block ,并且允许任意顺序,但也允许任意数量的可选标签通过。

最佳答案

如果我正确理解了您的问题,那么您要实现的目标是通过使用 <interleave/> 来完成的。图案:

<?xml version="1.0" encoding="UTF-8"?>
<grammar xmlns="http://relaxng.org/ns/structure/1.0">
<start>
<element name="xml">
<interleave>
<zeroOrMore>
<element name="multi">
<data type="string"/>
</element>
</zeroOrMore>
<optional>
<element name="optional">
<data type="string"/>
</element>
</optional>
</interleave>
</element>
</start>
</grammar>

这将验证任何序列或零或一 optional元素和零个或多个 multi包括您的示例在内的元素。

关于validation - 在 RelaxNG 模式中允许任意顺序的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10730501/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com