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


Un elemento complejo contiene otros elementos y/o atributos.


¿Qué es un elemento complejo?

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

Hay cuatro clases de elementos complejos:

  • elementos vacios
  • elementos que contienen solo otros elementos
  • elementos que contienen solo texto
  • elementos que contienen tanto otros elementos como texto

Nota: ¡Cada uno de estos elementos también puede contener atributos!


Ejemplos de elementos complejos

Un elemento XML complejo, "producto", que está vacío:

<product pid="1345"/>

Un elemento XML complejo, "empleado", que contiene solo otros elementos:

<employee>
  <firstname>John</firstname>
  <lastname>Smith</lastname>
</employee>

Un elemento XML complejo, "comida", que contiene solo texto:

<food type="dessert">Ice cream</food>

Un elemento XML complejo, "descripción", que contiene elementos y texto:

<description>
It happened on <date lang="norwegian">03.03.99</date> ....
</description>


Cómo definir un elemento complejo

Mire este elemento XML complejo, "empleado", que contiene solo otros elementos:

<employee>
  <firstname>John</firstname>
  <lastname>Smith</lastname>
</employee>

Podemos definir un elemento complejo en un esquema XML de dos maneras diferentes:

1. El elemento "empleado" se puede declarar directamente al nombrar el elemento, así:

<xs:element name="employee">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="firstname" type="xs:string"/>
      <xs:element name="lastname" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>
</xs:element>

Si usa el método descrito anteriormente, solo el elemento "empleado" puede usar el tipo complejo especificado. Tenga en cuenta que los elementos secundarios, "firstname" y "lastname", están rodeados por el indicador <sequence>. Esto significa que los elementos secundarios deben aparecer en el mismo orden en que se declaran. Aprenderá más sobre los indicadores en el capítulo Indicadores XSD.

2. El elemento "empleado" puede tener un atributo de tipo que haga referencia al nombre del tipo complejo a utilizar:

<xs:element name="employee" type="personinfo"/>

<xs:complexType name="personinfo">
  <xs:sequence>
    <xs:element name="firstname" type="xs:string"/>
    <xs:element name="lastname" type="xs:string"/>
  </xs:sequence>
</xs:complexType>

Si utiliza el método descrito anteriormente, varios elementos pueden hacer referencia al mismo tipo complejo, como este:

<xs:element name="employee" type="personinfo"/>
<xs:element name="student" type="personinfo"/>
<xs:element name="member" type="personinfo"/>

<xs:complexType name="personinfo">
  <xs:sequence>
    <xs:element name="firstname" type="xs:string"/>
    <xs:element name="lastname" type="xs:string"/>
  </xs:sequence>
</xs:complexType>

También puede basar un tipo complejo en un tipo complejo existente y agregar algunos elementos, como este:

<xs:element name="employee" type="fullpersoninfo"/>

<xs:complexType name="personinfo">
  <xs:sequence>
    <xs:element name="firstname" type="xs:string"/>
    <xs:element name="lastname" type="xs:string"/>
  </xs:sequence>
</xs:complexType>

<xs:complexType name="fullpersoninfo">
  <xs:complexContent>
    <xs:extension base="personinfo">
      <xs:sequence>
        <xs:element name="address" type="xs:string"/>
        <xs:element name="city" type="xs:string"/>
        <xs:element name="country" type="xs:string"/>
      </xs:sequence>
    </xs:extension>
  </xs:complexContent>
</xs:complexType>