Direccionamiento, enlaces y formularios en XML
Jose Emilio Labra Gayo
Contenidos
Direcciones relativas e inclusiones
XPointer
XLink
Direcciones absolutas vs relativas
Las URLs pueden contener:
I Direcciones absolutas. Por ejemplo:
http://www.uniovi.es/cursos/xml/alumnos.html
I Direcciones relativas. Por ejemplo:
../notas/alumnos.html Las direcciones relativas se resuelven respecto al documento actual.
En HTML era posible indicar una direcci´on de base mediante BASE
<HEAD> <TITLE>N o t a s</TITLE> <BASE h r e f=” h t t p : / /www . u n i o v i . e s / c u r s o s / xml / a l u m n o s . h t m l ”> </HEAD> <BODY> <A h r e f=” . . / n o t a s / n o t a s . h t m l ”>N o t a s</A> </HTML>
xml:Base
Permite especificar la URL de base de un documento XML
Las direcciones relativas tomar´an dicha URL como base
<h t m l x m l n s=” h t t p : //www . w3 . o r g /TR/ x h t m l 1 / s t r i c t ”> x m l : b a s e=” h t t p : //www . u n i o v i . e s / c u r s o s ”> <h e a d><t i t l e>L i s t a de c u r s o s</ t i t l e></ h e a d> <body> <p><a h r e f=” c u r s o s . h t m l ”>C u r s o s</ a></ p> <u l> <l i><a h r e f=” c o c i n a . h t m l ”>C o c i n a</ l i> <l i><a h r e f=” b a i l e . h t m l ”>B a i l e</ l i> </ u l> </ h t m l>
xml:Base
El atributoxml:base puede a su vez ser relativo
<h t m l x m l n s=” h t t p : //www . w3 . o r g /TR/ x h t m l 1 / s t r i c t ”> x m l : b a s e=” h t t p : //www . u n i o v i . e s / c u r s o s ”> <h e a d><t i t l e>L i s t a de c u r s o s</ t i t l e></ h e a d> <body> . . . <u l x m l : b a s e=” . . / d e p o r t e s ”> <l i><a h r e f=” b a s k e t . h t m l ”>B a l o n c e s t o</ l i> <l i><a h r e f=” g i m n a s i a . h t m l ”>G i m n a s i a</ l i> </ u l> </ h t m l>
Inclusiones de XML
XInclude (2004) es una recomendaci´on que permite incluir
documentos XML dentro de otros documentos
Exist´ıa la posibilidad de realizar inclusiones mediante entidades en los DTDs
Se define un elementoinclude
<p e r s o n a s x m l n s : x i=” h t t p : //www . w3 . o r g / 2 0 0 1 / X I n c l u d e ”> <x i : i n c l u d e h r e f=” a l u m n o s . xml ” />
<x i : i n c l u d e h r e f=” p r o f e s o r e s . xml ” /> </ p e r s o n a s>
Atributos de XInclude
I href indica la URI. Si no se incluye, se supone que es ,
indicando el propio documento
I parse indica si el recurso a incluir es estructurado (xml) o textual (text)
I xpointerindica la porci´on del documento a incluir. S´olo se permite cuanto parse="xml"
I encodingindica tipo de codificaci´on
I acceptyaccept-language
per-miten realizar negociaci´on de contenido con el protocolo HTTP
<x i : i n c l u d e h r e f=” p r o f e s o r e s . xml ”
´
Ultimo recurso (fallback)
fallbackpermite especificar el contenido que se incluir´a en caso de que no sea accesible el recurso externo
<x i : i n c l u d e h r e f=” p r o f e s o r e s . xml ”> <x i : f a l l b a c k>
No h a y p r o f e s o r e s
</ x i : f a l l b a c k> </ x i : i n c l u d e>
´
Ultimo recurso (fallback)
Es posible utilizar varias posibilidades
<x i : i n c l u d e h r e f=” p r o f e s o r e s . xml ”> <x i : f a l l b a c k> <x i : i n c l u d e h r e f=” a y u d a n t e s . xml ”> <x i : f a l l b a c k> No h a y p r o f e s o r e s n i a y u d a n t e s </ x i : f a l l b a c k> </ x i : i n c l u d e> </ x i : f a l l b a c k> </ x i : i n c l u d e>
Apuntadores en HTML
HTML inclu´ıa un mecanismo para apuntar a partes de una p´agina
Web
http://www.uniovi.es/alumnos.html#pepeapuntaba al
XPointer
XPointer ofrece un mecanismo gen´erico para se˜nalar partes de un documento XML
Objetivo: ofrecer funcionalidad que permita marcar porciones de documentos XML
Esta funcionalidad fue utilizada previamente e incluso patentada por Sun
XPointer en v´ınculos
Se identifica mediantexpointer(expr) dondeexpr es una
expresi´on XPath
Pueden encadenarse varias expresiones XPointer. Selecciona el contenido de la primera que no falle
Las URIs pueden contener un identificador de fragmento XPointer De momento no es soportado por los principales navegadores Suele utilizarse en combinaci´on con XLink
alumnos.html#xpointer(//nombre[position()=last()])"
Apuntadores abreviados
Si no se indica nada, se refiere al elemento con el valor ID del documento
http://www.uniovi.es/alumnos.html#pepese refiere al
elemento cuyo valor ID espepe
Secuencias de hijos
Habitualmente se necesita referirse a una secuencia de hijos Ejemplo: tercer hijo del segundo hijo del elemento ra´ız
x p o i n t e r ( / c h i l d ::∗[ p o s i t i o n ()=1/ c h i l d ::∗[ p o s i t i o n ( ) = 2 ] / c h i l d ::∗[ p o s i t i o n ( ) = 3 ] )
Puede simplificarse como:
Espacios de nombre
xmlns(a=e)es un mecanismo que permite asociar el aliasaal
espacio de nombrese
x p o i n t e r ( s v g=h t t p : //www . w3 . o r g / 2 0 0 0 / s v g ) x p o i n t e r ( / / s v g : r e c t )
Puntos
En ocasiones, puede interesar seleccionar algo que no sea un elemento.
Por ejemplo, la tercera palabra de un p´arrafo o el a˜no en
12/06/2004
Los puntos se identifican por su nodo contenedos y un ´ındice (comenzando por 0)
Los nodos de texto tienen un punto inicial 0 y un punto entre cada
car´acter numerado de forma consecutiva
Ejemplo:<nombre>Pepe</nombre> incluye 5 puntos
XPointer a˜nade 2 funciones a XPath
Rangos
Un rango es un intervalo entre 2 puntos. XPointer a˜nade 4
funciones a XPath
I range(expr) devuelve el rango que cubre la expresi´on XPath
expr
I range-inside(expr)devuelve el contenido interno de la
expresi´on XPath expr
I range-to(expr) devuelve el rango evaluando la expresi´on respecto al nodo de contexto
I string-range(expr,cad,desp,long) eval´ua laexpr y
selecciona todas las cadenas que coincidan con cad. Es
posible indicar un desplazamiento desp y una longitudlong
de las cadenas resultantes
xpointer(//titulo,"Poema",6,4)selecciona los 4
XPointer relativos
Existen 2 funciones que permiten modificar el contexto de la expresi´on XPointer
I here()se refiere al nodo que contiene al XPointer
I origin()devuelve la localizaci´on del elemento desde el cu´al
se carg´o el documento. Podr´ıa ser distinto del documento
XLink
XLink define un mecanismo para enlazar documentos entre s´ı Permite enlazar 2 o m´as recursos
Facilita la inclusi´on de meta-informaci´on en los enlaces
XLink: Enlaces simples
Define una conexi´on de una sola v´ıa entre 2 recursos
<n o v e l a x m l n s : x l i n k=” h t t p : //www . w3 . o r g / 1 9 9 9 / x l i n k ” x l i n k : t y p e =” s i m p l e ” x l i n k : h r e f =” f t p : // a r c h i v o s . com/ n o v e l a s / 2 3 4 . t a r . g z ”> <t i t u l o>La R e g e n t a</ t i t u l o> <a u t o r>C l a r i n</ a u t o r> </ n o v e l a>
XLink: Atributos de Enlaces simples
I xlink:type: tipo del enlace
I xlink:href: URL del recurso
I xlink:title: t´ıtulo del enlace
I xlink:role rol del enlace
I xlink:arcrole: relaci´on entre el recurso que enlaza y el enlazado
I xlink:actuate: define el momento de actuaci´on. Puede ser:
none,onLoad,onRequest ´o other
I xlink:show: Define el comportamiento del enlace en el
momento de actuar. Puede ser: embed,new,none,other,
´
Comportamiento del enlace
Mediante los atributosshow yactuate se pueden sugerir acciones
al software que utilice los enlaces
<i m a g e n x l i n k : t y p e =” s i m p l e ”
x l i n k : a c t u a t e =” onLoad ” x l i n k : s h o w=” embed ” x l i n k : h r e f =” f o t o . j p g ”
Sem´
antica del enlace
Los atributostitle yrole facilitan la inclusi´on de descripciones
sobre los v´ınculos. El atributorole debe ser una URI que puede
representar propiedades de web sem´antica.
<n o v e l a x l i n k : t y p e =” s i m p l e ” x l i n k :: h r e f=” h t t p : //www . l i b r o s . com#c l a r i n ” x l i n k : t i t l e =” L e o p o l d o A l a s C l a r i n ” x l i n k : r o l e =” h t t p : // p u r l . o r g / dc / e l e m e n t s / 1 . 1 / c r e a t o r ”> La R e g e n t a </ n o v e l a>
V´ınculos extendidos
Se indican con el valor del atributoxlink:typeigual aextended’
Pueden contener enlaces de los siguientes tipos
I Localizadores (locator) que permiten localizar recursos
I Arcos (arc) que definen v´ınculos entre localizadores
V´ınculos extendidos
<n o v e l a s x l i n k : t y p e =” e x t e n d e d ” x m l n s : x l i n k=” . . . ”> <n o v e l a x l i n k : t y p e =” l o c a t o r ” x l i n k : l a b e l =” r e g e n t a ” x l i n k : h r e f =” h t t p : //www . l i b r o s / r e g e n t a . h t m l ” /> <n o v e l a x l i n k : t y p e =” l o c a t o r ” x l i n k : l a b e l =” q u i j o t e ” x l i n k : h r e f =” h t t p : //www . l i b r o s / q u i j o t e . h t m l ” /> <s i g u i e n t e x l i n k : t y p e =” a r c ” x l i n k : f r o m=” r e g e n t a ” x l i n k : t o =” q u i j o t e ” /> <a n t e r i o r x l i n k : t y p e =” a r c ” x l i n k : f r o m=” q u i j o t e ” x l i n k : t o =” r e g e n t a ” /> </ n o v e l a s>Bases de v´ınculos
XLink permite establecer v´ınculos entre recursos externos Un documento que define una lista de v´ınculos se denomina una base de v´ınculos (link base)
Los navegadores podr´ıan cargar las bases de v´ınculos y actuar en
Aplicaciones de XLink
I El soporte para XLink en los navegadores es escaso. Firefox da
soporte a enlaces b´asicos
I SVG, FO y otras tecnolog´ıas de W3c utilizan enlaces b´asicos
de XLink
I XBRL (eXtensible Business Reporting Language) es un
est´andar basado en XML para definir informaci´on financiera.
Cada aplicaci´on define una taxonom´ıa, compuesta por
documentos XML Schema y bases de v´ınculos. Varias bases de v´ınculos predefinidas:
I Presentationorganizaci´on jer´arquica para visualizaci´on I Labeletiquetas que pueden usarse para mostrar los conceptos I Referencereferencias a recursos externos
I Calculationrelaciones de c´alculo entre conceptos. Ejemplo
totales la suma desuma1ysuma2
Formularios en HTML
<head><t i t l e>B u s q u e d a</t i t l e></head> <body> <form a c t i o n=” h t t p : / /www . e j e m p l o . o r g / b u s c a ” method=” g e t ”> Cadena : <i n p u t t y p e=” t e x t ” name=” c a d ” /> <i n p u t t y p e=” s u b m i t ” v a l u e=” B u s c a r ” /> </form> </body> </h t m l>Mezcla de presentaci´on y contenido
No se realizan chequeo de tipos
XForms
XForms(Recomendaci´on W3c en 2006) define un mecanismo para definir formularios separando la presentaci´on del contenido
Facilita el chequeo de tipos mediante uso de XML Independiente del dispositivo