You are on page 1of 21

Resumen Xml v0.

ndice de contenido
Sntaxis del manual................................................................................................................................................2
Extensive Marckup Language (XML)...................................................................................................................2
XML: La Etiqueta XML...................................................................................................................................2
XML: Etiquetas Xml como contenedores de informacin............................................................................... 2
El Documento XML..............................................................................................................................................3
DTD (Definicin de documento XML).................................................................................................................4
XPath (Lenguaje de acceso a elemento/s Xml).....................................................................................................5
XSD: XML Schema (Definicin de esquema XML)............................................................................................ 6
XSD: Definicin de un documento de esquema xsd........................................................................................ 6
XSD: Asociacin de un esquema en un documento xml (a partir de una etiqueta)..........................................6
XSD: Elemento etiqueta................................................................................................................................... 6
XSD: Tipos de datos bsicos xsd......................................................................................................................7
XSD: Tipos de datos predefinidos.................................................................................................................... 7
XSD: mbito de tipos de datos........................................................................................................................ 7
XSD: Definicin 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 transformacin de datos xml................................................................................................ 10
XSLT: El Documento de transformacin........................................................................................................10
XSLT: Plantillas de transformacin................................................................................................................10
XSLT: Etiquetas de Plantillas de transformacin........................................................................................... 11
XSLT: Funciones.............................................................................................................................................11
XSLT: Localizacin........................................................................................................................................ 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 bsicos............................................................................................................................................... 14
Espacio de nombres.............................................................................................................................................14
Operadores...........................................................................................................................................................14
Sentencia de cdigo 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 informtico 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 Gonzlez, licencia creative commons

Ir a Indice

Pgina 1/21

Resumen Xml v0.1

Sntaxis del manual


[Comando]:Cualquiercomandoentrecorchetesimplicaqueesopcionalypuedeomitirse.
a|b|c:Cualquiercomandounidoaotroconelsmbolopipeline|implicao.Ej:A,oB,oC.
<Interpretar>:Cualquierpalabradentrodelossignos<y>(nonegritas)sedebedeinterpretar.

Extensive Marckup Language (XML)


XML es un lenguaje definido con etiquetas mediante el cual se puede representar cualquier estructura de datos.
- Distingue entre maysculas y minsculas.
- 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 />).
Tipologa de etiquetas segn 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 lneas -->
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 aadiendo 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 informacin


Las etiquetas xml permiten almacenar tipos de datos y su contenido en forma jerrquica (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 puede
contener otras etiquetas y/o texto) y los atributos (que permiten especificar tipos y valores de una forma ms
resumida en la etiqueta).
Autor: Jos Manuel Oyola Gonzlez, licencia creative commons

Ir a Indice

Pgina 2/21

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 tamao 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 jerrquico donde se expresan en forma de rbol
informacin y su estructura.
En un documento xml existe un primer elemento virtual llamado documento raz al cual le sigue un slo
elemento etiqueta llamado nodo raz y partiendo de l, todo su contenido.
Documento xml texto plano:
Interpretacin del documento xml como DOM:
<?xml <AtributosDocumentoSepEspacio> ?>
<NodoRaz>
<Contenido>
</NodoRaz>

<DocumentoRaz>
<NodoRaz>
<Contenido>
</NodoRaz>
</DocumentoRaz>

Atributos de un documento xml:


- version Version xml del documento (version=1.0).
encodingTipodecodificacindecaracteres(encoding=UTF8).
Tiposdevaloresespecficosdeatributosdeetiquetasxmldentrodeundocumento:
idEspecificaqueelvalordelatributoesunidentificadoruniversaldeetiquetadentrodelmismo.
idrefEspecificaqueelvalordelatributoesunenlaceauniduniversaldeotraetiquetadentrodelmismo.
idrefsEspecificaquelosvalorescontenidosenelatributo(separadosporespacio)sonenlacesaids
universalesdeotrasetiquetasdentrodelmismo.

Autor: Jos Manuel Oyola Gonzlez, licencia creative commons

Ir a Indice

Pgina 3/21

Resumen Xml v0.1

DTD (Definicin de documento XML)


