xsd – XML模式;有效属性值列表中的多个
发布时间:2020-12-16 23:25:52 所属栏目:百科 来源:网络整理
导读:我是使用 XML模式的新手,所以请原谅我的无能,如果这比我自己认为必须的更微不足道. 我正在尝试创建一个必需的属性,该属性必须包含一个或多个列表中以空格分隔的字符串值.该列表是4种典型的HTTP请求方法;获取,发布,放置和删除. 所以有效的元素包括: rule met
我是使用
XML模式的新手,所以请原谅我的无能,如果这比我自己认为必须的更微不足道.
我正在尝试创建一个必需的属性,该属性必须包含一个或多个列表中以空格分隔的字符串值.该列表是4种典型的HTTP请求方法;获取,发布,放置和删除. 所以有效的元素包括: <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> 哪个有效,除了重复(如获取或发布帖子后)和缺少空格(如getpost或postputdelete) 编辑: 在玩了一下之后,我提出了一个想法:列举所有可能的序列.值得庆幸的是,这个列表(暂时)固定为四种常用的传输方法,get,post,put和delete,所以我想: <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>具有相同的限制.解决方案并且无法验证列表中的每个标记是否唯一.然而,它确实解决了空白问题(getpost将被拒绝). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |