gpt4 book ai didi

regex - xsd:simpleType: xsd:pattern 和 xsd:maxLength 可以一起工作吗?

转载 作者:行者123 更新时间:2023-12-04 19:17:22 27 4
gpt4 key购买 nike

假设我正在处理一个 xsd:simpleType,它是一个字符串,需要具有特定的字符集和特定的最大长度,类似于以下代码:

<xsd:simpleType name="MyType">
<xsd:restriction base="xsd:string">
<xsd:pattern value="[0-9]" />
<xsd:maxLength value="36" />
</xsd:restriction>
</xsd:simpleType>

所以我的 xsd 类型将是一个只有数字和最多 36 个字符的字符串。我的问题是 xsd:pattern 和 xsd:maxLength(或任何其他类似的标签,如 minLength)是否可以一起工作。我的直觉是没有;仅在 xsd:restriction 中的基于模式或基于长度的 xsd 元素。因此,我必须在模式中添加最大长度限制。

请注意,我确实通过在 Java 上解码 xml 进行了测试,但验证失败。无论如何,我正在寻找的是两种信息,即模式和 maxLength 可以如何以及是否可以一起工作。

最佳答案

限制的所有方面都应用于类型。这意味着您上面的定义确实定义了一个具有给定模式且长度限制为 36 个字符的类型。

这是来自 the spec 的相关条目:

Schema Component Constraint: Simple Type Restriction (Facets) For a simple type definition (call it R) to restrict another simple type definition (call it B) with a set of facets (call this S) all of the following must be true:

1 The {variety} of R is the same as that of B.

2 If {variety} is atomic, the {primitive type definition} of R is the same as that of B.

3 The {facets} of R are the {facets} of B ·overlaid· with S.



所有方面都是独立应用的,只有满足所有限制的值才会被认为是有效的。这还包括对给定类型派生自的类型施加的任何限制。

因此,可以创建一个总是无法通过验证的 simpleType - 如果您的 pattern强制该值必须为 37 个字符长,并且 maxLength是 36,那么这些方面中至少有一个将始终失败。

也就是说,多个 pattern给定类型中的元素被视为替代品,(参见: "pattern" in "Constraining Facets")

关于regex - xsd:simpleType: xsd:pattern 和 xsd:maxLength 可以一起工作吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7851845/

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