gpt4 book ai didi

xsd - XML模式;有效属性值列表中的倍数

转载 作者:行者123 更新时间:2023-12-04 16:29:48 26 4
gpt4 key购买 nike

我对使用XML模式是相当陌生的,因此,如果这种能力比我本人认为的要微不足道,请原谅我的无能。

我正在尝试创建一个必需属性,该属性必须包含一个或多个列表中用空格分隔的字符串值。该列表是4种典型的HTTP请求方法。 getpostputdelete

因此有效的元素包括:

<rule methods="get" />
<rule methods="get post" />
<rule methods="post put delete" />

无效的元素包括:
<rule methods="get get" />
<rule methods="foobar post" />
<rule methods="get;post;put" />

我尝试用枚举和长度进行欺骗,但是我不相信我正在理解我需要做的事情(或者就此而言,是否确实有可能,尽管似乎应该这样做)

感谢@tdrury,这就是我现在的位置:
<xs:attribute name="methods" use="required">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:whiteSpace value="collapse" />
<xs:pattern value="(?:(?:get|post|put|delete)\s?){1,4}" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>

除了重复(例如 get getpost post post)和缺少空白(例如 getpostpostputdelete)的代码外,其他方法都有效

编辑:

经过一番尝试之后,我想到了一个主意:对所有可能的序列进行枚举。幸运的是,此列表(暂时)已固定为四种常用的传输方法 getpostputdelete,因此我想出了:
<xs:restriction base="xs:string">
<xs:whiteSpace value="collapse" />
<xs:enumeration value="delete" />
<xs:enumeration value="put" />
<xs:enumeration value="put delete" />
<xs:enumeration value="post" />
<xs:enumeration value="post delete" />
<xs:enumeration value="post put" />
<xs:enumeration value="post put delete" />
<xs:enumeration value="get" />
<xs:enumeration value="get delete" />
<xs:enumeration value="get put" />
<xs:enumeration value="get put delete" />
<xs:enumeration value="get post" />
<xs:enumeration value="get post delete" />
<xs:enumeration value="get post put" />
<xs:enumeration value="get post put delete" />
</xs:restriction>

谁能看到一个不是一个好主意的理由?

最佳答案

基本问题也可以通过枚举来解决:

<xs:attribute name="methods" use="required">
<xs:simpleType>
<xs:restriction>
<xs:simpleType>
<xs:list>
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="get"/>
<xs:enumeration value="post"/>
<xs:enumeration value="put"/>
<xs:enumeration value="delete"/>
</xs:restriction>
</xs:simpleType>
</xs:list>
</xs:simpleType>
<xs:minLength value="1"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>

不幸的是,这与 <xs:pattern>解决方案具有相同的限制,并且无法验证列表中的每个 token 都是唯一的。但是,它确实解决了空白问题( getpost将被拒绝)。

关于xsd - XML模式;有效属性值列表中的倍数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8688864/

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