XML

De MediaWiki
Ir a la navegación Ir a la búsqueda


Introdución ao XML

XML é:

  • unha metalinguaxe par definir linguaxes para necesidades diferentes
  • unha simplificación e adaptación do SGML
  • unha sixtaxe sinxela para almacenar e transmitir datps con etiquetas de lectura e comprensión inmediata por humáns e fácil procesado por máquinas

Algunhas das linguaxes que se basean en XML para a súa definición son XHTML, XVG. MathML, RSS, Atom,...

Podemos nomear coma características:

  • Extensible: pódense definir novas etiquetas
  • Versátil: separa contido, estrutura e presentación
  • Estruturado: pódense modelar datos a canlquer nivel de complexidade
  • Validable: pódense validar os documentos fronte a un DTD/Schema
  • Aberto: non é propietaria de ningunha empresa ou asociado a unha linguaxe de progrmación, sistema operativo ou contorna de desenvolvemento
  • Sinxelo: fácil de aprender e usar

Tecnoloxías XML

O W3C e outras organizacións de normalización desenvolveron numerosas tecnoloxías XML. O cadro seguiente amosa algunhas desas tecnologías agrupándolas por temas.

Mapa de tecnoloxías XML

As tecnologías XML básicas desenvoltas polo W3C son as seguintes:

XML Namespaces (Espazos de nomes XML)
Define os mecanismos para permitir que nun mesmo documento se poidan utilizar elementos e atributos de diferentes linguaxes de marcas (resolvendo o problema de que algúns nomes de elementos puideran coincidir).
XML Infoset
Describe un modelo de datos abstracto para documentos XML a partir de elementos de información. Utilízase nas especificacións das linguajes XML, para describir restriccións na linguaxe.
XPath
Permite seleccionar os compoñentes dun documento XML e facilitar o seu acceso aos programas que procesan documentos XML.
XSLT
Linguaxe de transformación de documentos XML a outros formatos (XML ou non XML)
XSL Formatting Objects (XSL-FO)
Linguaxe de marcas para formatear documentos XML; usada por exempo para xenerar PDFs.
XQuery
Linguaxe de consulta orientado a XML que permite acceder, manipular e devolver fragmentos de documentos XML.
XML Signature
Define a sintaxe e as regras de procesamento para crear firmas dixitais en documentos XML.
XML Encryption
Define a sintaxe e as regras de procesamento para encriptar documentos XML.
Exemplo de ficheiro XML

Outras tecnologías XML desenvoltas polo W3C que non tiveron apenas implantación:

XInclude
Define el mecanismo para incluir un documento de texto (XML o no XML) dentro de un documento XML.
XLink
Define métodos para incluir enlaces internos y externos en documentos XML y asociar metadatos a los enlaces.
XPointer
Define el mecanismo para identificar fragmentos de un documentos

Este é o mapa global, pero.... qué e realmente un documento XML? Algo como o que vemos na imaxe, e que a continuación detallaremos

Estrutura xerárquica

A información organízase de forma xerárquica nun documento XML; os elementos do documento relaciónanse entre si mediante relacións de pais, fillos, irmáns e descendentes.

A esta estrutura xerárquica denomínaselle árbore do documento XML. As partes da árbore que teñen fillos denomínanselle nodos intermedios ou ramas, e os que non nodos finais ou follas.

Sen detallar a sintaxe, examinamos este exemplo:

<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
  <book category="ensayo">
    <title lang="gl">Sempre en Galiza</title>
    <author>Alfonso Daniel Manuel Rodríguez Castelao</author>
    <year>1944</year>
    <price>24.90</price>
  </book>
  <book category="infantil">
    <title lang="gl">Unha fábrica de bicos</title>
    <author>María Canosa</author>
    <year>2020</year>
    <price>19.90</price>
  </book>
  <book category="web">
    <title lang="es">El lenguaje unificado de modelado</title>
    <author>Grady Booch</author>
    <author>James Rumbaugh</author>
    <author>Ivar Jacobson</author>
    <year>2006</year>
    <price>23.41</price>
  </book>
  <book category="web" cover="electrónico">
    <title lang="en">Learning XML</title>
    <author>Erik T. Ray</author>
    <year>2003</year>
    <price>37.95</price>
  </book>
</bookstore>

E intuímos esta estrutura xerárquica:

  • Un prólogo que indica versión e codificación
  • O nodo raíz é <bookstore>
  • Todos os outros nodos do documento están contidos dentro dese
  • O nodo raíz ten catro nodos fillos <book>
  • Eses catro nodos son descendentes de <bookstore> (teñen como ascendente e pai o nodo raíz)
  • Os catro libros son nodos irmáns
  • Os libros e os títulos teñen nalgúns casos atributos (category para categoría, cover para formato, lang para linguaxe)
Queres outro exemplo? Na páxina de w3schools podes atopar un XML sobre un menú de almorzo

Tipos de nodo

Os seis tipos de nodo XML

Un documento XML consta dun determanda estrutura, formada polos seguintes tipos de compoñentes ou nodos que teñen unha gramática e sintaxa asociada:

Raiz

Designado coma / é o punto de partida para percorrer á arbore XML e ubicar o resto de nodos

Elementos

Unidade básica do documento XML, delimita a información. Identificanse por unha etiqueta de apertura (<libro>) e unha de peche (</libro>). Entre ambas atópase o contido do elemento, que pode ser textual, outros elementos ou baleiro.

Os elementos sen contidos ábrese e péchase cunha etiqueta, por exemplo <autor/>

Atributos

Pares nome valor que permiten especificar datos adicionáis dun elemento. Ubícanse na etiqueta de apertura dun elemento, e asignase o valor mediante o signo =. Todos os atributos trataránse coma texto, e viran entrecomillados (por comillas dobre ou simples)

<peso unidades="kg">89</peso>

Texto

Pode aparecer coma contido dun elemento ou coma valor dun atributo.

Os espazos en branco teñen un tratamento especial. Hai catro tipos de espaciado en XML:

Tipos de espaciado en XML
Tabulador \t &#9; TAB
Nova liña \n &#10; LF
Retorno de carro \r &#13; CR
Espazo \s &#32; NO-BREAK SPACE


Dentro do contido textual dun elemento manteránse como están e así serán tratados polo procesador
Dentro do valor dun atributo, os espazos en branco condensaránse nun so
Os espazos en branco entre elementos serán ignorados

<proba>   Diferentes   </proba>           |       <proba>Diferentes</proba> 
<proba atributo="   igual   " />          |       <proba atributo="igual" />
<X> Esto igual <X>   <Y> que o outro </Y> |        <X> Esto igual <X><Y> que o outro </Y>

Comentarios

Iguales que os de HTML:

<!-- isto é un comentario HTML -->

Permítse todo caracter excepto dous guións seguidos, e non se permiten comentarios dentro de etiquetas de apertura e peche

Espazo de nomes

Varios documentos XML podense combinar entre sí, puidendo darse o caso de que coincidan no nome algúns dos elementos.

Hai un conflicto de nomes cando dous documentos diferentes usan os mesmos nomes para describir dous tipos de elementos diferentes.

O espazo de nome XML proporciona un método para evitar conflictos de nomes de elementos: resolve o problema asociando un vocabulario a un nome de etiqueta.

Porén os espazos de nomes permiten que máis dun nome de elemento disponible en espazos conceptuaos diferentes aparezca no mesmo documento XML.

<?xml version="1.0" encoding="UTF-8"?>
<autor>
  <titulo>Enxeñeira</titulo>
  <nome>María</nome>
  <apelido>Canosa</apelido>
</autor> 
  
<?xml version="1.0" encoding="UTF-8"?>
<libros>
  <libro>
    <titulo>O lobo Ramón</titulo>
    <prezo>25</prezo>
  </libro>
  <libro>
    <titulo>A peregrina gastrónoma</titulo>
    <prezo>22</prezo>
  </libro>
</libros>

<titulo> causará conflicto se se unen estos dous documentos, xa que teñen significados diferentes en cada documento.

A sintaxe para a creación dun espazo de nomes é a seguinte:

xmlns:prefijo=EspazodeNome

A sintaxe para o uso de espazos de nomes para elementos é a seguinte:

<EspazodeNome:NomeElemento>Contido </EspaciodeNome:NomeElemento>

Un exemplo:

<?xml version="1.0" encoding="UTF-8"?>
<autor
  xmlns:au="http://www.aclasedopeque.com/au"
  xmlns:lib="http://www.aclasedopeque.com/lib">
  <au:titulo>Enxeñeira</au:titulo>
  <au:nome>María</au:nome>
  <au:apelido>Canosa</au:apelido>
  <lib:libro>
    <lib:titulo>O lobo Ramón</lib:titulo>
    <lib:prezo>25</lib:prezo>
  </lib:libro>
  <lib:libro>
    <lib:titulo>A peregrina gastrónoma</lib:titulo>
    <lib:prezo>22</lib:prezo>
  </lib:libro>
</autor>

O prefixo corto para identificar os espazos de nomes é au e lib.

As súas ventaxas:

Reusabilidade

os espazos de nomes XML permiten a reutilización do marcado

Modularidade

os espazos de nomes XML definidos usando elementos e atributos doutros estándares resultan en documentos modulares.

Extensibilidade

proporcionan extensibilidade a unha linguaxe ó incorporar elementos e atributos doutros vocabularios.

Como inconvinte (menor) o procesamento de espazos de nomes reduce o rendemento do navegador e aumenta o uso da memoria.

Máis información. Podes ler a especificación do W3c e exemplos ([1],[2] e [3]). Tamén visionar esta presentación.

Instruccións de procesamento

Comezan por <? e finalizan por ?>. Son dependentes do procesador XML, e non forman parte do contido do documento XML. Utlilízanse para darlle información as aplicacións que procesan o documento. Por exemplo

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

Ou:

<?php
// código php
?>

Seccións CDATA

