resumen xml v0.1

21
Resumen Xml v0.1 Índice de contenido Síntaxis del manual ................................................................................................................................................ 2 Extensive Marckup Language (XML) ................................................................................................................... 2 XML: La Etiqueta XML ................................................................................................................................... 2 XML: Etiquetas Xml como contenedores de información ............................................................................... 2 El Documento XML .............................................................................................................................................. 3 DTD (Definición de documento XML) ................................................................................................................. 4 XPath (Lenguaje de acceso a elemento/s Xml) ..................................................................................................... 5 XSD: XML Schema (Definición de esquema XML) ............................................................................................ 6 XSD: Definición de un documento de esquema xsd ........................................................................................ 6 XSD: Asociación de un esquema en un documento xml (a partir de una etiqueta) .......................................... 6 XSD: Elemento etiqueta. .................................................................................................................................. 6 XSD: Tipos de datos básicos xsd ...................................................................................................................... 7 XSD: Tipos de datos predefinidos .................................................................................................................... 7 XSD: Ámbito de tipos de datos ........................................................................................................................ 7 XSD: Definición de contenido en tipos de datos predefinidos ......................................................................... 8 XSD: Herencia y mezcla de datos predefinidos ............................................................................................... 8 XSD: Restricciones aplicables a los contenidos. .............................................................................................. 8 XSLT Lenguaje de transformación de datos xml ................................................................................................ 10 XSLT: El Documento de transformación ........................................................................................................ 10 XSLT: Plantillas de transformación ................................................................................................................ 10 XSLT: Etiquetas de Plantillas de transformación ........................................................................................... 11 XSLT: Funciones ............................................................................................................................................. 11 XSLT: Localización ........................................................................................................................................ 12 XQuery (Lenguaje unificado de consultas sobre datos Xml). ................................................................................. 14 Procesador XQuery gratuito basado en xerces (Zorba): http://www.zorba-xquery.com/html/index .................. 14 Conceptos básicos ............................................................................................................................................... 14 Espacio de nombres ............................................................................................................................................. 14 Operadores ........................................................................................................................................................... 14 Sentencia de código Xquery y tipos de datos soportados (<tdato>) ................................................................... 14 Variables .............................................................................................................................................................. 14 Secuencias ................................................................................................................................................................ 15 Funciones ................................................................................................................................................................. 15 Instrucciones de control de flujo .............................................................................................................................. 15 Consulta XQuery “FLWOR” (For Let Where Order Return): ............................................................................ 15 Funciones XQuery ............................................................................................................................................... 15 Tratamiento informático de archivos xml. .......................................................................................................... 17 StAX (Streaming Api for Xml) Tratamiento secuencial (flujo) de documentos xml. .................................... 17 SAX (Simple Api for xml) Tratamiento secuencial (eventos) de documentos xml. ....................................... 18 DOM (Document Object Model) Tratamiento aleatorio de documentos xml. ............................................... 19 XmlBinding (Aplicaciones de mapeo Elemento/s Xml - Clase/s nativa) ....................................................... 21 Autor: José Manuel Oyola González, licencia creative commons Ir a Indice Página 1/21

Upload: jmoyola

Post on 15-Jan-2016

234 views

Category:

Documents


1 download

DESCRIPTION

Resumen Xml, Xsd, Xsl, Xpath y XQuery

TRANSCRIPT

Page 1: Resumen XML v0.1

Resumen Xml v0.1

Índice de contenidoSíntaxis del manual ................................................................................................................................................ 2Extensive Marckup Language (XML) ................................................................................................................... 2

XML: La Etiqueta XML ................................................................................................................................... 2XML: Etiquetas Xml como contenedores de información ............................................................................... 2

El Documento XML .............................................................................................................................................. 3DTD (Definición de documento XML) ................................................................................................................. 4XPath (Lenguaje de acceso a elemento/s Xml) ..................................................................................................... 5XSD: XML Schema (Definición de esquema XML) ............................................................................................ 6

XSD: Definición de un documento de esquema xsd ........................................................................................ 6XSD: Asociación de un esquema en un documento xml (a partir de una etiqueta) .......................................... 6XSD: Elemento etiqueta. .................................................................................................................................. 6XSD: Tipos de datos básicos xsd ...................................................................................................................... 7XSD: Tipos de datos predefinidos .................................................................................................................... 7XSD: Ámbito de tipos de datos ........................................................................................................................ 7XSD: Definición de contenido en tipos de datos predefinidos ......................................................................... 8XSD: Herencia y mezcla de datos predefinidos ............................................................................................... 8XSD: Restricciones aplicables a los contenidos. .............................................................................................. 8

XSLT Lenguaje de transformación de datos xml ................................................................................................ 10XSLT: El Documento de transformación ........................................................................................................ 10XSLT: Plantillas de transformación ................................................................................................................ 10XSLT: Etiquetas de Plantillas de transformación ........................................................................................... 11XSLT: Funciones ............................................................................................................................................. 11XSLT: Localización ........................................................................................................................................ 12

XQuery (Lenguaje unificado de consultas sobre datos Xml). ................................................................................. 14Procesador XQuery gratuito basado en xerces (Zorba): http://www.zorba-xquery.com/html/index .................. 14Conceptos básicos ............................................................................................................................................... 14Espacio de nombres ............................................................................................................................................. 14Operadores ........................................................................................................................................................... 14Sentencia de código Xquery y tipos de datos soportados (<tdato>) ................................................................... 14Variables .............................................................................................................................................................. 14

Secuencias ................................................................................................................................................................ 15Funciones ................................................................................................................................................................. 15Instrucciones de control de flujo .............................................................................................................................. 15

Consulta XQuery “FLWOR” (For Let Where Order Return): ............................................................................ 15Funciones XQuery ............................................................................................................................................... 15Tratamiento informático de archivos xml. .......................................................................................................... 17

StAX (Streaming Api for Xml) Tratamiento secuencial (flujo) de documentos xml. .................................... 17SAX (Simple Api for xml) Tratamiento secuencial (eventos) de documentos xml. ....................................... 18DOM (Document Object Model) Tratamiento aleatorio de documentos xml. ............................................... 19XmlBinding (Aplicaciones de mapeo Elemento/s Xml - Clase/s nativa) ....................................................... 21

Autor: José Manuel Oyola González, licencia creative commons Ir a Indice Página 1/21

Page 2: Resumen XML v0.1

Resumen Xml v0.1

Síntaxis del manual

[Comando] : Cualquier comando entre corchetes implica que es opcional y puede omitirse.a | b | c : Cualquier comando unido a otro con el símbolo pipeline “ | ” implica “o”. Ej: A, o B, o C.<Interpretar> : Cualquier palabra dentro de los signos < y > (no negritas) se debe de interpretar.

Extensive Marckup Language (XML)

XML es un lenguaje definido con etiquetas mediante el cual se puede representar cualquier estructura de datos. - Distingue entre mayúsculas y minúsculas. - Está basado en etiquetas que a su vez pueden contener otras etiquetas. - Su estructura es fuertemente tipada (no puede haber otra cosa que lenguaje xml).

XML: La Etiqueta XML

Una etiqueta se especifica como una marca de inicio de etiqueta <MarcaInicio> que puede contener atributos, luego le sigue un posible contenido, y por último la marca de fin de etiqueta </MarcaFin> (la etiquetas sin contenido pueden abreviarse eliminando la marca de fin si terminan la de inicio en “/>”).Tipología de etiquetas según su contenido: - Etiqueta simple (sin atributos y con contenido tipo “texto”) < <NombreCualificado> />…ContenidoTipoTexto…</ <NombreCualificado>> > - Etiqueta compuesta (puede tener atributos y con contenido compuesto por otras etiquetas y/o texto): < <NombreCualificado> [<NombAttr1>=”ValorAttr1”] … [<NombAttrN>=”ValorAttrN”] > [<ContenidoMixto(TextoY/OEtiqueta/s>] </ <NombreCualificado> > - Etiqueta PCDATA No contienen ni atributos, contenido o marcas de inicio/fin, solamente texto o datos. - Etiqueta comentario: <!-- Esto es un comentario que puede tener varias líneas -->Propiedades de una etiqueta: - <NombreCualificado> Especifica el nombre local de la etiqueta para el documento actual. - [<prefijo>:] Permite diferenciar etiquetas con mismo nombre local de distintos lenguajes xml en el documento actual añadiendo un prefijo que se designa con el atributo xmlns. - <NombreLocal> Nombre local de la etiqueta. - <Atributos> Pares de atributos (<NombreAtributo> = “ <ValorAtributo> ”) separados por espacios. - xmlns[:pref]=”uriEspNombre” Asocia un prefijo a las etiquetas de un esp. de nombres de un esquema. - [pref:]schemaLocation="<uriEspNombre> <RutaAXsd>” Ruta al doc. de esquema del esp. de nomb. - [pref:]noNamespaceSchemaLocation="<RutaAXsd>" Ruta al doc. de esqu. de un pref. sin esp. nomb. Si no se especifica prefijo, será el espacio de nombres por defecto de todas las etiquetas del documento. - <Contenido> Etiqueta/s y/o texto contenido dentro de esta.

XML: Etiquetas Xml como contenedores de información

Las etiquetas xml permiten almacenar tipos de datos y su contenido en forma jerárquica (de árbol) gracias al nombre de la etiqueta (que marca el tipo que contiene el dato), el contenido (el valor de dato, que a su vez puedecontener otras etiquetas y/o texto) y los atributos (que permiten especificar tipos y valores de una forma más resumida en la etiqueta).

Autor: José Manuel Oyola González, licencia creative commons Ir a Indice Página 2/21

Page 3: Resumen XML v0.1

Resumen Xml v0.1

Formas de definir datos dentro de una etiqueta. - Como etiquetas simples: <persona> <nombre> José </nombre> <edad> 27 </edad> … </persona> - Como atributos de etiquetas compuestas: <persona nombre=”José” edad=”27”> … </persona> - Que forma utilizar: - Si los datos a guardar son de gran tamaño o contienen caracteres \r, \n, \t o esp., como etiquetas simples. - Si son datos relevantes de la etiqueta y se necesitan leer antes que su contenido, como atributos.

El Documento XML

Documento XML Es un archivo de texto plano de tipo jerárquico donde se expresan en forma de árbol información y su estructura.En un documento xml existe un primer elemento virtual llamado “documento raíz” al cual le sigue un sólo elemento etiqueta llamado nodo raíz y partiendo de él, todo su contenido.

Documento xml texto plano: Interpretación del documento xml como DOM:

<?xml <AtributosDocumentoSepEspacio> ?> <NodoRaíz> …<Contenido>… </NodoRaíz>

<DocumentoRaíz> <NodoRaíz> …<Contenido>… </NodoRaíz> </DocumentoRaíz>

Atributos de un documento xml: - version Version xml del documento (version=”1.0”).      ­ encoding Tipo de codificación de caracteres (encoding=”UTF­8”).    Tipos de valores específicos de atributos de etiquetas xml dentro de un documento:      ­ id Especifica que el valor del atributo es un identificador universal de etiqueta dentro del mismo.      ­ idref Especifica que el valor del atributo es un enlace a un id universal de otra etiqueta dentro del mismo.      ­ idrefs Especifica que los valores contenidos en el atributo (separados por espacio) son enlaces a ids        universales de otras etiquetas dentro del mismo.

Autor: José Manuel Oyola González, licencia creative commons Ir a Indice Página 3/21

Page 4: Resumen XML v0.1

Resumen Xml v0.1

DTD (Definición de documento XML)

DTD es un lenguaje que marca las reglas de etiquetado en la creación del documento xml que diga cumplirla.- Etiquetas DTD: <!ELEMENT <NombreEtiqueta> <Contenido> > Definición de etiqueta y su contenido. - Contenido (ojo, separar con un espacio del nombre de la etiqueta): - EMPTY No puede tener contenido. - ANY Puede tener cualquier contenido (etiquetas). - MIXED Puede tener contenido mezclado (etiquetas y texto). - ( <Contenido> ) Contenido específico (entre paréntesis): - #PCDATA Contenido tipo texto. - Etiqueta/s: <Etiqueta1>[<Cardinalidad1>] [<OperadorOrden> <Etiqueta2>[<Cardinalidad2>] ...]

Operadores de orden de etiquetas: - a, b A y luego B. - a | b A ó B. - a, (b|c) A, luego B ó C.

Operadores de cardinalidad de etiqueta; - ? 0 o 1 veces. - * 0 o n veces. - + 1 o n veces. - (Sin cardinalidad) 1 y sólo 1 vez.

<!ATTLIST <NombreEtiqueta> <DefinicionAtributosContenidos> > Definición de atributos de etiqueta. - Definicion de Atributos Contenidos: <DefinicionAtributo1> [ <DefinicionAtributo2> …] - Definicion de Atributo: <NombreAtributo> <TipoDatos> <Obligatoriedad> [<ValorPorDefecto>] - Tipo de datos del atributo: - CDATA Cualquier carácter y cualquier número de ellos. - NMTOKEN Cualquier letra, número, “.”, “-”, “_”, “:” y cualquier número de ellos. - NMTOKENS Igual a NMTOKEN, además de “esp“, “tab” “enter” y cualquier número de ellos. - ID Especifica un identificador único de etiqueta dentro del documento. Su valor puede ser igual a NMTOKEN, empieza por una letra y no puede haber más de un atributo ID en la misma etiqueta. - IDREF/S Hace referencia a ID/s de otra/s etiqueta/s. Debe de ser un ID (o varios sep. Espac.) existente. - (<Valor>) Valor permitido (entre paréntesis) - (<Valor1> | <Valor2>) Conjunto de valores permitidos (puede establecerse un valor por defecto de ellos). - Obligatoriedad: - #IMPLIED Atributo opcional (puede establecerse un valor por defecto). - #REQUIRED Atributo obligatorio. - #FIXED Atributo fijo (hay que establecerse un valor por defecto).- Especificación en un Xml de que cumple un DTD (Etiqueta DOCTYPE después de etiqueta ?xml): - Con DTD incrustado: <!DOCTYPE <EtiquetaInicial> [ <EtiquetasDTD> ] > <EtiquetasXml> ... - Con archivo DTD local: <!DOCTYPE <NombreEtiq.Inicial> SYSTEM “<RutaLocalAArchivoDTD>” > - Con archivo DTD externo: <!DOCTYPE <NombreEtiq.Inicial> SYSTEM “<URIAArchivoDTD>” > Nota: Al leer el documento, DOCTYPE es considerada por el parseador como cualquier otra etiqueta.

Autor: José Manuel Oyola González, licencia creative commons Ir a Indice Página 4/21

Page 5: Resumen XML v0.1

Resumen Xml v0.1

XPath (Lenguaje de acceso a elemento/s Xml)

Xpath es un lenguaje que posibilita mediante una sintaxis propia especificar la referencia a uno o varios elementos dentro de un documento xml en función a distintas formas de localización.La versión más utilizada de XPath es la v1 (la que explicamos en este resumen), existiendo una v2 compatible hacia atrás con la v1 exceptuando lo siguiente:  ­ Cada sentencia da como resultado un conjunto de nodos siempre (aunque sea un nodo el elegido).  ­ Se establece que el valor texto de un nodo es una secuencia de valores (aunque haya sólo uno)  ­ Por tanto, el único (y primer) elemento de una secuencia será el elemento con índice 0.  ­ Se puede en todo momento consultar la longitud de la secuencia de tipo nodo o texto.Location path Es la cadena que define la ruta o rutas (con “|” como separador) de los nodos a referenciar:    “[<nodoContexto>] [<rutaAElementoPadre>] <hacha> <descripciónElemento/sDeseado/s>”    ­ <nodoContexto> Punto de partida de la ruta, pudiendo ser:      ­  Relativo al elemento o contexto actual: Se deja en blanco.      ­ Absoluto a la raíz: Carácter barra “/” indicando raíz.    ­ <rutaAElementoPadre> Camino que hay que seguir en profundidad elemento tras elemento desde el nodo        contexto hasta llegar al elemento padre del deseado. Como separador entre elementos, se utiliza la barra “/”    ­ <hacha> Especifica la relación de posición con el/los elemento/s deseado/s:

Descripción del hacha Sintaxis Sintaxis abreviada

Elemento nodo actual (contexto) “self::” “.”

Elemento padre de nodo actual “parent::” “..”

Elemento hijo de tipo nodo “child::” “/”

Elementos hijos de tipo nodo “descendant::” “//”

Elemento hijo de tipo atributo “attribute::” “@”

Elementos con padre especificado “ancestor::” No hay    ­ <descripciónElemento/sDeseado/s> Descripción del/os elemento/s deseado/s, de la siguiente forma:      <nombreElementoDeseado> [ [<predicado>] ]      ­ <nombreElementoDeseado> Nombre de elemento deseado, pudiendo utilizar las siguientes funciones:          ­ * (asterisco) Todos los nodos de tipo elemento o atributo.          ­ node() Todos los nodos de cualquier tipo (elemento, atributo, texto, comentario, etc...).          ­ text() Todos los nodos de tipo texto.          ­ comment() Todos los nodos de tipo comentario.          ­ processing­instruction() Todos los nodos de tipo <? k v?>.      ­ [<predicado>]: Permite filtrar los nodos resultantes en base a que cumplan una o varias condiciones         (se permiten operadores not, and y or) o la existencia de un elemento (sólo nombre elemento):        [ <elemento> | <funcionPredicado> [<condición> <valor>]  ]           ­ Funciones utilizables dentro del predicado:

Autor: José Manuel Oyola González, licencia creative commons Ir a Indice Página 5/21

Page 6: Resumen XML v0.1

Resumen Xml v0.1

              ­ position() Implica número de hijo (equivalencia: [position()=<indice>] =>  [<indice>] )              ­ last() Implica el último de los hijos.              ­ id(“identificadorNodoXml”) Implica el elemento con atributo id especificado.NOTA: Si en el documento origen xml los elementos están incluidos en algún espacio de nombres, habrá que importarlo en la declaración de la etiqueta stylesheet y aportar el prefijo elegido para las mismas en xPath.

XSD: XML Schema (Definición de esquema XML)

XSD es un lenguaje basado en etiquetas xml que, al igual que un dtd, permite definir y validar un documento xml en base a normas extendidas más versátiles que los dtds (ya que además de definir normas simples, permite definir contenidos complejos en base a tipos de datos predefinidos y validaciones complejas sobre los mismos).

XSD: Definición de un documento de esquema xsd

Un documento xsd es un documento xml con una etiqueta raíz schema definiendo dentro de ella el esquema:<?xml version="1.0" encoding="UTF-8"?> <[pref:]schema <atributos> > <EtiquetasXSD> </[pref:]schema> - targetNamespace="<UriEspNomb>” Espacio de nomb. a los que pertenecerán los elementos de este xsd. - xmlns[:pref]="http://www.w3.org/2001/XMLSchema" Espacio de nombres de los elementos xsd. El prefijo estándar para las etiquetas de esquema es xsd (aunque microsoft elige xs): <xsd:schema... - elementFormDefault=”qualified” Necesario especificarlo si el esquema tiene targetNamespace. Etiqueta Xsd para incluir/importar otros esquemas xsd dentro de este:   <[pref:]import/include "<UriEspNomb> <RutaAXsd>” />

XSD: Asociación de un esquema en un documento xml (a partir de una etiqueta)

<?xml version="1.0" encoding="UTF-8"?><EtiquetaRaízXml <atributosDeEsquema> [<atributosDeEtiqueta>]> <Contenido> </EtiquetaRaízXml> Atributos de esquema: - xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" Esquema obligatorio a incluir. - Si el/los esquema/s a asociar tiene/n espacio/s de nombres definido: - xmlns[:pref]="<UriEspNomb>” Prefijo elegido de las etiquetas del esquema (uno por cada esquema). - xsi:schemaLocation="<UriEspNomb1> <RutaAXsd1> [<UriEspNomb2> <RutaAXsd2> … <UriEspNombN> <RutaAXsdN>]” Especifica el esp. nomb. y la ruta a los esquemas. - Si el esquema a asociar no tiene espacio de nombres definido (sólo se puede asociar uno): - xsi:noNamespaceSchemaLocation="<RutaRelatAXsd>" Especifica la ruta a su xsd.

XSD: Elemento etiqueta.

Es una etiqueta xsd que representa una etiqueta xml en el documento que represente este esquema.   <[pref:]element <atributosElemento> >        … Descripción contenido...

Autor: José Manuel Oyola González, licencia creative commons Ir a Indice Página 6/21

Page 7: Resumen XML v0.1

Resumen Xml v0.1

    <[pref:]element>   Atributos del elemento:    ­ name Nombre local de la etiqueta.    ­ [type] Nombre del tipo de datos que podrá tener el elemento (si el tipo es local, se puede obviar).    ­ [default/fixed] Valor por defecto/fijo que tendrá el elemento.    ­ [minOccurs] Valor mínimo de ocurrencias del elemento. Por defecto=0, unbounded=sin límite.    ­ [maxOccurs] Valor máximo de ocurrencias del elemento. Por defecto=1, unbounded=sin límite.

XSD: Tipos de datos básicos xsd

Numéricos: ­ [pref:]decimal Número decimal gran formato. ­ [pref:]float/double Número decimal simple/doble. ­ [pref:][unsigned]byte/short/int/long Nº entero [sin signo]. ­ [pref:][non]negativeInteger Número entero [no] negativo. ­ [pref:][non]positiveInteger Número entero [no] positivo.Cadenas de caracteres: ­ [pref:]string Cadena de cualquier carácter y longitud. ­ [pref:]normalizedString String con \r \n y \t. ­ [pref:]language Código de lenguaje válido. ­ [pref:]id Identificador universal xml en el documento. ­ [pref:]idref/idrefs Referencia a un/varios ids (sep. por esp.). ­ [pref:]entity/entities Cadena/s que forman un id. ­ [pref:]anyURI Cualquier URI bien formada.

 ­ [pref:]notation Cadena que especifica una notación. ­ [pref:]name/qname/ncname Nombre válido name/qname/ncname. ­ [pref:]token/nmtoken/nmtokens Tipo token/nmtoken/nmtokens .Booleanos: ­ [pref:]boolean Booleano (“true”/”false”).Fechas/Horas: ­ [pref:]date/time Fecha/hora “yyyy­MM­dd”/“hh:mm:ss”. ­ [pref:]dateTime Fecha y hora “yyyy­MM­ddThh:mm:ss ”. ­ [pref:]duration Tiempo “PnynMndTnhnmns”. ­ [pref:]gDay/gMonth/gYear Nº día mes/Nº mes año/Nº año. ­ [pref:]gMonthDay/gYearMonth Día y mes/Mes y año.Datos binarios: ­ [pref:]hexBinary Dato binario expresado en hexadecimal. ­ [pref:]base64Binary Dato binario expresado en base64.

XSD: Tipos de datos predefinidos

Tipos de datos predefinidos Contienen una definición predefinida de su contenido. ­ Simple Etiqueta que sólo puede contener un tipo básico definido o lista del mismo tipo base sep. por espac.:   <[pref:]simpleContent <attributos>> <DefinicionContenido> </[pref:]simpleContent> ­ Compuesta Etiqueta que puede tener atributos y/o contenido simple o mixto:    <[pref:]complexType <attrib.>> <DefCont1>…<DefContN><DefAtt1>…<DefAtt1> </[pref:]complexType>      ­ String name Nombre del tipo de datos compuesto creado.      ­ Boolean mixed Especifica que el contenido tiene elementos mezclados (elemento, atributo, texto,...).

XSD: Ámbito de tipos de datos

 ­ Local El tipo de datos se define dentro del cuerpo de la etiqueta element y por tanto sólo vale para ella.  ­ Def. local elem. simple: <element … > <simpleContent … > <DefLocal> </simpleContent> </element>  ­ Def. local elem. compuest: <element … > <complexType … > <DefLocal> </complexType> </element> ­ Global El tipo de datos es básico o predefinido en el documento xsd.      <element … type=”<NombreTipoDatosBasico/PredefinidoEnDocumentoXSD>”> … </element>

Autor: José Manuel Oyola González, licencia creative commons Ir a Indice Página 7/21

Page 8: Resumen XML v0.1

Resumen Xml v0.1

XSD: Definición de contenido en tipos de datos predefinidos

Definición de contenido en tipos de datos simple (simpleContent):  ­ Lista básica Lista de elementos en etiqueta simple de un mismo tipo básico (elementos separ. por espacios):   <[pref:]list itemType=”<tipoBásico>” >]> [<restriccionesDeLista>] </[pref:]list>  Nota: Para restricciones, crear primero un tipo lista básico y luego otro tipo con restricción sobre el básico.Definición de contenido en tipos de datos compuestos (complexType):  ­ Definición de secuencia de los elementos contenidos en el tipo compuestos:     ­ Todos (todos, cualquier orden): <[pref:]all> <elem1><elem2>...<elemN> </[pref:]all>     ­ Secuencia (todos, mismo orden): <[pref:]sequence> <elem1><elem2>...<elemN> </[pref:]sequence>     ­ Opción (alguno): <[pref:]choice> <elem1><elem2>...<elemN> </[pref:]choice>  ­ Definición de atributo en elementos compuestos (tantos como atributos se deseen):     <[pref:]attribute <atributosElemento> > <DefinicionContenido> <[pref:]attribute>       ­ name Nombre del atributo.      ­ [type] Nombre del tipo de datos que podrá tener la etiqueta (si el tipo es local, se puede obviar).      ­ [default]/[fixed] Valor por defecto/fijo que tendrá el elemento.      ­ [use=”required”] Especifica que el atributo es obligatorio (por defecto son opcionales).

