gpt4 book ai didi

xsd 断言中的正则表达式仅限于元素值的开头

转载 作者:行者123 更新时间:2023-12-05 06:23:44 25 4
gpt4 key购买 nike

我在 xsd 模式 1.1 中创建了包含正则表达式的断言。这些表达式应该从元素值的开头排除罗马数字和后面有句点和空格的数字。根据我的阅读,我不需要将正则表达式锚定在 xsd 模式 b/c 中,它应该已经适用于开始(我可能误解了这一点)。我无法将正则表达式限制在开头。

XSD:

   <xs:element name="node123">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:assertion test="not(matches($value, '[\d].*\.\s.|[I].*\.\s.*|[V].*\.\s.*|[X].*\.\s.*|[L].*\.\s.*|[C].*\.\s.*'))"/>
<xs:assertion test="not(starts-with($value, '-'))"/>
<xs:assertion test="not(starts-with($value, '–'))"/>
<xs:assertion test="not(starts-with($value, '—'))"/>
</xs:restriction>
</xs:simpleType>
</xs:element>

误报是:

Fid 的困惑。 R.克里姆。 Z

发货货到付款

我不能将 starts-with 与根本不起作用的数字表达式 b/c 一起使用。但是,当我将 starts-with 与其他表达式一起使用时,它不适用于整个元素值。

有没有办法将表达式限制为仅第一个单词或元素的开头?

最佳答案

注意事项:

  1. xsd:pattern 方面中的 XSD 正则表达式在开始时隐式锚定 (^)并结束 ($)。

  2. xsd:assertion 中使用的 XPath 正则表达式不是隐式锚定。

鉴于上述情况,正则表达式 provided by @WiktorStribiżew (连同他尝试添加 ^ 的建议)是您排除看起来像阿拉伯数字或罗马数字的字符串的合理近似值:

  <xs:element name="node123">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:assertion test="not(matches($value, '^([-–—]|[0-9IVXLC]+\.\s)'))"/>
</xs:restriction>
</xs:simpleType>
</xs:element>

关于xsd 断言中的正则表达式仅限于元素值的开头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58122713/

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