DTD es un lenguaje que marca las reglas de etiquetado en la creacin del documento xml que diga cumplirla.
- Etiquetas DTD:
<!ELEMENT <NombreEtiqueta> <Contenido> > Definicin 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 especfico (entre parntesis):
- #PCDATA Contenido tipo texto.
- Etiqueta/s: <Etiqueta1>[<Cardinalidad1>] [<OperadorOrden> <Etiqueta2>[<Cardinalidad2>] ...]
Operadores de orden de etiquetas:
Operadores de cardinalidad de etiqueta;
- a, b A y luego B.
- ? 0 o 1 veces.
- a | b A B.
- * 0 o n veces.
- a, (b|c) A, luego B C.
- + 1 o n veces.
- (Sin cardinalidad) 1 y slo 1 vez.
<!ATTLIST <NombreEtiqueta> <DefinicionAtributosContenidos> > Definicin de atributos de etiqueta.
- Definicion de Atributos Contenidos: <DefinicionAtributo1> [ <DefinicionAtributo2> ]
- Definicion de Atributo: <NombreAtributo> <TipoDatos> <Obligatoriedad> [<ValorPorDefecto>]
- Tipo de datos del atributo:
- CDATA Cualquier carcter y cualquier nmero de ellos.
- NMTOKEN Cualquier letra, nmero, ., -, _, : y cualquier nmero de ellos.
- NMTOKENS Igual a NMTOKEN, adems de esp, tab enter y cualquier nmero 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 ms 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 parntesis)
- (<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).
- Especificacin en un Xml de que cumple un DTD (Etiqueta DOCTYPE despus 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 Gonzlez, licencia creative commons

Ir a Indice

Pgina 4/21

Resumen Xml v0.1

XPath (Lenguaje de acceso a elemento/s Xml)


Xpathesunlenguajequeposibilitamedianteunasintaxispropiaespecificarlareferenciaaunoovarios
elementosdentrodeundocumentoxmlenfuncinadistintasformasdelocalizacin.
LaversinmsutilizadadeXPatheslav1(laqueexplicamosenesteresumen),existiendounav2compatible
haciaatrsconlav1exceptuandolosiguiente:
Cadasentenciadacomoresultadounconjuntodenodossiempre(aunqueseaunnodoelelegido).
Seestablecequeelvalortextodeunnodoesunasecuenciadevalores(aunquehayaslouno)
Portanto,elnico(yprimer)elementodeunasecuenciaserelelementoconndice0.
Sepuedeentodomomentoconsultarlalongituddelasecuenciadetiponodootexto.
LocationpathEslacadenaquedefinelarutaorutas(con|comoseparador)delosnodosareferenciar:
[<nodoContexto>][<rutaAElementoPadre>]<hacha><descripcinElemento/sDeseado/s>
<nodoContexto>Puntodepartidadelaruta,pudiendoser:
Relativoalelementoocontextoactual:Sedejaenblanco.
Absolutoalaraz:Carcterbarra/indicandoraz.
<rutaAElementoPadre>Caminoquehayqueseguirenprofundidadelementotraselementodesdeelnodo
contextohastallegaralelementopadredeldeseado.Comoseparadorentreelementos,seutilizalabarra/
<hacha>Especificalarelacindeposicinconel/loselemento/sdeseado/s:
Descripcindelhacha

Sintaxis

Sintaxisabreviada

Elementonodoactual(contexto)

self::

Elementopadredenodoactual

parent::

..

Elementohijodetiponodo

child::

Elementoshijosdetiponodo

descendant::

//

Elementohijodetipoatributo

attribute::

Elementosconpadreespecificado ancestor::
Nohay
<descripcinElemento/sDeseado/s>Descripcindel/oselemento/sdeseado/s,delasiguienteforma:
<nombreElementoDeseado>[[<predicado>]]
<nombreElementoDeseado>Nombredeelementodeseado,pudiendoutilizarlassiguientesfunciones:
*(asterisco)Todoslosnodosdetipoelementooatributo.
node()Todoslosnodosdecualquiertipo(elemento,atributo,texto,comentario,etc...).
text()Todoslosnodosdetipotexto.
comment()Todoslosnodosdetipocomentario.
processinginstruction()Todoslosnodosdetipo<?kv?>.
[<predicado>]:Permitefiltrarlosnodosresultantesenbaseaquecumplanunaovariascondiciones
(sepermitenoperadoresnot,andyor)olaexistenciadeunelemento(slonombreelemento):
[<elemento>|<funcionPredicado>[<condicin><valor>]]
Funcionesutilizablesdentrodelpredicado:

Autor: Jos Manuel Oyola Gonzlez, licencia creative commons

Ir a Indice

Pgina 5/21

Resumen Xml v0.1

position()Implicanmerodehijo(equivalencia:[position()=<indice>]=>[<indice>])
last()Implicaelltimodeloshijos.
id(identificadorNodoXml)Implicaelelementoconatributoidespecificado.
NOTA:Sieneldocumentoorigenxmlloselementosestnincluidosenalgnespaciodenombres,habrque
importarloenladeclaracindelaetiquetastylesheetyaportarelprefijoelegidoparalasmismasenxPath.

XSD: XML Schema (Definicin de esquema XML)


XSDesunlenguajebasadoenetiquetasxmlque,aligualqueundtd,permitedefiniryvalidarundocumento
xmlenbaseanormasextendidasmsverstilesquelosdtds(yaqueademsdedefinirnormassimples,permite
definircontenidoscomplejosenbaseatiposdedatospredefinidosyvalidacionescomplejassobrelosmismos).

XSD: Definicin de un documento de esquema xsd


Un documento xsd es un documento xml con una etiqueta raz 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 pertenecern los elementos de este xsd.
- xmlns[:pref]="http://www.w3.org/2001/XMLSchema" Espacio de nombres de los elementos xsd.
El prefijo estndar 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: Asociacin de un esquema en un documento xml (a partir de una etiqueta)


<?xml version="1.0" encoding="UTF-8"?>
<EtiquetaRazXml <atributosDeEsquema> [<atributosDeEtiqueta>]> <Contenido> </EtiquetaRazXml>
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 (slo se puede asociar uno):
- xsi:noNamespaceSchemaLocation="<RutaRelatAXsd>" Especifica la ruta a su xsd.

XSD: Elemento etiqueta.


Esunaetiquetaxsdquerepresentaunaetiquetaxmleneldocumentoquerepresenteesteesquema.
<[pref:]element<atributosElemento>>
Descripcincontenido...
Autor: Jos Manuel Oyola Gonzlez, licencia creative commons

Ir a Indice

Pgina 6/21

Resumen Xml v0.1

<[pref:]element>
Atributosdelelemento:
nameNombrelocaldelaetiqueta.
[type]Nombredeltipodedatosquepodrtenerelelemento(sieltipoeslocal,sepuedeobviar).
[default/fixed]Valorpordefecto/fijoquetendrelelemento.
[minOccurs]Valormnimodeocurrenciasdelelemento.Pordefecto=0,unbounded=sinlmite.
[maxOccurs]Valormximodeocurrenciasdelelemento.Pordefecto=1,unbounded=sinlmite.

XSD: Tipos de datos bsicos xsd


Numricos:
[pref:]decimalNmerodecimalgranformato.
[pref:]float/doubleNmerodecimalsimple/doble.
[pref:][unsigned]byte/short/int/longNentero[sinsigno].
[pref:][non]negativeIntegerNmeroentero[no]negativo.
[pref:][non]positiveIntegerNmeroentero[no]positivo.
Cadenasdecaracteres:
[pref:]stringCadenadecualquiercarcterylongitud.
[pref:]normalizedStringStringcon\r\ny\t.
[pref:]languageCdigodelenguajevlido.
[pref:]idIdentificadoruniversalxmleneldocumento.
[pref:]idref/idrefsReferenciaaun/variosids(sep.poresp.).
[pref:]entity/entitiesCadena/squeformanunid.
[pref:]anyURICualquierURIbienformada.

[pref:]notationCadenaqueespecificaunanotacin.
[pref:]name/qname/ncnameNombrevlidoname/qname/ncname.
[pref:]token/nmtoken/nmtokensTipotoken/nmtoken/nmtokens.
Booleanos:
[pref:]booleanBooleano(true/false).
Fechas/Horas:
[pref:]date/timeFecha/horayyyyMMdd/hh:mm:ss.
[pref:]dateTimeFechayhorayyyyMMddThh:mm:ss.
[pref:]durationTiempoPnynMndTnhnmns.
[pref:]gDay/gMonth/gYearNdames/Nmesao/Nao.
[pref:]gMonthDay/gYearMonthDaymes/Mesyao.
Datosbinarios:
[pref:]hexBinaryDatobinarioexpresadoenhexadecimal.
[pref:]base64BinaryDatobinarioexpresadoenbase64.

XSD: Tipos de datos predefinidos


TiposdedatospredefinidosContienenunadefinicinpredefinidadesucontenido.
SimpleEtiquetaqueslopuedeconteneruntipobsicodefinidoolistadelmismotipobasesep.porespac.:
<[pref:]simpleContent<attributos>><DefinicionContenido></[pref:]simpleContent>
CompuestaEtiquetaquepuedeteneratributosy/ocontenidosimpleomixto:
<[pref:]complexType<attrib.>><DefCont1><DefContN><DefAtt1><DefAtt1></[pref:]complexType>
StringnameNombredeltipodedatoscompuestocreado.
BooleanmixedEspecificaqueelcontenidotieneelementosmezclados(elemento,atributo,texto,...).

XSD: mbito de tipos de datos


LocalEltipodedatossedefinedentrodelcuerpodelaetiquetaelementyportantoslovaleparaella.
Def.localelem.simple:<element><simpleContent><DefLocal></simpleContent></element>
Def.localelem.compuest:<element><complexType><DefLocal></complexType></element>
GlobalEltipodedatosesbsicoopredefinidoeneldocumentoxsd.
<elementtype=<NombreTipoDatosBasico/PredefinidoEnDocumentoXSD>></element>

Autor: Jos Manuel Oyola Gonzlez, licencia creative commons

Ir a Indice

Pgina 7/21

Resumen Xml v0.1

XSD: Definicin de contenido en tipos de datos predefinidos


Definicindecontenidoentiposdedatossimple(simpleContent):
ListabsicaListadeelementosenetiquetasimpledeunmismotipobsico(elementossepar.porespacios):
<[pref:]listitemType=<tipoBsico>>]>[<restriccionesDeLista>]</[pref:]list>
Nota:Pararestricciones,crearprimerountipolistabsicoyluegootrotipoconrestriccinsobreelbsico.
Definicindecontenidoentiposdedatoscompuestos(complexType):
Definicindesecuenciadeloselementoscontenidoseneltipocompuestos:
Todos(todos,cualquierorden):<[pref:]all><elem1><elem2>...<elemN></[pref:]all>
Secuencia(todos,mismoorden):<[pref:]sequence><elem1><elem2>...<elemN></[pref:]sequence>
Opcin(alguno):<[pref:]choice><elem1><elem2>...<elemN></[pref:]choice>
Definicindeatributoenelementoscompuestos(tantoscomoatributossedeseen):
<[pref:]attribute<atributosElemento>><DefinicionContenido><[pref:]attribute>
nameNombredelatributo.
[type]Nombredeltipodedatosquepodrtenerlaetiqueta(sieltipoeslocal,sepuedeobviar).
[default]/[fixed]Valorpordefecto/fijoquetendrelelemento.
[use=required]Especificaqueelatributoesobligatorio(pordefectosonopcionales).

