Tutorial XML

INICIO XML Introducción XML XML Cómo utilizar Árbol XML Sintaxis XML Elementos XML Atributos XML Espacios de nombres XML Pantalla XML Solicitud Http XML Analizador XML DOM XML XPath XML XML XSLT XQuery XML Enlace X XML Validador XML DTD XML Esquema XML Servidor XML Ejemplos XML Cuestionario XML Certificado XML

XML-AJAX

AJAX Introducción AJAX XMLHttp Solicitud AJAX Respuesta AJAX Archivo XML AJAX AJAXPHP Ajax ASP Base de datos AJAX Aplicaciones AJAX Ejemplos de AJAX

DOM XML

DOM Introducción Nodos DOM Acceso DOM Información del nodo DOM Lista de nodos DOM Atravesando DOM Navegación DOM DOM obtener valores Nodos de cambio de DOM Eliminar nodos DOM Nodos de reemplazo de DOM DOM Crear nodos Agregar nodos DOM Nodos de clonación de DOM Ejemplos de DOM

Tutorial XPath

Introducción a XPath Nodos XPath Sintaxis XPath Ejes XPath Operadores XPath Ejemplos de XPath

Tutorial XSLT

XSLT Introducción Idiomas XSL Transformación XSLT XSLT <plantilla> XSLT <valor-de> XSLT <para-cada> XSLT <ordenar> XSLT <si> XSLT <elegir> Aplicar XSLT XSLT en el cliente XSLT en el servidor XSLT Editar XML Ejemplos de XSLT

Tutorial de XQuery

Introducción a XQuery Ejemplo de XQuery XQuery FLWOR XQuery HTML Términos de XQuery Sintaxis XQuery XQuery Agregar Seleccionar XQuery Funciones XQuery

DTD XML

Introducción a DTD Bloques de construcción DTD Elementos DTD Atributos DTD Elementos DTD vs Attr Entidades DTD Ejemplos de DTD

Esquema XSD

XSD Introducción XSD Cómo XSD <esquema> Elementos XSD Atributos XSD Restricciones XSD

Complejo XSD

Elementos XSD XSD vacío Solo elementos XSD Solo texto XSD XSD mixto Indicadores XSD XSD <cualquiera> XSD <cualquieratributo> Sustitución XSD Ejemplo XSD

Datos XSD

Cadena XSD Fecha XSD XSD Numérico Miscelánea XSD Referencia XSD

Servicios web

Servicios XML XML WSDL JABÓN XML XML RDF RSS XML

Referencias

Tipos de nodos DOM Nodo DOM Lista de nodos DOM DOM NamedNodeMap Documento DOM Elemento DOM Atributo DOM Texto DOM DOM CDATA Comentario DOM DOM XMLHttpSolicitud Analizador DOM Elementos XSLT Funciones XSLT/XPath

Elementos XML frente a atributos


En XML, no hay reglas sobre cuándo usar atributos y cuándo usar elementos secundarios.


Uso de Elementos vs. Atributos

Los datos se pueden almacenar en elementos secundarios o en atributos.

Echa un vistazo a estos ejemplos:

<person sex="female">
  <firstname>Anna</firstname>
  <lastname>Smith</lastname>
</person>

<person>
  <sex>female</sex>
  <firstname>Anna</firstname>
  <lastname>Smith</lastname>
</person>

En el primer ejemplo, el sexo es un atributo. En el último, el sexo es un elemento infantil. Ambos ejemplos proporcionan la misma información.

No hay reglas sobre cuándo usar atributos y cuándo usar elementos secundarios. Mi experiencia es que los atributos son útiles en HTML, pero en XML debe intentar evitarlos. Use elementos secundarios si la información se siente como datos.


mi camino favorito

Me gusta almacenar datos en elementos secundarios.

Los siguientes tres documentos XML contienen exactamente la misma información:

En el primer ejemplo se utiliza un atributo de fecha:

<note date="12/11/2002">
  <to>Tove</to>
  <from>Jani</from>
  <heading>Reminder</heading>
  <body>Don't forget me this weekend!</body>
</note>

En el segundo ejemplo se utiliza un elemento de fecha:

<note>
  <date>12/11/2002</date>
  <to>Tove</to>
  <from>Jani</from>
  <heading>Reminder</heading>
  <body>Don't forget me this weekend!</body>
</note>

Se usa un elemento de fecha expandido en el tercero: (ESTE ES MI FAVORITO):

<note>
  <date>
    <day>12</day>
    <month>11</month>
    <year>2002</year>
  </date>
  <to>Tove</to>
  <from>Jani</from>
  <heading>Reminder</heading>
  <body>Don't forget me this weekend!</body>
</note>


¿Evitar el uso de atributos?

¿Debe evitar el uso de atributos?

Algunos de los problemas con los atributos son:

  • los atributos no pueden contener múltiples valores (los elementos secundarios sí pueden)
  • los atributos no son fácilmente expandibles (para futuros cambios)
  • los atributos no pueden describir estructuras (los elementos secundarios sí pueden)
  • los atributos son más difíciles de manipular por el código del programa
  • los valores de atributo no son fáciles de probar contra un DTD

Si usa atributos como contenedores de datos, termina con documentos que son difíciles de leer y mantener. Trate de usar elementos para describir datos. Use atributos solo para proporcionar información que no sea relevante para los datos.

No termines así (no es así como se debe usar XML):

<note day="12" month="11" year="2002"
to="Tove" from="Jani" heading="Reminder"
body="Don't forget me this weekend!">
</note>

Una excepción a mi regla de atributo

Las reglas siempre tienen excepciones.

Mi regla sobre los atributos tiene una excepción:

A veces asigno referencias de ID a elementos. Estas referencias de ID se pueden usar para acceder a elementos XML de la misma manera que los atributos NAME o ID en HTML. Este ejemplo demuestra esto:

<messages>
<note id="p501">
  <to>Tove</to>
  <from>Jani</from>
  <heading>Reminder</heading>
  <body>Don't forget me this weekend!</body>
</note>

<note id="p502">
  <to>Jani</to>
  <from>Tove</from>
  <heading>Re: Reminder</heading>
  <body>I will not!</body>
</note>
</messages>

El ID en estos ejemplos es solo un contador, o un identificador único, para identificar las diferentes notas en el archivo XML y no es parte de los datos de la nota.

Lo que estoy tratando de decir aquí es que los metadatos (datos sobre datos) deben almacenarse como atributos, y que los datos en sí mismos deben almacenarse como elementos.