[XML / XSD] Diferença entre usar ATRIBUTE e ELEMENT

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? :slight_smile:

ve se ajuda ai:
http://www.w3schools.com/schema/schema_simple_attributes.asp
e
http://www.w3schools.com/schema/schema_simple.asp

[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? :slight_smile: [/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.