XSD: Herencia y mezcla de datos predefinidos


UniondetiposRepresentaunaunindeposiblestiposbsicososimplespreviamentedefinidos:
<[pref:]unionmemeberTypes=<tipo1>[<tipo2>...<tipoN>]/>
ExtensinDefineelcontenidodelelementocomoextensindeotroyaexistente(herenciadetipo):
<[pref:]simple/complexContent>
<[pref:]extensionbase=<tipoExistente>>
<contenidoAdicional>
</[pref:]extension>
</[pref:]simple/complexContent>

XSD: Restricciones aplicables a los contenidos.


Restriccionesdeentrada:
<[pref:]restrictionbase=<tipoDato>><restricciones></[pref:]restriction>
<tipoDato>Tipodedatosaaplicarlasrestricciones.
Notasreferentearestriccionesenlistasdeelementos:
Si<tipoDato>estipolista,implicaquelasrestriccionesseaplicarnacadaelementodelalista.
Si<tipoDato>essubtipodelista,implicaque[min/max]Lengthhacenalusinalnro.deelem.delalista.
Tiposderestriccionesaplicables:
Lmitevalores:<[pref:]min/max[In/Ex]clusive>value=<valor></[pref:]min/max[In/Ex]clusive>
Dgitos:<[pref:]totalDigits>value=<numero></[pref:]totalDigits>
Num.decimales:<[pref:]fractionDigits>value=<numero></[pref:]fractionDigits>
Autor: Jos Manuel Oyola Gonzlez, licencia creative commons

