gpt4 book ai didi

regex - xsd:SimpleType:如何将属性限制为特定值和正则表达式值

转载 作者:行者123 更新时间:2023-12-02 00:46:02 25 4
gpt4 key购买 nike

我有一个可以是任何字符串的属性,但如果它有开始和结束括号“^[.*]$” - 它必须只是以下特定值之一:

"[EVENT]"  

"[PROTOCOL]"

因此,"[EVENT]""[PROTOCOL]""SomeString" - 是正确的,但是 "[SomeString]” - 不是。

我怎样才能实现这个目标?

最佳答案

使用 xs:simpleType 和正则表达式来限制基本 xs:string 类型。您可以拥有多个 xs:pattern 以保持替代模式的简单。该元素必须与其中一种模式匹配,否则验证将失败。由于模式是正则表达式,因此在用作文字时必须对“[”和“]”等特殊字符进行转义。

XSD:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="root">
<xs:complexType>
<xs:sequence>
<xs:element name="elem" type="myElemType" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>

<xs:complexType name="myElemType">
<xs:attribute name="attrib" type="myAttribType"/>
</xs:complexType>

<xs:simpleType name="myAttribType">
<xs:restriction base="xs:string">
<xs:pattern value="\[EVENT\]"/><!-- "[EVENT]": okay -->
<xs:pattern value="\[PROTOCOL\]"/><!-- "[PROTOCOL]": okay -->
<xs:pattern value="[^\[].*"/><!-- Starts with anything but "[": okay -->
</xs:restriction>
</xs:simpleType>
</xs:schema>

XML:

<root>
<elem attrib="[EVENT]"/>
<elem attrib="[PROTOCOL]"/>
<elem attrib="SomeString"/>
<elem attrib="SomeString]"/>
<elem attrib=" [SomeString] "/>
<!-- All the above are okay; the ones below fail validation -->
<elem attrib="[SomeString]"/>
<elem attrib="[SomeString"/>
</root>

根据您的喜好修改正则表达式,例如,使用前导和/或尾随空格来使示例失败。

编辑以反射(reflect)OP的评论,即“[SomeString”也应该无效。

关于regex - xsd:SimpleType:如何将属性限制为特定值和正则表达式值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26048523/

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