私はXMLスキーマの操作にかなり慣れていないので、これが私自身が信じているよりも些細なことである場合は、私の無能さを許してください。
リストから1つ以上の空白で区切られた文字列値を含む必要がある必須属性を作成しようとしています。このリストは、4つの典型的なHTTPリクエストメソッドです。get
、、、、および。post
_put
delete
したがって、有効な要素には次のものが含まれます。
<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 get
post post post
と空白がない(またはなどgetpost
postputdelete
)を除いて、どちらが機能しますか
編集:
これを少し遊んだ後、私はアイデアを思いつきました:すべての可能なシーケンスの列挙。ありがたいことに、このリストは(当面は)4つの通常の転送方法、、、、、に固定されているので、次のように考えました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>
これが良い考えではない理由を誰かが見ることができますか?