XSD: Herencia y mezcla de datos predefinidos

  ­ Union de tipos Representa una unión de posibles tipos básicos o simples previamente definidos:   <[pref:]union memeberTypes=”<tipo1> [<tipo2>...<tipoN>] />  ­ Extensión Define el contenido del elemento como extensión de otro ya existente (herencia de tipo):    <[pref:]simple/complexContent>        <[pref:]extension base=”<tipoExistente>”>            <contenidoAdicional>        </[pref:]extension>    </[pref:]simple/complexContent>

XSD: Restricciones aplicables a los contenidos.

Restricciones de entrada:  <[pref:]restriction base=”<tipoDato>”> <restricciones> </[pref:]restriction>  ­ <tipoDato> Tipo de datos a aplicar las restricciones.  Notas referente a restricciones en listas de elementos:   ­ Si <tipoDato> es tipo lista, implica que las restricciones se aplicarán a cada elemento de la lista.   ­ Si <tipoDato> es subtipo de lista, implica que [min/max]Length hacen alusión al nro. de elem. de la lista.Tipos de restricciones aplicables: ­ Límite valores: <[pref:]min/max[In/Ex]clusive> value=”<valor>” </[pref:]min/max[In/Ex]clusive> ­ Dígitos: <[pref:]totalDigits> value=”<numero>” </[pref:]totalDigits> ­ Num. decimales: <[pref:]fractionDigits> value=”<numero>” </[pref:]fractionDigits>

