gpt4 book ai didi

XSD 长度限制选项

转载 作者:行者123 更新时间:2023-12-04 16:58:50 25 4
gpt4 key购买 nike

这是有效的,但使用模式和 maxLength 来复制对长度的约束以强制执行它:

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

单独的模式就足够了:
    <xsd:restriction base="xsd:string">
<xsd:pattern value="[0-9]{0,10}" />
</xsd:restriction>

或者可以简化模式,我们将依赖于 maxLength:
    <xsd:restriction base="xsd:string">
<xsd:pattern value="[0-9]*" />
<xsd:maxLength value="10" />
</xsd:restriction>

问题:

选择一个而不是另一个是否有已知的性能影响?
如果两者都提供,任何给定的解析器会在编译模式之前首先检查 len 并短路验证吗?
或者在任何情况下都会被检查?
它是否因解析器而异?

我承认这里的性能差异可能很小。我还希望正则表达式引擎也可以短路长度限制——但这比我可能关心的要深得多。

撇开性能不谈,我认为我更喜欢将所有内容都放在模式中,但这可能反射(reflect)了我对正则表达式的舒适程度,而不是典型的最佳实践。

谢谢!

最佳答案

您的代码是数字还是数字字符串?我的意思是允许前导零吗?如果它们不是,您可以通过限制 xsd:integer 的最大长度或最大值来使您的数据类型更简单,例如:

<xsd:restriction base="xsd:integer"> 
<xsd:maxLength value="10" />
</xsd:restriction>

或者
<xsd:restriction base="xsd:integer"> 
<xsd:maxExclusive value="10000000000"/>
</xsd:restriction>

这将是描述它的最简单方法,并且可能会更快,因为您现在正在进行整数检查,而不是正则表达式检查。

关于XSD 长度限制选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12941030/

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