Son conxuntos de caracteres que o procesador non debe analizar (semellantes a un comentario). Así o autor poderá introducir caracteres coma < e & sen necesidade de usar entidades predefinidas.

Neste exemplo a etiqueta de apertura e peche interprétase coma unha marca

<persona>Ana Peleteiro</sender>

Pero con:

<![CDATA[<persona>Ana Peleteiro</persona>]]>

E equivalente a:

&lt;persona&gt;Ana Peleteiro&lt;/persona&gt;

Visualización dun documento XML

Hai varias opcións de visualización:

  • os navegadores modernos permiten por defecto ver código XML con coloreado do mesmo
  • con editores de texto ou IDEs
  • mediante a definición dunha folla de estilo CSS que lle indique o navegador cómo convertir cada elemento do documento XML nun documento visual. Acadaríase con esta instrucción de procesamento:
<?xml-stylesheet type="text/css" href="estilos.css"?>
  • mediante unha folla de transformacións XSLT; a instrucción de procesamento análoga:
<?xml-stylesheet type="text/xls" href="transforma.xsl"?>
  • programáticamente mediante linguaxes como Java, PHP, Python ou JavaScript, que procesaran o documento XML mediante un parser

Elaboración de documentos XML ben formados

Regras para documento ben formado

A especificación de XML define a sintaxe que a linguaxe debe seguir:

  • Cómo se delimitan os elementos con etiquetas
  • Qué formato pode ter unha etiqueta
  • Qué nomes son os aceptables para os elementos
  • Onde se colocan os atributos.

Un documento XML estará ben formado se cumpre as regras establecidas polo W3C nas especificacións para XML. As principáis regras:

  • O w3C recomenda empezar por unha instrucción de procesamento XML que
  • indique a versión de XML
  • opcionalmente a codificación de caracteres (encoding), que por defecto é UTF-8
  • opcionalmente standalone: se está listo para proesarse independentemente ou require doutros ficheiros externos

A versión máis simplificada

<?xml version= "1.0"?>

E unha versión máis extensa:

<?xml version= "1.0" encoding="UTF-8" standalone="yes"?>
  • Non pode haber nada antes desa instrucción de procesamento <?xml ...
  • Debe existir un único elemento raíz, que colga do nodo raíz (/)
  • Os elementos que non sexan baleiros terán etiqueta de apertura e outra de peche
  • Os elementos baleiros pecharanse con />. Por exemplo:
  • Os elementos deben aparecer correctamente anidados en canto a súa apertura e non solaparse
  • Os nomes de elementos e atributos son case-sensitive (sensibles a maíusculas/minúsculas)
  • Os vaores dos atributos deben aparecer entre comiñas do mesmo tipo (sexan simples ou dobres)
  • Non pode haber máis dun atributo co mesmo nome asociado ó mesmo elemento
  • Nas etiquetas de apertura e peche dos elementos non pode haber instruccións de procesamento ou comentarios
  • Non pode haber texto antes ou despois do elemento documento
  • Non deben aparecer os singos < ni & no contido textual de elementos nin atributos

Hai un concepto que vai un paso máis alá de valorar que o documento esté ben formado: é a validación, que veremos máis adiante.

A web semántica

Relación entre tecnoloxías da web semántica

Foi unha iniciativa do W3C creada en 2001 co obxectivo de que os datos dispoñibles na Web puideran ser procesados de forma automática. A idea era que a web formada por documentos se convertira nunha web formada por datos con significado e que as máquinas puideran procesar toda esa información.

Para iso desarrolláronse toda unha serie de tecnoloxías (RDF, OWL, SPARQL, GRDDL, etc.) que permiten representar, codificar e consultar a información de forma automática.

A imaxe amosa as datas de aprobación das recomendacións relacionadas coas principales tecnoloxías da web semántica:

Cronograma das tecnoloxías da web semántica

Desgraciadamente o interese pola web semántica foi a menos; esas tecnoloxías integranse no arsenal de técnicas que se engloban baixo o termo Inteligencia Artifical, pero non teñen a relevancia que esperaba o W3C.

Posiblemente o obxectivo da web semántica era demasiado ambicioso, e as ferramentas propostas non eran suficientes para poder conseguir ese obxectivo; tamén e certo que a base da web semántica era o XML, que está máis alexado do funcionamento da web actual, o que complicaba o prosecto.

Resumo

Estrutura XML e sintaxe:

  • Prólogo
  • Con versión
  • Con encoding
  • Elemento raiz
  • Máis elementos (opcionáis)
  • Para definir as marcas ou etiquetas (< e >). Hai tres tipos:
  • Apertura
  • Peche
  • Baleiras


<?xml version="1.0" encoding="utf-8"?>
<!-- enriba prólogo. Abaixo elemento raiz e resto de etiquetas -->
<pai>
  <fillo>
    <subfillo>
	...
	<subfillo/>
  </fillo>
</pai>
  • Para definir atributos par NomeAtributo="valor"
  • Comentarios coma en HTML <!-- e -->
  • Posibles sección CDATA <![CDATA[Contido dentro do bloque]]>

Exercicios

Referencias