2009-11-13 90 views
11

Soy nuevo en XSD, y estoy bastante confundido en cuanto a cuándo usar el atributo y cuándo usar el elemento?XSD: diferencia entre Elemento y Atributo

¿Por qué no podemos especificar minOccurs y maxOccurs en el atributo?

Además, ¿por qué no podemos especificar use = "required" en el elemento?

+0

duplicado Posible de [atributo XML vs elemento XML] (http://stackoverflow.com/questions/33746/xml-attribute-vs-xml-element) – kjhughes

Respuesta

25

Un elemento es un elemento XML - una etiqueta de apertura, parte del contenido, una etiqueta de cierre - que son los componentes básicos de un documento XML:

<test>someValue</test> 

Aquí, "prueba" sería un elemento.

atributos es una información adicional en una etiqueta - es una información adicional o un "complemento" en un elemento, pero nunca puede existir solo:

<test id="5">somevalue</test> 

"id" es un atributo.

No puede tener múltiples atributos del mismo nombre en una sola etiqueta -> minOccurs/maxOccurs no tiene sentido. Puede definir requerido (o no) para un atributo; cualquier otra cosa no tiene sentido.

Los elementos se definen por su aparición dentro de tipos complejos, p. Ej. si usted tiene un tipo complejo con un <xs:sequence> interior - está definiendo que todos los elementos deben estar presentes y deben los en este orden en particular:

<xs:complexType name="SomeType"> 
    <xs:sequence>  
     <xs:element name="Element1" type="xs:string" /> 
     <xs:element name="Element2" type="xs:string" /> 
    </xs:sequence> 
</xs:complexType> 

dentro de un elemento de ese tipo, los sub-elementos "element1" y "Element2" son obligatorios y deben aparecer en este orden; no es necesario "obligatorio" o no (como con los atributos). Si un elemento es requerido o no se define mediante el uso de minOccurs y maxOccurs; ambos son = 1 por defecto, p. el elemento debe ocurrir, y solo puede ocurrir una vez. Ajustando esas configuraciones, puede definir que un elemento sea opcional (minOccurs = 0), o permitir que se muestre varias veces (maxOccurs> 1).

Recomiendo encarecidamente que consulte el W3Schools Tutorial on XML Schema y conozca más sobre el esquema XML.

Marc

3
<element myAttribute="value"> 
    <subElement /> 
    <subElement anotherAttribute="this is an attribute's value">Element value</subElement> 
</element> 

No se puede tener más de un atributo con el mismo nombre en XML, por lo tanto, no se puede utilizar minOcurrencias y maxOcurrencias para los atributos.

No necesita use = "required" para elementos porque en su lugar puede tener minOccurs = "1".

Es su elección cuándo usar los atributos y cuándo usar los elementos. Aquí hay algunas pautas: http://www.ibm.com/developerworks/xml/library/x-eleatt.html

3

Un elemento es un nodo XML, y puede contener otros nodos o atributos. Puede ser un tipo simple o un tipo complejo. Es una entidad XML.

Un atributo es un descriptor. No puede contener nada y solo puede ser un tipo simple.

Eche un vistazo a this. Por supuesto, puede simplemente google algo como "elemento XML vs atributo"

+0

A diferencia de las otras respuestas, que parecen tratar de explicar * cómo * definir un elemento/atributo, estás en el punto. – dstibbe

4

Ejemplo: Formato XSD

<xs:complexType name="contactInformation"> 
    <xs:all> 
     <xs:element name="firstName" type="xs:string" minOccurs="0"/> 
     <xs:element name="workCountryId" type="xs:long" minOccurs="0"/> 
    </xs:all> 
    <xs:attribute name="id" type="xs:long"/> 
</xs:complexType> 

formato XML

<contactInformation id=100> 
    <firstname>VELU</firstname> 
    <workCountryId>120</workCountryId> 
</contactInformation> 


attribute es opcional por defecto. Para especificar que se requiere el atributo, use el atributo use:

p. <xs:attribute name="id" type="xs:long" use="required"/>

Más sobre attributes y elements.

Un elemento complexType es un elemento XML que contiene otros elementos y/o atributos.

El elemento all especifica que los elementos secundarios pueden aparecer en cualquier orden y que cada elemento hijo puede ocurrir cero o una vez.

maxOccurs Opcional. Especifica la cantidad máxima de veces que puede ocurrir el elemento. El valor debe ser 1.

minOccurs opcional. Especifica el número mínimo de veces que el elemento puede ocurrir. El valor puede ser 0 o 1. El valor predeterminado es 1

Cuestiones relacionadas