Autor: José Manuel Oyola González, licencia creative commons Ir a Indice Página 8/21

Page 9: Resumen XML v0.1

Resumen Xml v0.1

 ­ Valores enumerados (tantos como valores): <[pref:]enumeration> value=”<v1>” </[pref:]enumeration> ­ Longitud (lista/cadena): <[pref:]length> value=”<longitud>” </[pref:]length> ­ Longitud mín/máx (lista/cad): <[pref:]min/maxLength> value=”<longitud>” </[pref:]min/maxLength> ­ Expresión regular: <[pref:]pattern> value=”<exp.Regular>” </[pref:]pattern>Transformación de datos de entrada: ­ Reemplazo caracteres (lf, cr, tab, esp): <[pref:]whiteSpace>  value=”<valor>” </[pref:]whiteSpace>    Valores posibles: ”preserve”: sin cambios, “replace”/”collapse”: Reemplazar con varios/un espacio.

Autor: José Manuel Oyola González, licencia creative commons Ir a Indice Página 9/21

Page 10: Resumen XML v0.1

Resumen Xml v0.1

XSLT Lenguaje de transformación de datos xml

XSLT es un lenguaje mediante el cual se pueden tratar los datos de un documento xml asociado y dar un documento xml como salida (por ejemplo un documento xhtml visualizable en un navegador web).Dentro de un documento xslt se especifica la lógica de transformación y tratamiento de las etiquetas xml del documento asociado que se tienen como entrada para dar la salida xml deseada.

XSLT: El Documento de transformación

Declaración de documento xml de transformación (extensión xsl):  <[pref:]stylesheet <atributos>> <etiquetasXslt> </[pref:]stylesheet>  ­ Prefijo estándar: “xsl”. Atributos:    ­ version=”1.0” Versión del estándar xslt (la versión 2 aún no es estándar)    ­ xmlns:xsl=”http://www.w3.org/1999/XSL/Transform” Esp. de nomb. de las etiquetas de transformación.  ­ Parámetros de entrada al documento de transformación: Permite utilizar su valor dentro como variable.    ­ Etiqueta xslt param: <[pref:]param name=”<nombreParametroEntrada>”/>Enlazar el documento xml con el xsl:  <?xml­stylesheet type=”text/xsl” href=”URLAArchivoXsl.xsl”?>

XSLT: Plantillas de transformación

La transformación de un documento de entrada xml hacia uno de salida (también xml) se realiza creando plantillas de transformación en el documento xsl por cada elemento o conjunto de elementos a transformar en la entrada y aplicándolos a dichos elementos.Definición de plantilla de transformación Define la plantilla con la transformación a aplicar a los elementos del documento xml coincidentes según la expresión xPath o pasados por parámetros:    <[pref:]template [name=”<nombrePlantilla>”] match=”<expresionXPath>”>         <!­­ Parámetros de entrada (uno por cada) ­­>        <[pref:]param [name=”<nombreParametro>”] [select=”<expresionXPathValorPorDefecto>”] />        <!­­ Etiquetas de transformación ­­>    </[pref:]template>     ­ name Nombre de la plantilla (para poder invocarla como método)     ­ match Expresión xPath con definición de nodo/s del documento xml que tratará esta plantilla.Aplicación de plantilla de transformación Ejecución de transformación de una plantilla existente.  ­ Ejecución por coincidencia en xPath Se ejecuta la plantilla que coincida con el patrón [“/” por omisión]     <[pref:]apply­templates [select=”<expresionXPath>”] />  ­ Ejecución por nombre Se ejecuta la plantilla que coincida con el nombre y opcionalmente se pasan parám.     <[pref:]call­template name=”<nombrePlantilla>” >          <!­­ Parámetros de llamada (uno por cada) ­­>          <[pref:]with­param name=”<nombreParametro>” select=”<expresionXPathValorParametro>” />

Autor: José Manuel Oyola González, licencia creative commons Ir a Indice Página 10/21

Page 11: Resumen XML v0.1

Resumen Xml v0.1

    </[pref:]call­template >Etiqueta Xsl para incluir/importar otras plantillas xsl dentro de este documento:   <[pref:]import/include "<RutaAXsl>” />

XSLT: Etiquetas de Plantillas de transformación

Variables En la plantilla se permite declarar variables para simplificar el contenido de los atributos.   ­ Declaración: <[pref:]variable name=”<nombreVariable>” select=”<expresionXPath>” />       ­ name Nombre de la variable a declarar en la plantilla.       ­ select Expresión xPath con el elemento desde donde coger el valor de la variable.   ­ Uso: $<nombreVariable> Permite hacer uso de su valor dentro de cualquier atributo o expresión XPath.Valor en cadena Representación en cadena del valor de cualquier elemento/s según su expresión xPath.   <[pref:]value­of select=”<expresionXPath>” />Instrucciones de control de flujo Permiten dar una cierta lógica dinámica a la transformación.

Sentencia si… (if) Sentencia en caso de…  (select)

<[pref:]if test=”<Exp.XPathBooleana>” >    <transformaciónEnCasoTrue></[pref:]if>

<[pref:]choose>     <[pref:]when test=”<Exp.XPathBooleana1>” >         <transformaciónEnCasoExp.XPathBooleana1>     </[pref:]when>     …      <[pref:]otherwise >         <transformaciónEnCualquierOtroCaso>     </[pref:]otherwise></[pref:]choose>

Iterador por cada elemento... (foreach...)