Ir a Indice

Pgina 8/21

Resumen Xml v0.1

Valoresenumerados(tantoscomovalores):<[pref:]enumeration>value=<v1></[pref:]enumeration>
Longitud(lista/cadena):<[pref:]length>value=<longitud></[pref:]length>
Longitudmn/mx(lista/cad):<[pref:]min/maxLength>value=<longitud></[pref:]min/maxLength>
Expresinregular:<[pref:]pattern>value=<exp.Regular></[pref:]pattern>
Transformacindedatosdeentrada:
Reemplazocaracteres(lf,cr,tab,esp):<[pref:]whiteSpace>value=<valor></[pref:]whiteSpace>
Valoresposibles:preserve:sincambios,replace/collapse:Reemplazarconvarios/unespacio.

Autor: Jos Manuel Oyola Gonzlez, licencia creative commons

Ir a Indice

Pgina 9/21

Resumen Xml v0.1

XSLT Lenguaje de transformacin de datos xml


XSLTesunlenguajemedianteelcualsepuedentratarlosdatosdeundocumentoxmlasociadoydarun
documentoxmlcomosalida(porejemploundocumentoxhtmlvisualizableenunnavegadorweb).
Dentrodeundocumentoxsltseespecificalalgicadetransformacinytratamientodelasetiquetasxmldel
documentoasociadoquesetienencomoentradaparadarlasalidaxmldeseada.

XSLT: El Documento de transformacin


Declaracindedocumentoxmldetransformacin(extensinxsl):
<[pref:]stylesheet<atributos>><etiquetasXslt></[pref:]stylesheet>
Prefijoestndar:xsl.Atributos:
version=1.0Versindelestndarxslt(laversin2annoesestndar)
xmlns:xsl=http://www.w3.org/1999/XSL/TransformEsp.denomb.delasetiquetasdetransformacin.
Parmetrosdeentradaaldocumentodetransformacin:Permiteutilizarsuvalordentrocomovariable.
Etiquetaxsltparam:<[pref:]paramname=<nombreParametroEntrada>/>
Enlazareldocumentoxmlconelxsl:
<?xmlstylesheettype=text/xslhref=URLAArchivoXsl.xsl?>

XSLT: Plantillas de transformacin


Latransformacindeundocumentodeentradaxmlhaciaunodesalida(tambinxml)serealizacreando
plantillasdetransformacineneldocumentoxslporcadaelementooconjuntodeelementosatransformarenla
entradayaplicndolosadichoselementos.
DefinicindeplantilladetransformacinDefinelaplantillaconlatransformacinaaplicaraloselementos
deldocumentoxmlcoincidentessegnlaexpresinxPathopasadosporparmetros:
<[pref:]template[name=<nombrePlantilla>]match=<expresionXPath>>
<!Parmetrosdeentrada(unoporcada)>
<[pref:]param[name=<nombreParametro>][select=<expresionXPathValorPorDefecto>]/>
<!Etiquetasdetransformacin>
</[pref:]template>
nameNombredelaplantilla(parapoderinvocarlacomomtodo)
matchExpresinxPathcondefinicindenodo/sdeldocumentoxmlquetratarestaplantilla.
AplicacindeplantilladetransformacinEjecucindetransformacindeunaplantillaexistente.
EjecucinporcoincidenciaenxPathSeejecutalaplantillaquecoincidaconelpatrn[/poromisin]
<[pref:]applytemplates[select=<expresionXPath>]/>
EjecucinpornombreSeejecutalaplantillaquecoincidaconelnombreyopcionalmentesepasanparm.
<[pref:]calltemplatename=<nombrePlantilla>>
<!Parmetrosdellamada(unoporcada)>
<[pref:]withparamname=<nombreParametro>select=<expresionXPathValorParametro>/>

Autor: Jos Manuel Oyola Gonzlez, licencia creative commons

Ir a Indice

Pgina 10/21

Resumen Xml v0.1

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

XSLT: Etiquetas de Plantillas de transformacin


VariablesEnlaplantillasepermitedeclararvariablesparasimplificarelcontenidodelosatributos.
Declaracin:<[pref:]variablename=<nombreVariable>select=<expresionXPath>/>
nameNombredelavariableadeclararenlaplantilla.
selectExpresinxPathconelelementodesdedondecogerelvalordelavariable.
Uso:$<nombreVariable>PermitehacerusodesuvalordentrodecualquieratributooexpresinXPath.
ValorencadenaRepresentacinencadenadelvalordecualquierelemento/ssegnsuexpresinxPath.
<[pref:]valueofselect=<expresionXPath>/>
InstruccionesdecontroldeflujoPermitendarunaciertalgicadinmicaalatransformacin.
Sentenciasi(if)

Sentenciaencasode(select)

<[pref:]iftest=<Exp.XPathBooleana>>
<transformacinEnCasoTrue>
</[pref:]if>

<[pref:]choose>
<[pref:]whentest=<Exp.XPathBooleana1>>
<transformacinEnCasoExp.XPathBooleana1>
</[pref:]when>

<[pref:]otherwise>
<transformacinEnCualquierOtroCaso>
</[pref:]otherwise>
</[pref:]choose>

