gpt4 book ai didi

c++ - XSD union 上的 QXmlSchemaValidator 段错误

转载 作者:太空宇宙 更新时间:2023-11-04 12:29:13 25 4
gpt4 key购买 nike

为清楚起见,以下内容影响 Qt4.7。我不知道 Qt5 是否受到影响。

使用 QXmlSchemaValidator 验证 XML 时我发现 XSD unions 上的 Qt 段错误

例子:

<xs:simpleType name="dayOfWeek">
<xs:union memberTypes="xs:integer dayAsString"/>
</xs:simpleType>

<xs:simpleType name="dayAsString">
<xs:restriction base="xs:string">
<xs:enumeration value="Monday"/>
<xs:enumeration value="Tuesday"/>
<xs:enumeration value="Wednesday"/>
<xs:enumeration value="Thursday"/>
<xs:enumeration value="Friday"/>
<xs:enumeration value="Saturday"/>
<xs:enumeration value="Sunday"/>
</xs:restriction>
</xs:simpleType>

此构造在其他应用程序中得到了很好的验证。例如,我将 Notepad++ 与 XML 工具插件结合使用。

但是与 QXmlSchemaValidator 一起使用的相同 XSD 导致我的应用程序崩溃。

这给我留下了一个问题:

是否可以通过其他方式在 XSD 中实现像这样的属性 union ?

最佳答案

这是解决 union 的一种方法:

<xs:simpleType name="dayOfWeek">
<xs:restriction base="xs:token">
<xs:pattern value="\d|Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday"/>
</xs:restriction>
</xs:simpleType>

为了加分,甚至可以这样限制整数版本:

...
<xs:pattern value="[1-7]|Monday..."/>

正则表达式测试器链接 here .

(注意:在 XSD 中,您必须删除 anchor ,因为它们是隐含的(如我上面的解决方案所示)。请参阅 this 文章。)

我认为这甚至可能比我的问题陈述中的 union 更好?

关于c++ - XSD union 上的 QXmlSchemaValidator 段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59320657/

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