Olá a todos!
Preciso criar um Complex Type com dois atributos: responseCode e responseMessage. Ambos devem ser String e devem ser obrigatórios. Daí me veio a dúvida: Qual a diferença efetiva entre:
<xs:complexType name="responseObject">
<xs:sequence>
<xs:element name="responseCode" type="xs:string" minOccurs="1" maxOccurs="1"/>
<xs:element name="responseMessage" type="xs:string" minOccurs="1" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
e isso
<xs:complexType name="responseObject">
<xs:attribute name="responseCode " type="xs:string" use="required"/>
<xs:attribute name="responseMessage " type="xs:string" use="required"/>
</xs:complexType>
?
Grato,
Guilherme
A diferença é que você pode ter vários elementos aninhados do mesmo tipo:
<biblioteca>
<livro />
<livro />
<livro />
<livro />
</biblioteca>
Além disso, a ordem dos atributos não pode ser definida.
Olá esmiralha, muito obrigado pela rapidez da resposta.
Então efetivamente não há diferença? Qual seria mais adequado no meu caso? 
[quote=guilhermealcantara]Olá esmiralha, muito obrigado pela rapidez da resposta.
Então efetivamente não há diferença? Qual seria mais adequado no meu caso?
[/quote]
Cara, se o texto for longo, eu acho mais natural usar elemento. Uma mensagem pode ser longa, ter quebra de linha, caracteres especiais, etc. Eu recomendaria elementos, nesse caso.
Aproveitando o gancho dessa dúvida, eu consigo deixar um element como obrigatório da mesma forma que o attribute? Um use=“required”…por exemplo.
Obrigado amigos.