Iteradorporcadaelemento...(foreach...)
<[pref:]foreachselect=<Exp.XPathElementos>
[<[pref:]sortselect=<Exp.XPathOrden>
order=<TipoOrdenacion>/>
<transformacinPorCadaElemento>
</[pref:]foreach>

testExpresinXPathbooleanadetipocomparativa:<Exp.XPath><comparacin><Exp.XPath/Valor>
select(foreach)ExpresinXPathqueresulteunconjuntodeelemento/squeseutilizarnparaiterar.
select(sort)ExpresinXPathconrutaalelem.dentrodelconjuntoporcuyovalorseordenarlaiteracin.
orderTipodeordenacindelaiteracin:ascending(Ascendente),descending(Descendente).
<transformacinXXX>Seccinconlatransformacinarealizarbajoesecontexto.

XSLT: Funciones
XSLTTraeconsigounaseriedefuncionesdeapoyoparalalgicadelasplantillas.
Funcionesbsicasxsltv1:
Elementcurrent()Devuelveelnodoactual(puedenoserelmismoqueelnodocontexto)
Stringname()Nombrelocaldelnodoseleccionado(sinespaciodenombres).
Stringlocalname()Nombredelnodoseleccionadoconelprefijodesuespaciodenombres(silotuviera).
Stringnamespaceuri()Nombredelauridelespaciodenombresdelnodoseleccionado(silotuviera).
Stringgenerateid()Identificadoruniversal/hashautogeneradoparaunnodoespecificado.
Autor: Jos Manuel Oyola Gonzlez, licencia creative commons

Ir a Indice

Pgina 11/21

Resumen Xml v0.1

Intcount()Nmerodenodosseleccionado.
booleanexists(String<XPathAElemento>)Truesiexisteelelemento.
elementdocument/doc(String<RutaAXmlExterno>)Nodorazdeundocumentoxmlexterno.
booleandocument/docavailable(String<RutaAXmlExterno>)Truesiexisteeldocumentoxmlexterno.
booleanelementavailable(String<etiqueta>)Truesielparsexsltsoportaunaetiqueta.
booleanfunctionavailable(String<funcin>)Truesielparsexsltsoportaunafuncin.
Stringformatnumber(<nmero>,<formato>[,<formatoDecimal>])Devuelveunnmeroformateado.
Caracteresformato:0(dgito),#(dgitosincero),.(sep.decimal),,sep.miles,;(sep.formato+)
Funcionesextendidasxsltv2:Prefijofn,espaciodenombreshttp://www.w3.org/2005/xpathfunctions
Listadodefuncionesbsicas(todasendireccinhttp://www.w3schools.com/xpath/xpath_functions.asp):
Nmericas:
- String fn:upper/lower-case(s) S a May/Min.
- number fn:number(arg) Convierte a nmero.
- boolean fn:contains(s1, s2) s1 est en s2?
- number fn:abs(num) Valor absoluto de num.
- boolean fn:starts/ends-with(s1, s2) s1 ini/fin s2?
- number fn:ceiling(num) Redondeo (>.1=>+1).
- boolean fn:matches(s, exreg) s cumple exreg?
- number fn:floor(num) Redondeo neg.(>-.1=>-1).
- String fn:replace(s,exreg,r) Reemp. exreg s x r.
- number fn:round(num) Redondeo (>.5=>+1).
Booleanos:
- number fn:round-half-to-even(num, ndec) Red.
- boolean fn:boolean(string s) Conv. A bool.
- number fn:avg(sec) Media aritm. de secuencia.
- boolean fn:not(boolean v) No v.
- number fn:sum(sec) Suma de secuencia.
- boolean fn:true/false() T/F Booleano.
- number fn:min(sec) Mnimo valor de secuencia.
Fechas:
- number fn:max(sec) Mximo valor de secuencia.
- DT fn:dateTime(Da d,Ti t) DT desde Da y Ti.
Cadenas:
- int fn:X-from-duration(Du du) X de Du.
- String fn:string(arg) Conv. A cadena.
- int fn:X/timezone-from-DT(DT dt) X de DT.
- int fn:compare(comp1,comp2) Compara.
- int fn:X/timezone-from-date(Da d) X de Da.
- String fn:concat(string1, string2,...) Concatena.
- Da/Ti/DT fn:current-Da/Ti/DT() Fech./Hor. act.
- String fn:string-join((string,string,...),sep) Union. - timeZone fn:implicit-timezone() Zona horaria.
- String fn:substring(string,start [,len]) Subcad.
Du(Duration),DT(DateTime), Da(Date),Ti(Time)
- String fn:substring-before/after(s,p) SCad a/d piv. X=years/months/days/hours/minutes/seconds
- int fn:string-length(string) Longitud cad.

XSLT: Localizacin
Xslt v1 de por s no admite localizacin, por lo que tendremos que hacer uso de funciones de terceros para ello:
- string.xsl Librera xsl (xsltsl.org) para el tratamiento de cadenas de texto.
- numbers.xsl Librera xsl (xsltsl.org) para el tratamiento de nmeros.
- date-time.xsl Librera xsl (xsltsl.org) para el tratamiento de fechas/horas.
- locale.xml/.xsd Archivo xml (y su correspondiente esquema) con la localizacin 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 localizacin deseada indicando en id el cdigo de lenguaje y pas a localizar-->
<config id="en_GB">
<!-- Formatos numricos y de fechas para esta localizacin-->
<number numberFormat="###,###.00" currencyFormat="###,###.00 "/> <!-- Formato numrico 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 localizacin-->
<!-- 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 Gonzlez, licencia creative commons

Ir a Indice

Pgina 12/21

Resumen Xml v0.1

</config>
</locals>

Cdigos de formateo de nmeros y monedas:


- # / 0 Dgito Entero/Decimal.
- , / . Separador de Miles/Decimal.
- % / %% Carcter Porciento/Por mil.
- - / ;: Nmero Negativo/Separador entre nmeros positivos y negativos.
Cdigos de formateo de Fecha/Hora:
- %c / %x /%X Fecha y Hora/Fecha/Hora formateada para locale p/defecto.
- %y / %Y Nmero de ao con dos/cuatro dgitos.
- %U / %W Nmero de semana del ao con dom/lun como 1er da.
- %m / %n Nmero de mes del ao con/sin ceros a la izquierda.
- %B / %b Nombre del mes del ao entero/abreviado.
- %j Nmero de da del ao con ceros a la izquierda.

- %w Nmero del da de la semana 0=dom.


- %A / %a Nombre del da de la semana entero/abreviado.
- %d / %e Nmero de da del mes con/sin ceros a la izquierda.
- %H / %h Nmero de hora(24h) con/sin ceros a la izquierda.
- %I / %i Nmero de hora(12h) con/sin ceros a la izquierda.
- %M Nmero de minutos con ceros a la izquierda.
- %S Nmero de segundos con ceros a la izquierda.
- %P / %p Cad AM/PM formateada para la locale p/defecto may/minscula.
- %Q / %q Cad AM/PM + periodos formateada para locale p/defecto may/min.
- %z Zona horaria.
- %% / T Smbolo porcentaje/Separador entre Fecha y Hora.

Aplicacin 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 libreras externas -->
<xsl:param name="localeUri" select="'locale.xml'"/> <!-- Uri donde se encuentra el archivo de localizacin -->
<!-- Guardamos en loc el nombre de la locale a utilizar en la hoja de estilos (definida por el atributo lang del nodo raz). -->
<xsl:param name="loc" select="//@lang"/> <!-- Alusin al nodo / @atributo en el archivo de datos (.xml) con la localizacin. -->
<!-- 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 libreras 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 segn la configuracin 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 nmero localizado segn la configuracin 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 nmero a localizar -->
<xsl:with-param name="format">
<xsl:value-of select="$locale/number/@currencyFormat" /> <!-- Tipo de nm. localiz. del documento xml de locales (por su atributo) -->
</xsl:with-param>
</xsl:call-template> <br/>

Autor: Jos Manuel Oyola Gonzlez, licencia creative commons

Ir a Indice

Pgina 13/21

Resumen Xml v0.1

XQuery (Lenguaje unificado de consultas sobre datos Xml).


XQuery es un lenguaje de consulta parecido a SQL sobre orgenes de datos Xml, permitiendo la consulta o
transformacin de informacin 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 bsicos
(:Comentariodevarias
lineas...:)

{.........delimitador
detrozodecdigo(mbito).....}

delimitadordefindelnea:;

Espacio de nombres
Declaracindembito:declarenamespace<pref>=<espacioNombres>;
Importacin:
- Esquema XSD: import schema namespace <pref> = "<espacioNombres>" [ at "<URIArchivoXSD>"]
MduloXQuery:importmodulenamespace<pref>="<espacioNombres>"[at"<URIModuloXQuery>"]

Operadores
Aritmticos
Suma
Resta
Multipl.
Div(ent)
Div(dec)
Resto

*
div
idiv
mod

Lgicos
And(bool)
Or(bool)
not

and
or
not

Comparadores
Igual
Diferente
Menor
MenorOIgual
Mayor
MayorOIgual

eq
ne
lt
le
gt
ge

=
!=
<
<=
>
>=

Sentencia de cdigo Xquery y tipos de datos soportados (<tdato>)


Consulta XQuery:

Tipos de datos soportados en XQuery

xquery version 1.0


encoding UTF-8;
<CdigoXQuery>

TiposdedatosXPathv1yv2xdt:http://www.w3.org/2005/xpathdatatypes
Cualquiertipodedatosespecificadoeimportadodesdeunesquema.

Variables
Declaracin:
declarevariable[<amb>]$<nombre>[as<tdato>]

Asignacin:
$<nombre>:=<valoroequivalente>

Declaracinyasignacinenlamismalinea:
declarevariable[<amb>]$<nombre>[as<tdato>[<cardinalidad>]]:=<valoroequivalente>
Autor: Jos Manuel Oyola Gonzlez, licencia creative commons

Ir a Indice

Pgina 14/21

Resumen Xml v0.1

Secuencias
Declaracin:declarevariable[<amb>]$<nombre>as<tdato>[<cardinalidad>]
<cardinalidad>Ndeelementosmin/max:?(0/1),*(0/n),+(1/n)
Asignacin:$<nombre>(<Indice>):=<valor1>/Inicializacin:$<nombre>:=(<valor1>[,<valorN>])

Funciones
Declaracineimplementacin:
declarefunction[<pref>:]<nombrefuncin>([<parametrosEntradaSepComa>])as<tdatoadevolver>{
.................
<variableoequivalenteadevolver>;
}
Parmetroentrada:<nombreVar1>as<tdato1>

Instrucciones de control de flujo


Si,...,sino:

Buclecontador:

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

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

Consulta XQuery FLWOR (For Let Where Order Return):


Consultas FLWOR de seleccin sobre un documento xml:
nico nodo como resultado
Varios nodos como resultado (Iteracin):
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
cdigo XQuery (entre llaves { }) con variables.

Funciones XQuery
Funciones propias del lenguaje:
Autor: Jos Manuel Oyola Gonzlez, licencia creative commons

Ir a Indice

Pgina 15/21

Resumen Xml v0.1

- Funciones de agregacin para For...Return: count/sum/min/max/avg(<sentenciaFor...Return>)


- Funciones con secuencias: distinct-values(ss), empty(ss)
Funcionesconnodos/documentos:
elementscollection(String<URI/RutaAXmlExterno>)Nodoscoleccindeundocumentoxmlexterno.
elementdoc(String<URI/RutaAXmlExterno>)Nodorazdeundocumentoxmlexterno.
booleandocavailable(String<URI/RutaAXmlExterno>)Truesiexisteeldocumentoxmlexterno.
Funcionesxpathv1y2fn:http://www.w3.org/2005/xpathfunctions

Autor: Jos Manuel Oyola Gonzlez, licencia creative commons

Ir a Indice

Pgina 16/21

Resumen Xml v0.1

Tratamiento informtico de archivos xml.


Existen dos formas bsicas de parsear (tratar) documentos xml:
- Secuencial El archivo se lee/escribe desde inicio a fin, procesando etiqueta a etiqueta una a una.
Existen dos tecnologas: StAX (Streamming Api for Xml) y SAX (Simple Api for Xml)
- Ventajas: Requiere poca memoria (se lee/escribe nodo a nodo). Slo se lee/escribe lo necesario.
- Desventajas: Es ms difcil 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 informacin sobre el elemento ledo.
- Ventajas: Es ms apto para documentos pequeos 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 ms fcil de manipular (en muchas modificaciones es ms ptimo).
- Desventajas: Necesita mucha memoria (el documento se procesa en memoria), Se lee/escribe el documento
entero para cualquier cambio), su tratamiento requiere ms cdigo fuente.

StAX (Streaming Api for Xml) Tratamiento secuencial (flujo) de documentos xml.
StAX Libreras estndar 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 mtodos 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. vaco (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 mtodos para leer secuencialmente el xml mediante StAXv2.
Autor: Jos Manuel Oyola Gonzlez, licencia creative commons

Ir a Indice

Pgina 17/21

Resumen Xml v0.1

- String getVersion() Tipo de versin Xml del documento Xml.


- String getCharacterEncodingScheme() Tipo de codificacin 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 nmero 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, Instruccin de procesamiento.
- XMLStreamReader.COMMENT Comentario.
- XMLStreamReader.START/END_ELEMENT, ATTRIBUTE Inicio/Fin de elemento, Atributo.
- XMLStreamReader.NAMESPACE, NOTATION_DECLARATION Esp. nombres, Declarac. notacin.
- XMLStreamReader.CHARACTERS, CDATA, SPACE Caracteres, CDATA, Espacios o ret. carro.
- XMLStreamReader.ENTITY_DECLARACTION/REFERENCE Declaracin entidad/Referencia.

SAX (Simple Api for xml) Tratamiento secuencial (eventos) de documentos xml.
SAX Libreras estndar base (inicialmente sobre java) para el tratamiento secuencial orientado a eventos de
documentos xml. La versin actual de SAX es la v2 que soporta ns en los elementos (la v1 es obsoleta).
Objetos SAX (javax.xml.parsers):
- SAXParserFactory Fbrica de parseo SAX.
- SAXParserFactory SAXParserFactory.newInstance() Obtiene un objeto de fbrica 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 deserializacin.
- void parse(origen) Inicia la deserializacin 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 mtodos/eventos a ejecutar/sobreescribir para escribir/leer mediante SAX.

Autor: Jos Manuel Oyola Gonzlez, licencia creative commons

Ir a Indice

Pgina 18/21

Resumen Xml v0.1

<ParmComunes> Parmetros 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 gestin de atributos de un elemento.
- int getLength() Nmero 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.


DOMObjetosw3cestndarparaeltratamientoaleatoriodedocumentosxml.DOMaportaunaformaunificada
tantoenobjetosquerepresentanlaestructuraabstractadeundocumentoxmlcomoenlaformadeprocesarel
mismo.Losobjetosdelw3c.dom(sonintefacesyclasesabstractasquecadaparserlasutilizaparacrearlas
suyaspropias):
Org.w3c.dom.NodeInterfazNodoxmlbsico.
StringgetNodeName()Nombredelnodo.
intgetNodeType()Tipodelnodo(Element.XXX_NODE):DOCUMENT,ELEMENT,ATTRIBUTE,
CDATA_SECTION,TEXT,COMMENT,DOCUMENT_TYPE,ENTITY,ENTITY_REFERENCE,NOTATION

Stringget/setNodeValue(Stringv)Valordelnodo.
Stringget/setPrefix(Stringv)Prefijodelnodo.
Stringget/setTextContent(Stringv)Contenidoentextodelnodo(enelcaso).
Objectget/setContentData(Objectv)Datosbinariosasociadosalnodo(slovalenenlalgica).
NamedNodeMapgetAttributes()Devuelveunalistadeparesclavevalordeatributosdelnodo.
NodecloneNode()Devuelveunnodocopia.
shortcompareDocumentPosition(Noden)Devuelveladiferenciadenivelconrespectoaotronodo.
Autor: Jos Manuel Oyola Gonzlez, licencia creative commons

Ir a Indice

Pgina 19/21

Resumen Xml v0.1

booleanhasAttributes()Devuelvetruesielnodocontieneatributos.
booleanhasChildNodes()Devuelvetruesielnodocontienenodoshijo.
booleanisDefaultNamespace(Stringnamespace)Devuelvetruesielespaciodenombreseselespecificado.
booleanisEqualNode(Noden)Devuelvetruesielnodoesigualalespecificado(susvalores).
booleanisSameNode(Noden)Devuelvetruesielnodoesdelmismotipoalespecificado.
StringgetBaseURI()DevuelvelaURIdelnodoconrespectoalarazdesudocumento.
StringgetNamespaceURI()Devuelvelauridelespaciodenombresdelnodo.
NodeappendChild(Noden)Aadeunnodoespecificadocomohijo.
voidremoveChild(Noden)Borraelnodohijoespecificado.
voidreplaceChild(Noden,Nodeexistente)Reemplazaelnodohijoexistenteporelespecificado.
NodeinsertBefore(Nodenuevo,Nodehermano)Aadeunnodonuevocomohijoantesdeunhermano.
NodeListgetChildNodes()Devuelveunalistadesusnodoshijos.
NodegetParentNode()Devuelveelnodopadre.
NodegetFirst/LastChild()Devuelveelprimer/ltimonodohijo.
NodegetNext/PreviousSibbling()Devuelveelsiguiente/anteriornodohermano.
DocumentgetOwnerDocument()Devuelveeldocumentodondeseencuentraelnodo.
Org.w3c.dom.ElementNodoxmlbsico(implementaNode).
AttrgetAttributeNode(Stringnombre)Devuelveunatributopornombre.
AttrgetAttributeNodeNS(StringnsUri,Stringnombre)Devuelveunatributocualificado.
StringgetAttribute(Stringnombre)Devuelveelvalordeunatributopornombre.
NodeListgetElementsByTagName(StringxPath)Devuelvelistadeelementosporfiltro(desdeaqu).
NodeListgetElementsByTagNameNS(StringnsUri,Stringnombre)Listaelem.pornombrecualif.(d/a)
StringgetTagName()Devuelveelnombredelaetiqueta.
booleanhasAttribute(Stringnombre)Devuelvetruesielnodocontieneelatributoespecificado.
booleanhasAttributeNS(StringnsUri,Stringnombre)Truesielnodocontieneatributocualif.Especific.
voidremoveAttribute(Stringnombre)Borraatributoconnombreespecificado.
AttremoveAttributeNode(Attratributo)Borraatributoespecificado.
voidremoveAttributeNS(StringnsUri,Stringnombre)Borraelatributopornombrecualificado.
voidsetAttribute(Stringnombre,Stringvalor)Creaunatributonuevoconnombreyvalorespecif.
voidsetAttributeNode(Attratributo)Creaunatributonuevo.
voidsetAttributeNS(StringnsUri,Stringnombre,valor)Creaunatributonuevopornombrecannico.
voidsetAttributeNodeNS(Attratributo)Creaunatributonuevopornombrecannico.
Org.w3c.dom.DocumentDocumentoxmlbsico(implementaNodeypartedeElement).
NodeadoptNode(Noden)Adoptaelnodoespecificadocambiandosudocumentopadreporeste.
Stringget/setDocumentURI()URIdeldocumento.
Stringget/setXmlVersion()VersionXmldeldocumento.
ElementcreateElement(Stringnombre)Creaydevuelveunnuevonodo.
CommentcreateComment(Stringcomentario)Creaydevuelveunnuevonododetipocomentario.
TextcreateTextNode(Stringtexto)Creaydevuelveunnuevonododetipotexto.
Autor: Jos Manuel Oyola Gonzlez, licencia creative commons

Ir a Indice

Pgina 20/21

Resumen Xml v0.1

CDATASectioncreateCDATASection(Stringtexto)CreaydevuelveunnuevonododetipoCDATA.
ElementcreateElementNS(StringnsUri,Stringnombre)Creaydevuelveunnuevonodocualificado.
AttrcreateAttribute(Stringnombre)Creaydevuelveunnuevoatributo.
AttrcreateAttributeNS(StringnsUri,Stringnombre)Creaydevuelveunnuevoatributocualificado.
ElementgetElementById(Stringid)Devuelveunnodoporsuidnico.
ProcessingInstructioncreateProcessingInstruction(Stringk,Stringv)Creaunnodoespecial<?kv?>
Org.w3c.dom.DocumentBuilderFactoryObjetobase(fbrica)paracreardocumentosxml.
DocumentBuilderFactoryDocumentBuilderFactory.newInstance()Creaunainstanciadelafbrica.
DocumentBuildernewDocumentBuilder()Devuelveunobjetodecreacindedocumentosxml.
Org.w3c.dom.DocumentBuilderObjetobasedecreacindedocumentosxml.
DocumentnewDocument()Creaunnuevodocumentoxml.
DOMImplementationgetDOMImplementation()DevuelveelobjetodelaimplementacinDOM.
Documentparse(Filefi/Stringuri/InputStreamis)Obtieneundocumentoxmldeunafuenteespecfica.
DOMImplementationObjetoquerepresentalaimplementacindelDOMutilizada(xerces,sax,etc.).
DocumentTypecreateDocumentType(StringnodoPpal,Stringid,StringrutaADtd)Creanododtd.
NOTA:UnelementoDocumentTypesedebedeinsertarconelmtodoinsertBeforedelobjetoDocument:
<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 implementacin).
- void setParameter(String nombre, Object valor) Especifica parmetros de comportamiento al serializar.
Parmetros: format-pretty-print = true (Especifica sangrado en la salida).
voidwriteToURI(Nodenod,StringuriDestino)Serializaapartirdelnodoalauriespecifica(file://,)
StringwriteToString(Nodenod)Serializaapartirdelnodohaciaunacadenadesalida.
voidwrite(Nodenod,LSOutput)Serializaapartirdelnodohaciaunserializadorpredefinido.

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


XmlBinding Son aplicaciones/Apis que permiten enlazar por ingeniera directa e inversa clase/s nativa/s de un
lenguaje de programacin a un elemento/s de un documento Xml, permitiendo serializar (marchal) / deserializar
(unmarchall) hasta/desde el un documento xml destino/origen.
Mtodos de mapeo:
- Ingeniera directa: En base a anotaciones en las clases nativas se van especificando el mapeo con que
elementos del lenguaje xml corresponde.
- Ingeniera inversa: En base a un documento de esquema (xslt o dtd) que describe un lenguaje xml se crean
las clases en lenguaje nativo que mapearn a dicho esquema.

Autor: Jos Manuel Oyola Gonzlez, licencia creative commons

Ir a Indice

Pgina 21/21

You might also like