<[pref:]for­each select=”<Exp.XPathElementos>    [<[pref:]sort select=”<Exp.XPathOrden>”                          order=”<TipoOrdenacion>” />     <transformaciónPorCadaElemento></[pref:]for­each>

   ­ test Expresión XPath booleana de tipo comparativa: “<Exp.XPath> <comparación> <Exp.XPath / Valor>”   ­ select(for­each) Expresión XPath que resulte un conjunto de elemento/s que se utilizarán para iterar.   ­ select(sort)  Expresión XPath con ruta al elem. dentro del conjunto por cuyo valor se ordenará la iteración.   ­ order Tipo de ordenación de la iteración: “ascending” (Ascendente), “descending” (Descendente).   ­ <transformaciónXXX> Sección con la transformación a realizar bajo ese contexto.

XSLT: Funciones

XSLT Trae consigo una serie de funciones de apoyo para la lógica de las plantillas.  ­ Funciones básicas xslt v1:    ­ Element current() Devuelve el nodo actual (puede no ser el mismo que el nodo contexto)    ­ String name() Nombre local del nodo seleccionado (sin espacio de nombres).    ­ String local­name() Nombre del nodo seleccionado con el prefijo de su espacio de nombres (si lo tuviera).    ­ String namespace­uri() Nombre de la uri del espacio de nombres del nodo seleccionado (si lo tuviera).    ­ String generate­id() Identificador universal/hash auto­generado para un nodo especificado.

Autor: José Manuel Oyola González, licencia creative commons Ir a Indice Página 11/21

Page 12: Resumen XML v0.1

Resumen Xml v0.1

    ­ Int count() Número de nodos seleccionado.    ­ boolean exists(String <XPathAElemento>) True si existe el elemento.    ­ element document/doc(String <RutaAXmlExterno>) Nodo raíz de un documento xml externo.    ­ boolean document/doc­available(String <RutaAXmlExterno>) True si existe el documento xml externo.    ­ boolean element­available(String <etiqueta>) True si el parse xslt soporta una etiqueta.    ­ boolean function­available(String <función>) True si el parse xslt soporta una función.    ­ String format­number(<número>, <formato> [, <formatoDecimal>]) Devuelve un número formateado.      Caracteres formato: “0” (dígito), “#” (dígito sin cero), “.” (sep. decimal), “,” sep. miles, “;” (sep. formato +­)  ­ Funciones extendidas xslt v2: Prefijo “fn”, espacio de nombres “http://www.w3.org/2005/xpath­functions”    Listado de funciones básicas (todas en dirección http://www.w3schools.com/xpath/xpath_functions.asp):

Númericas:- number fn:number(arg) Convierte a número.- number fn:abs(num) Valor absoluto de num.- number fn:ceiling(num) Redondeo (>.1=>+1).- number fn:floor(num) Redondeo neg.(>-.1=>-1).- number fn:round(num) Redondeo (>.5=>+1).- number fn:round-half-to-even(num, ndec) Red. - number fn:avg(sec) Media aritm. de secuencia.- number fn:sum(sec) Suma de secuencia.- number fn:min(sec) Mínimo valor de secuencia.- number fn:max(sec) Máximo valor de secuencia.Cadenas:- String fn:string(arg) Conv. A cadena.- int fn:compare(comp1,comp2) Compara.- String fn:concat(string1, string2,...) Concatena.- String fn:string-join((string,string,...),sep) Union.- String fn:substring(string,start [,len]) Subcad.- String fn:substring-before/after(s,p) SCad a/d piv.- int fn:string-length(string) Longitud cad.

- String fn:upper/lower-case(s) S a May/Min.- boolean fn:contains(s1, s2) s1 está en s2?- boolean fn:starts/ends-with(s1, s2) s1 ini/fin s2?- boolean fn:matches(s, exreg) s cumple exreg?- String fn:replace(s,exreg,r) Reemp. exreg s x r.Booleanos:- boolean fn:boolean(string s) Conv. A bool.- boolean fn:not(boolean v) No v.- boolean fn:true/false() T/F Booleano.Fechas:- DT fn:dateTime(Da d,Ti t) DT desde Da y Ti.- int fn:X-from-duration(Du du) X de Du.- int fn:X/timezone-from-DT(DT dt) X de DT.- int fn:X/timezone-from-date(Da d) X de Da.- Da/Ti/DT fn:current-Da/Ti/DT() Fech./Hor. act. - timeZone fn:implicit-timezone() Zona horaria.Du(Duration),DT(DateTime), Da(Date),Ti(Time)X=years/months/days/hours/minutes/seconds

XSLT: Localización

Xslt v1 de por sí no admite localización, por lo que tendremos que hacer uso de funciones de terceros para ello: - string.xsl Librería xsl (xsltsl.org) para el tratamiento de cadenas de texto. - numbers.xsl Librería xsl (xsltsl.org) para el tratamiento de números. - date-time.xsl Librería xsl (xsltsl.org) para el tratamiento de fechas/horas. - locale.xml/.xsd Archivo xml (y su correspondiente esquema) con la localización para nuestra hoja xsl.

<?xml version="1.0" encoding="UTF-8"?> <locals xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="locale.xsd">

<!-- Un nodo config por cada localización deseada indicando en id el código de lenguaje y país a localizar--> <config id="en_GB"> <!-- Formatos numéricos y de fechas para esta localización--> <number numberFormat="###,###.00" currencyFormat="###,###.00 £"/> <!-- Formato numérico y moneda --> <date shortFormat="%d/%m/%Y" longFormat="%d/%m/%Y"/> <!-- Formato fecha corta y larga --> <time shortFormat="%P %I:%M:%S" longFormat="%P %I:%M:%S"/> <!-- Formato hora corta y larga --> <timeStamp shortFormat="%d/%m/%Y T%P %I:%M:%S" longFormat="%d/%m/%Y T%P %I:%M:%S"/> <!-- Formato fecha y hora corta y larga --> <!-- Mensajes de texto para esta localización--> <!-- Un nodo text por cada mensaje a localizar indicando en id la clave del mensaje y en su contenido el mensaje localizado--> <text id="msg.XXX">Mensaje Localizado</text>

Autor: José Manuel Oyola González, licencia creative commons Ir a Indice Página 12/21

Page 13: Resumen XML v0.1

Resumen Xml v0.1

</config> </locals>

Códigos de formateo de números y monedas:- # / 0 Dígito Entero/Decimal.- , / . Separador de Miles/Decimal. - % / %% Carácter Porciento/Por mil.- - / ;: Número Negativo/Separador entre números positivos y negativos.Códigos de formateo de Fecha/Hora:- %c / %x /%X Fecha y Hora/Fecha/Hora formateada para locale p/defecto.- %y / %Y Número de año con dos/cuatro dígitos.- %U / %W Número de semana del año con dom/lun como 1er día.- %m / %n Número de mes del año con/sin ceros a la izquierda.- %B / %b Nombre del mes del año entero/abreviado. - %j Número de día del año con ceros a la izquierda.

- %w Número del día de la semana 0=dom.- %A / %a Nombre del día de la semana entero/abreviado.- %d / %e Número de día del mes con/sin ceros a la izquierda.- %H / %h Número de hora(24h) con/sin ceros a la izquierda.- %I / %i Número de hora(12h) con/sin ceros a la izquierda.- %M Número de minutos con ceros a la izquierda.- %S Número de segundos con ceros a la izquierda.- %P / %p Cad “AM/PM” formateada para la locale p/defecto may/minúscula.- %Q / %q Cad “AM/PM” + periodos formateada para locale p/defecto may/min.- %z Zona horaria.- %% / T Símbolo porcentaje/Separador entre Fecha y Hora.

Aplicación en xslt:<?xml version="1.0" encoding="UTF-8"?>

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:dt="http://xsltsl.org/date-time" xmlns:num="http://xsltsl.org/numbers" xmlns="http://www.w3.org/1999/xhtml"> <xsl:import href="date-time.xsl"/> <xsl:import href="numbers.xsl"/> <!-- Importamos las librerías externas --> <xsl:param name="localeUri" select="'locale.xml'"/> <!-- Uri donde se encuentra el archivo de localización --> <!-- Guardamos en loc el nombre de la locale a utilizar en la hoja de estilos (definida por el atributo lang del nodo raíz). --> <xsl:param name="loc" select="//@lang"/> <!-- Alusión al nodo / @atributo en el archivo de datos (.xml) con la localización. --> <!-- Guardamos en locale el nodo base correspondiente a la locale loc del documento xml de locales. --> <xsl:variable name="locale" select="document($localeUri)/locals/config[@id=$loc]" />

<!-- Aplicaciones de las librerías de localizacion Xslt 1 --> <xsl:value-of select="$locale/text[@id='msg.xxx']" /> <!-- Obtener un mensaje localizado del documento xml de locales (por su id) -->

<!-- Obtener una fecha localizada según la configuración del documento xml de locales (por su id) --> <xsl:call-template name="dt:format-date-time"> <xsl:with-param name="xsd-date-time" select="<XPathAFechaAFormatear>"/> <!-- Valor de la fecha a localizar --> <xsl:with-param name="format"> <xsl:value-of select="$locale/date/@shortFormat" /> <!-- Tipo de fecha localizada del documento xml de locales (por su atributo) --> </xsl:with-param> </xsl:call-template> <br/> <!-- Obtener un número localizado según la configuración del documento xml de locales (por su id) --> <xsl:call-template name="num:format-number"> <xsl:with-param name="xsd-number" select="<XPathANumeroAFormatear>"/> <!-- Valor del número a localizar --> <xsl:with-param name="format"> <xsl:value-of select="$locale/number/@currencyFormat" /> <!-- Tipo de núm. localiz. del documento xml de locales (por su atributo) --> </xsl:with-param> </xsl:call-template> <br/>

Autor: José Manuel Oyola González, licencia creative commons Ir a Indice Página 13/21

Page 14: Resumen XML v0.1

Resumen Xml v0.1

XQuery (Lenguaje unificado de consultas sobre datos Xml).

XQuery es un lenguaje de consulta parecido a SQL sobre orígenes de datos Xml, permitiendo la consulta o transformación de información que en ellos exista. Se basa en XPath v2 y un subconjunto de sentencias.Plugin XQuery para eclipse (XQDT): http://download.eclipse.org/webtools/incubator/repository/xquery/milestones/Procesador XQuery gratuito basado en xerces (Zorba): http://www.zorba-xquery.com/html/index

Conceptos básicos

(: Comentario de varias    lineas... :)

{ ......... delimitador      de trozo de código (ámbito).....}

delimitador de fin de línea:     ;

Espacio de nombres

Declaración de ámbito: declare namespace <pref> = “<espacioNombres>”;Importación: - Esquema XSD: import schema namespace <pref> = "<espacioNombres>" [ at "<URIArchivoXSD>"]  ­ Módulo XQuery: import module namespace <pref> = "<espacioNombres>" [ at "<URIModuloXQuery>"]

Operadores

Aritméticos Lógicos Comparadores

SumaRestaMultipl.Div (ent)Div (dec)Resto

+­*dividivmod

And(bool)Or(bool)not

andornot

IgualDiferenteMenorMenor O IgualMayorMayor O Igual

eqneltlegtge

=!=<<=>>=

Sentencia de código Xquery y tipos de datos soportados (<tdato>)

Consulta XQuery: Tipos de datos soportados en XQuery

xquery version “1.0” encoding “UTF-8”; <CódigoXQuery>

­ Tipos de datos XPath v1 y v2 xdt:”http://www.w3.org/2005/xpath­datatypes”­ Cualquier tipo de datos especificado e importado desde un esquema.

Variables

Declaración:  declare variable[<amb>] $<nombre> [as <tdato>]

Asignación:$<nombre> := <valor o equivalente>

Declaración y asignación en la misma linea:  declare variable[<amb>] $<nombre> [as <tdato>[<cardinalidad>]] := <valor o equivalente>

Autor: José Manuel Oyola González, licencia creative commons Ir a Indice Página 14/21

Page 15: Resumen XML v0.1

Resumen Xml v0.1

Secuencias

Declaración:  declare variable[<amb>] $<nombre> as <tdato>[<cardinalidad>]  ­ <cardinalidad> Nº de elementos min/max: ? (0/1), * (0/n), + (1/n)

Asignación:  $<nombre>(<Indice>) := <valor1> /  Inicialización: $<nombre> := (<valor1> [, … <valorN>])

Funciones

Declaración e implementación:declare function [<pref>:]<nombre función>([<parametrosEntradaSepComa>]) as <tdato a devolver> {

.................<variable o equivalente a devolver>;

}

Parámetro entrada: <nombreVar1> as <tdato1>

Instrucciones de control de flujo

Si,...,sino:

if (<Condicion>) then {<SalidaSiCumple> }[else{<SalidaSiNoCumple>]  }

Bucle contador:

for $<NombreVarContador> in (<ini> to <fin>) { … }

Consulta XQuery “FLWOR” (For Let Where Order Return):

Consultas FLWOR de selección sobre un documento xml:Único nodo como resultado Varios nodos como resultado (Iteración):

let <NombreVar> := <SentenciaXPath>/ <FuncionXQuery>/ <Valor>

for <NombreVarPivote1> in <SentenciaXPath1> [, ... <NombreVarPivoteN> in <SentenciaXPathN>][where <CondicionFiltro>][order by <CampoOrdenacion> [descending]]return <Salida>

- <NombreVar> / <NombreVarPivote> Variable donde almacenar el resultado/iterador de la sentencia. - <SentenciaXPath> Sentencia XPath dando como resultado un elemento o conjunto de ellos. - <CondicionFiltro> Filtra el resultado de la sentencia XPath. - <CampoOrdenacion> Ordena el resultado de la sentencia XPath. - <SalidaXQuery> Resultado de la consulta, donde pueden haber contenido mixto tipo Etiqueta/sXml y código XQuery (entre llaves { … }) con variables.

Funciones XQuery

Funciones propias del lenguaje:

Autor: José Manuel Oyola González, licencia creative commons Ir a Indice Página 15/21

Page 16: Resumen XML v0.1

Resumen Xml v0.1

- Funciones de agregación para For...Return: count/sum/min/max/avg(<sentenciaFor...Return>) - Funciones con secuencias: distinct-values(ss), empty(ss)  ­ Funciones con nodos/documentos:    ­ elements collection(String <URI/RutaAXmlExterno>) Nodos colección de un documento xml externo.    ­ element doc(String <URI/RutaAXmlExterno>) Nodo raíz de un documento xml externo.    ­ boolean doc­available(String <URI/RutaAXmlExterno>) True si existe el documento xml externo.  ­ Funciones xpath v1y2 fn:“http://www.w3.org/2005/xpath­functions”

 

Autor: José Manuel Oyola González, licencia creative commons Ir a Indice Página 16/21

Page 17: Resumen XML v0.1

Resumen Xml v0.1

Tratamiento informático de archivos xml.

Existen dos formas básicas de parsear (tratar) documentos xml:- Secuencial El archivo se lee/escribe desde inicio a fin, procesando etiqueta a etiqueta una a una. Existen dos tecnologías: StAX (Streamming Api for Xml) y SAX (Simple Api for Xml) - Ventajas: Requiere poca memoria (se lee/escribe nodo a nodo). Sólo se lee/escribe lo necesario. - Desventajas: Es más difícil de manipular al ser secuencial el acceso. - Tipos de parseo secuencial en escritura: - Parseo pull (StAX): Objeto que escribe elemento a elemento secuencialmente. - Tipos de parseo secuencial en lectura: - Parseo pull (StAX): Objeto que leer elemento a elemento secuencialmente. - Ventajas: Tenemos el control de la lectura y podemos saltar elementos al leer. - Parseo Push (SAX): Objeto que lee el documento elemento a elemento secuencialmente de inicio a fin e invoca eventos sobre un objeto especificado dando información sobre el elemento leído. - Ventajas: Es más apto para documentos pequeños donde se deben de leer en su totalidad.- Aleatoria (Parseo DOM) El archivo se procesa sobre una estructura representativa de objetos en memoria. - Ventajas: Es más fácil de manipular (en muchas modificaciones es más óptimo). - Desventajas: Necesita mucha memoria (el documento se procesa en memoria), Se lee/escribe el documento entero para cualquier cambio), su tratamiento requiere más código fuente.

