squema @XML; múltiplo de uma lista de valores de atributos válidos

Eu sou razoavelmente novo em trabalhar com esquemas XML, então desculpe minha incompetência se isso for mais trivial do que eu próprio acredito que deve ser.

Estou tentando criar um atributo necessário que deve conter 1 ou mais valores de seqüência de caracteres separados por espaço em branco de uma lista. A lista é os 4 métodos de solicitação HTTP típicos;get, post, put edelete.

Os elementos válidos incluem:

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

Whereas elementos inválidos incluem:

<rule methods="get get" />
<rule methods="foobar post" />
<rule methods="get;post;put" />

Tentei enganar as enumerações e o comprimento, mas não acredito que estou entendendo o que preciso fazer ou, nesse caso, se for de fato possível, embora pareça que deveria ser)

Aqui é onde estou agora, graças a @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>

O que funciona, exceto repetição tal comoget get oupost post post) e espaço em branco ausente tal comogetpost oupostputdelete)

Edita:

Depois de brincar um pouco com isso, tive uma idéia: uma enumeração de todas as sequências possíveis. Felizmente, esta lista é por enquant) fixado nos quatro métodos de transporte habituais,get, post, put edelete, Entao eu deduzi

<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>

Alguém pode ver uma razão pela qual isso irianã ser uma boa ideia?

questionAnswers(5)

yourAnswerToTheQuestion