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

Indicadores XSD


Podemos controlar CÓMO se van a utilizar los elementos en los documentos con indicadores.


Indicadores

Hay siete indicadores:

Indicadores de orden:

  • Todo
  • Elección
  • Secuencia

Indicadores de ocurrencia:

  • maxOcurre
  • minOcurre

Indicadores de grupo:

  • Nombre del grupo
  • nombre del grupo de atributos

Indicadores de orden

Los indicadores de orden se utilizan para definir el orden de los elementos.

Todo indicador

El indicador <todos> especifica que los elementos secundarios pueden aparecer en cualquier orden y que cada elemento secundario debe aparecer solo una vez:

<xs:element name="person">
  <xs:complexType>
    <xs:all>
      <xs:element name="firstname" type="xs:string"/>
      <xs:element name="lastname" type="xs:string"/>
    </xs:all>
  </xs:complexType>
</xs:element>

Nota: Al usar el indicador <all>, puede establecer el indicador <minOccurs> en 0 o 1 y el indicador <maxOccurs> solo se puede establecer en 1 (<minOccurs> y <maxOccurs> se describen más adelante).

Indicador de elección

El indicador <choice> especifica que puede ocurrir un elemento hijo u otro:

<xs:element name="person">
  <xs:complexType>
    <xs:choice>
      <xs:element name="employee" type="employee"/>
      <xs:element name="member" type="member"/>
    </xs:choice>
  </xs:complexType>
</xs:element>

Indicador de secuencia

El indicador <sequence> especifica que los elementos secundarios deben aparecer en un orden específico:

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


Indicadores de ocurrencia

Los indicadores de ocurrencia se utilizan para definir con qué frecuencia puede ocurrir un elemento.

Nota: Para todos los indicadores de "Orden" y "Grupo" (cualquiera, todos, elección, secuencia, nombre de grupo y referencia de grupo), el valor predeterminado para maxOccurs y minOccurs es 1.

Indicador maxOccurs

El indicador <maxOccurs> especifica el número máximo de veces que puede ocurrir un elemento:

<xs:element name="person">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="full_name" type="xs:string"/>
      <xs:element name="child_name" type="xs:string" maxOccurs="10"/>
    </xs:sequence>
  </xs:complexType>
</xs:element>

El ejemplo anterior indica que el elemento "child_name" puede aparecer un mínimo de una vez (el valor predeterminado para minOccurs es 1) y un máximo de diez veces en el elemento "persona".

Indicador minOccurs

El indicador <minOccurs> especifica el número mínimo de veces que puede ocurrir un elemento:

<xs:element name="person">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="full_name" type="xs:string"/>
      <xs:element name="child_name" type="xs:string"
      maxOccurs="10" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
</xs:element>

El ejemplo anterior indica que el elemento "child_name" puede aparecer un mínimo de cero veces y un máximo de diez veces en el elemento "persona".

Sugerencia: para permitir que un elemento aparezca un número ilimitado de veces, use la instrucción maxOccurs="unbounded":

Un ejemplo de trabajo:

Un archivo XML llamado "Mifamilia.xml":

<?xml version="1.0" encoding="UTF-8"?>

<persons xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="family.xsd">

<person>
  <full_name>Hege Refsnes</full_name>
  <child_name>Cecilie</child_name>
</person>

<person>
  <full_name>Tove Refsnes</full_name>
  <child_name>Hege</child_name>
  <child_name>Stale</child_name>
  <child_name>Jim</child_name>
  <child_name>Borge</child_name>
</person>

<person>
  <full_name>Stale Refsnes</full_name>
</person>

</persons>

El archivo XML anterior contiene un elemento raíz llamado "personas". Dentro de este elemento raíz hemos definido tres elementos "persona". Cada elemento "persona" debe contener un elemento "full_name" y puede contener hasta cinco elementos "child_name".

Aquí está el archivo de esquema "family.xsd":

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">

<xs:element name="persons">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="person" maxOccurs="unbounded">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="full_name" type="xs:string"/>
            <xs:element name="child_name" type="xs:string"
            minOccurs="0" maxOccurs="5"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
</xs:element>

</xs:schema>

Indicadores de grupo

Los indicadores de grupo se utilizan para definir conjuntos de elementos relacionados.

Grupos de elementos

Los grupos de elementos se definen con la declaración de grupo, así:

<xs:group name="groupname">
...
</xs:group>

Debe definir un elemento todo, opción o secuencia dentro de la declaración del grupo. El siguiente ejemplo define un grupo llamado "persongroup", que define un grupo de elementos que deben ocurrir en una secuencia exacta:

<xs:group name="persongroup">
  <xs:sequence>
    <xs:element name="firstname" type="xs:string"/>
    <xs:element name="lastname" type="xs:string"/>
    <xs:element name="birthday" type="xs:date"/>
  </xs:sequence>
</xs:group>

Después de haber definido un grupo, puede hacer referencia a él en otra definición, como esta:

<xs:group name="persongroup">
  <xs:sequence>
    <xs:element name="firstname" type="xs:string"/>
    <xs:element name="lastname" type="xs:string"/>
    <xs:element name="birthday" type="xs:date"/>
  </xs:sequence>
</xs:group>

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

<xs:complexType name="personinfo">
  <xs:sequence>
    <xs:group ref="persongroup"/>
    <xs:element name="country" type="xs:string"/>
  </xs:sequence>
</xs:complexType>

Grupos de atributos

Los grupos de atributos se definen con la declaración atributoGroup, así:

<xs:attributeGroup name="groupname">
...
</xs:attributeGroup>

El siguiente ejemplo define un grupo de atributos llamado "personattrgroup":

<xs:attributeGroup name="personattrgroup">
  <xs:attribute name="firstname" type="xs:string"/>
  <xs:attribute name="lastname" type="xs:string"/>
  <xs:attribute name="birthday" type="xs:date"/>
</xs:attributeGroup>

Después de haber definido un grupo de atributos, puede hacer referencia a él en otra definición, como esta:

<xs:attributeGroup name="personattrgroup">
  <xs:attribute name="firstname" type="xs:string"/>
  <xs:attribute name="lastname" type="xs:string"/>
  <xs:attribute name="birthday" type="xs:date"/>
</xs:attributeGroup>

<xs:element name="person">
  <xs:complexType>
    <xs:attributeGroup ref="personattrgroup"/>
  </xs:complexType>
</xs:element>