StAX (Streaming Api for Xml) Tratamiento secuencial (flujo) de documentos xml.

StAX Librerías estándar base para el tratamiento secuencial orientado a flujos de documentos xml.Objetos StAX (javax.xml.parsers): - XMLOutputFactoryStAXv2 Objeto StAXv2 para serializar archivos xml. - XMLOutputFactory XMLOutputFactory.newInstance() Crear nuevo serializador StAXv2. - XMLStreamWriter createXMLStreamWriter(OutputStream/Result o) Serializador StAXv2 hacia o. - XMLStreamWriterStAXv2 Objeto con métodos para escribir secuencialmente en el xml mediante StAXv2. - String get/setDefaultNamespace(String uri) Devuelve/Establece el esp. nombres por defecto a escribir. - String get/setDefaultPrefix(String pref, String uri) Devuelve/Establece el pref. y ns por defecto a escribir. - void writeStart/EndDocument([String cod, [String ver]]) Escribe Inicio/Fin de documento. - void writeStart/EndElement(String lname, [, String pref] [, String uri]) Escribe Inicio/Fin de elemento. - void writeAttribute(String lname, String v, [, String pref] [, String uri]) Escribe atributo. - void writeEmptyElement(String lname, [, String pref] [, String uri]) Escribe de elem. vacío (Inicio-Fin). - void writeCharacters/CData(String cad) Escribe cadena/CData. - void writeComment(String cad) Escribe etiqueta comentario xml. - void write[Default]Namespace([String pref], String uri) Escribe etiqueta de esp. de nomb. [p/defecto]. - void writeEntityReference(String id) Escribe etiqueta de referencia a entidad. - void writeDTD(String dtd) Escribe etiqueta de Dtd. - void writeProcesingInstruction(String k, String v) Escribe etiqueta <? k v ?>. - void flush() / close() Fluchea/Cierra el flujo. - XMLInputFactoryStAXv2 Objeto StAXv2 para deserializar archivos xml. - XMLInputFactory XMLInputFactory.newInstance() Crear nuevo deserializador StAXv2. - XMLStreamReader createXMLStreamReader(InputStream/Source i) Deserializador StAXv2 desde i. - XMLStreamReaderStAXv2 Objeto con métodos para leer secuencialmente el xml mediante StAXv2.

