gpt4 book ai didi

xml - 无效的约束值

转载 作者:数据小太阳 更新时间:2023-10-29 02:11:19 26 4
gpt4 key购买 nike

在使用生成的 .xsd 时,我在 WebSphere MQ Broker Tool v7.0 中收到以下验证错误:

a-props-correct.2: Invalid value constraint value '0' in attribute 'attrname'.

相关的.xsd文本是属性的用法:

<xsd:complexType name="CTypeContent">
<xsd:simpleContent>
<xsd:extension base="xsd:base64Binary">
<xsd:attribute name="attrname" type="BooleanType" use="optional" default="1" />
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>

以及属性的定义:

  <xsd:simpleType name="BooleanType">
<xsd:restriction base="xsd:boolean">
<xsd:pattern value="0|1" />
</xsd:restriction>
</xsd:simpleType>

我用 Google 搜索并发现了很多关于 SOAP 之类的讨论,但这似乎与我的项目有点不同。我只是想确保 .xsd 中的逻辑是有根据的。

编辑:

如果我删除属性的默认部分,错误就会消失。这对我来说不是解决方案 - 但也许它有助于诊断。

最佳答案

XSD 片段是有效的,因此 error you're getting没有意义。我相信这是您的 WMB 软件中的一个错误。

您使用的是什么版本的 WMB?

由于您似乎能够使用 XSD,如果不删除默认属性,尝试将模式从一个值为“0|1”的模式重写为两个单独的模式,这也有助于故障排除,一个值为“0”,另一个值为“1”。我以前见过同一供应商的其他产品,其中与 xsd:boolean 关联的模式惨遭失败。

更新:自从发布这篇文章以来,我遇到了这个和其他类似的场景,并意识到模式处理器在验证似乎基本相同的东西时表现不同:一个根据规范纠正的模式,但实际上它描述了一种不可能。这就是关于什么是正确 的事情变得有趣的地方。

这个案例可能有点微妙,因为它涉及到获取 thisthis正确的;基本上,如果出现默认值,它将使用关联值的规范表示(而不是默认值中的字符串!)。因为 1 表示 bool 值的 True,它的规范表示是字符串 true 现在显然不匹配模式(处理与词汇表示 - 基本上是字符串)0|1 这反过来又使这两个不兼容。考虑到 PSVI,XSD 感知的 XML 处理器在应用默认值时无法创建有效的 XML。这就是错误消息所说的内容。

要显示我通常使用的任何 XSD 处理器未标记的其他不可能性,请考虑以下特定代码段:

<xsd:complexType name="Test">
<xsd:sequence>
<xsd:element name="Impossible" type="Test"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="Test" type="Test"/>

不可能从此 XSD 创建有效的 XML,就像在您的情况下缺少默认值 =“1”和属性(模式限制为 0 和 1)一样。

对我来说,这两种情况有点类似于代码编译器捕获(在编译时)被零除的条件 - 在它可以的地方。

关于xml - 无效的约束值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8975834/

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