Autor: José Manuel Oyola González, licencia creative commons Ir a Indice Página 17/21

Page 18: Resumen XML v0.1

Resumen Xml v0.1

- String getVersion() Tipo de versión Xml del documento Xml. - String getCharacterEncodingScheme() Tipo de codificación de caracteres del documento Xml. - int next[Tag]() Avanza al siguiente elemento [o etiqueta] y devuelve el tipo (XMLStreamReader.xxx). - boolean isXXX Devuelve si el elemento actual es del tipo consultado. - String getPITarget/Data() Target/Datos de una etiqueta tipo Processing Instruction <?T D?>. - int getAttributeCount() Devuelve número de atributos del elemento. - String getAttribute[Local]Name/Namespace(int i) Nombre [local]/ Esp. nombres del atributo con índice i. - String getAttributePrefix/Type(int i) Prefijo / Tipo del atributo con índice i. - String getAttributeValue(int i) Valor del atributo con índice i. - String getAttributeValue(String sn, String n) Valor del atributo con esp. nombres sn y nombre local n. - String get[Local]Name() Nombre [local]/ Esp. nombres del elemento actual. - String getPrefix() Prefijo del elemento actual. - String getNamespacePrefix(int i) Prefijo del esp. nombres con índice i del elemento actual. - String getNamespaceURI([int i/String pref]) Uri del esp. nombres [con índice/prefijo] del elemento actual. - String getElementText() Contenido de texto de una etiqueta simple. - String getText() Valor (como texto) del elemento actual. - Constantes de tipos de elementos: - XMLStreamReader.START/END_DOCUMENT Inicio/Fin de documento. - XMLStreamReader.DTD, PROCESSING_INSTRUCTION DTD, Instrucción de procesamiento. - XMLStreamReader.COMMENT Comentario. - XMLStreamReader.START/END_ELEMENT, ATTRIBUTE Inicio/Fin de elemento, Atributo. - XMLStreamReader.NAMESPACE, NOTATION_DECLARATION Esp. nombres, Declarac. notación. - XMLStreamReader.CHARACTERS, CDATA, SPACE Caracteres, CDATA, Espacios o ret. carro. - XMLStreamReader.ENTITY_DECLARACTION/REFERENCE Declaración entidad/Referencia.

SAX (Simple Api for xml) Tratamiento secuencial (eventos) de documentos xml.

SAX Librerías estándar base (inicialmente sobre java) para el tratamiento secuencial orientado a eventos de documentos xml. La versión actual de SAX es la v2 que soporta ns en los elementos (la v1 es obsoleta).Objetos SAX (javax.xml.parsers): - SAXParserFactory Fábrica de parseo SAX. - SAXParserFactory SAXParserFactory.newInstance() Obtiene un objeto de fábrica de parseo SAX. - SAXParser newSAXParser() Crea un objeto de parseo SAX. - SAXParser Objeto SAX para deserializar archivos Xml. - void parse(origen, ContentHandler ev)SAXv1 Deserializa origen, ev será el receptor de ev. de deserializac. - XMLReader getXMLReader()SAXv2 Obtiene un objeto deserializador SAXv2. - XMLReaderSAXv2 Objeto deserializador SAXv2. - void setContentHandler(ContentHandler ev) Objeto receptor de los eventos de deserialización. - void parse(origen) Inicia la deserialización del origen. - XmlSerializerSAXv1 Objeto SAXv1 para serializar archivos xml. - XmlSerializer new XmlSerializer(Writer w, OutputFormat f) Crea serializador hacia w con el formato f. - ContentHandler asContentHandler() Objeto ContentHandler para escribir con SAXv1 en la salida. - OutFormatSAXv1 Objeto formateador de salida para SAXv1. - OutputFormat new OutputFormat(String tipo, String cod, true) Formateador “XML”, “UTF-8”.

ContentHandler Interfaz base con métodos/eventos a ejecutar/sobreescribir para escribir/leer mediante SAX.

Autor: José Manuel Oyola González, licencia creative commons Ir a Indice Página 18/21

Page 19: Resumen XML v0.1

Resumen Xml v0.1

<ParmComunes> Parámetros comunes relativos a espacio de nombres de los elementos: - String uri Uri del espacio de nombres. - String localName Nombre de la etiqueta (sin prefijo). - String qName Nombre calificado de la etiqueta (con prefijo de espacio de nombres) - void warning(SAXParserException e) Sucedió un error tipo advertencia al leer. - void error(SAXParserException e) Sucedió un error recuperable al leer. - void fatalError(SAXParserException e) Sucedió un error fatal al leer. - void startDocument() Inicio de documento encontrado. - void endDocument() Fin de documento encontrado. - void startElement(<ParamComunes>, Attributes atts) Inicio de elemento encontrado. - void endElement(<ParamComunes>) Fin de elemento encontrado. - void startPrefixMapping(String prefijo, String uri) Inicio de prefijo encontrado y su enlace a uri. - void endPrefixMapping(String prefijo) Fin de prefijo encontrado. - void skippedEntity(String nombre) Entidad encontrada pero no procesada. - void characters(Char[] c, start ini, int fin) Elemento tipo texto encontrado. - void ignorableWhitespace(Char[] c, start ini, int fin) Elemento tipo texto sin \r, \n o \t encontrado. - void notationDecl(String nombre, String pId, String sId) Nodo tipo <!doctype encontrado. - void processingInstruction(String k, String v) Nodo tipo <? k v ?> encontrado. - void setDocumentLocator(Locator loc) Establece la ruta base del documento xml. - Attributes Interfaz que cumple AttributeList para la gestión de atributos de un elemento. - int getLength() Número de atributos a leer. - String getQName/getURI/getLocalName(int n) Nombre cualificado/Uri/Nombre local del atributo idx. - int getIndex(String uri, String nombLocal)/(String nombcualif) Índice del atributo. (s/param). - String getType(String uri, String nombLocal)/(String nombcualif)/(int idx) Tipo de atrib. (s/param). - String getValue(String uri, String nombLocal)/(String nombcualif)/(int idx) Valor de atrib. (s/param). - DefaultHandler Objeto que implementa ContentHandler y puede ser usado como tal en el caso.

DOM (Document Object Model) Tratamiento aleatorio de documentos xml.

DOM Objetos w3c estándar para el tratamiento aleatorio de documentos xml. DOM aporta una forma unificada tanto en objetos que representan la estructura abstracta de un documento xml como en la forma de procesar el mismo. Los objetos del w3c.dom (son intefaces y clases abstractas que cada parser las utiliza para crear las suyas propias):­ Org.w3c.dom.Node Interfaz Nodo xml básico.  ­ String getNodeName() Nombre del nodo.  ­ int getNodeType() Tipo del nodo (Element.XXX_NODE): DOCUMENT, ELEMENT, ATTRIBUTE,     CDATA_SECTION, TEXT, COMMENT, DOCUMENT_TYPE, ENTITY, ENTITY_REFERENCE, NOTATION  ­ String get/setNodeValue(String v) Valor del nodo.  ­ String get/setPrefix(String v) Prefijo del nodo.  ­ String get/setTextContent(String v) Contenido en texto del nodo (en el caso).  ­ Object get/setContentData(Object v) Datos binarios asociados al nodo (sólo valen en la lógica).  ­ NamedNodeMap getAttributes() Devuelve una lista de pares clave­valor de atributos del nodo.  ­ Node cloneNode() Devuelve un nodo copia.  ­ short compareDocumentPosition(Node n) Devuelve la diferencia de nivel con respecto a otro nodo.

Autor: José Manuel Oyola González, licencia creative commons Ir a Indice Página 19/21

Page 20: Resumen XML v0.1

Resumen Xml v0.1

  ­ boolean hasAttributes() Devuelve true si el nodo contiene atributos.  ­ boolean hasChildNodes() Devuelve true si el nodo contiene nodos hijo.  ­ boolean isDefaultNamespace(String namespace) Devuelve true si el espacio de nombres es el especificado.  ­ boolean isEqualNode(Node n) Devuelve true si el nodo es igual al especificado (sus valores).  ­ boolean isSameNode(Node n) Devuelve true si el nodo es del mismo tipo al especificado.  ­ String getBaseURI() Devuelve la URI del nodo con respecto a la raíz de su documento.  ­ String getNamespaceURI() Devuelve la uri del espacio de nombres del nodo.  ­ Node appendChild(Node n) Añade un nodo especificado como hijo.  ­ void removeChild(Node n) Borra el nodo hijo especificado.  ­ void replaceChild(Node n, Node existente) Reemplaza el nodo hijo existente por el especificado.  ­ Node insertBefore(Node nuevo, Node hermano) Añade un nodo nuevo como hijo antes de un hermano.  ­ NodeList getChildNodes() Devuelve una lista de sus nodos hijos.  ­ Node getParentNode() Devuelve el nodo padre.  ­ Node getFirst/LastChild() Devuelve el primer/último nodo hijo.  ­ Node getNext/PreviousSibbling() Devuelve el siguiente/anterior nodo hermano.  ­ Document getOwnerDocument() Devuelve el documento donde se encuentra el nodo.­ Org.w3c.dom.Element Nodo xml básico (implementa Node).  ­ Attr getAttributeNode(String nombre) Devuelve un atributo por nombre.  ­ Attr getAttributeNodeNS(String nsUri, String nombre) Devuelve un atributo cualificado.  ­ String getAttribute(String nombre) Devuelve el valor de un atributo por nombre.  ­ NodeList getElementsByTagName(String xPath) Devuelve lista de elementos por filtro (desde aquí).  ­ NodeList getElementsByTagNameNS(String nsUri, String nombre) Lista elem. por nombre cualif. (d/a)  ­ String getTagName() Devuelve el nombre de la etiqueta.  ­ boolean hasAttribute(String nombre) Devuelve true si el nodo contiene el atributo especificado.  ­ boolean hasAttributeNS(String nsUri, String nombre) True si el nodo contiene atributo cualif. Especific.  ­ void removeAttribute(String nombre) Borra atributo con nombre especificado.  ­ Att removeAttributeNode(Attr atributo) Borra atributo especificado.  ­ void removeAttributeNS(String nsUri, String nombre) Borra el atributo por nombre cualificado.  ­ void setAttribute(String nombre, String valor) Crea un atributo nuevo con nombre y valor especif.  ­ void setAttributeNode(Attr atributo) Crea un atributo nuevo.  ­ void setAttributeNS(String nsUri, String nombre, valor) Crea un atributo nuevo por nombre canónico.  ­ void setAttributeNodeNS(Attr atributo) Crea un atributo nuevo por nombre canónico.­ Org.w3c.dom.Document Documento xml básico (implementa Node y parte de Element).  ­ Node adoptNode(Node n) Adopta el nodo especificado cambiando su documento padre por este.  ­ String get/setDocumentURI() URI del documento.  ­ String get/setXmlVersion() Version Xml del documento.  ­ Element createElement(String nombre) Crea y devuelve un nuevo nodo.  ­ Comment createComment(String comentario) Crea y devuelve un nuevo nodo de tipo comentario.  ­ Text createTextNode(String texto) Crea y devuelve un nuevo nodo de tipo texto.

Autor: José Manuel Oyola González, licencia creative commons Ir a Indice Página 20/21

Page 21: Resumen XML v0.1

Resumen Xml v0.1

  ­ CDATASection createCDATASection(String texto) Crea y devuelve un nuevo nodo de tipo CDATA.  ­ Element createElementNS(String nsUri, String nombre) Crea y devuelve un nuevo nodo cualificado.  ­ Attr createAttribute(String nombre) Crea y devuelve un nuevo atributo.  ­ Attr createAttributeNS(String nsUri, String nombre) Crea y devuelve un nuevo atributo cualificado.  ­ Element getElementById(String id) Devuelve un nodo por su id único.  ­ ProcessingInstruction createProcessingInstruction(String k, String v) Crea un nodo especial “<? k v ?>”­ Org.w3c.dom.DocumentBuilderFactory Objeto base (fábrica) para crear documentos xml.  ­  DocumentBuilderFactory  DocumentBuilderFactory.newInstance() Crea una instancia de la fábrica.  ­  DocumentBuilder newDocumentBuilder() Devuelve un objeto de creación de documentos xml.­ Org.w3c.dom.DocumentBuilder Objeto base de creación de documentos xml.  ­ Document newDocument() Crea un nuevo documento xml.  ­ DOMImplementation getDOMImplementation() Devuelve el objeto de la implementación DOM.  ­ Document parse(File fi/String uri/InputStream is) Obtiene un documento xml de una fuente específica.­ DOMImplementation Objeto que representa la implementación del DOM utilizada (xerces, sax, etc.).  ­ DocumentType createDocumentType(String nodoPpal, String id, String rutaADtd) Crea nodo dtd.    NOTA: Un elemento DocumentType se debe de insertar con el método insertBefore del objeto Document:                 <VarDocument>.insertBefore(<varDocumentType>, <VarDocument>.getDocumentElement())­ Org.w3c.dom.ls.LSSerializer Objeto serializador de documentos xml. - LSSerializer new LSSerializer() Nuevo serializador (se debe de crear a partir de la implementación). - void setParameter(String nombre, Object valor) Especifica parámetros de comportamiento al serializar. Parámetros: format-pretty-print = true (Especifica sangrado en la salida).  ­ void writeToURI(Node nod, String uriDestino) Serializa a partir del nodo a la uri especifica (file://, …)  ­ String writeToString(Node nod) Serializa a partir del nodo hacia una cadena de salida.  ­ void write(Node nod, LSOutput) Serializa a partir del nodo hacia un serializador predefinido.

XmlBinding (Aplicaciones de mapeo Elemento/s Xml - Clase/s nativa)

XmlBinding Son aplicaciones/Apis que permiten enlazar por ingeniería directa e inversa clase/s nativa/s de un lenguaje de programación a un elemento/s de un documento Xml, permitiendo serializar (marchal) / deserializar (unmarchall) hasta/desde el un documento xml destino/origen.Métodos de mapeo: - Ingeniería directa: En base a anotaciones en las clases nativas se van especificando el mapeo con que elementos del lenguaje xml corresponde. - Ingeniería inversa: En base a un documento de esquema (xslt o dtd) que describe un lenguaje xml se crean las clases en lenguaje nativo que mapearán a dicho esquema.

Autor: José Manuel Oyola González, licencia creative commons Ir a Indice Página 21/21