Introducció als llenguatges de marques. Classificació

Una definició poc estricta del que és un ordinador podria ser que “és una màquina electrònica que rep i processa dades per convertir-les en informació útil”.

Un dels components bàsics en un sistema informàtic són les dades que s’hi puguin introduir i com ho fa aquest sistema per emmagatzemar-les per usar-les posteriorment o mostrar-les de nou.

Per tant, una de les tasques bàsiques que fan els ordinadors és emmagatzemar la informació que els proporcionem per poder ser processada posteriorment. Aquesta informació pot ser de molts tipus diferents (text, imatges, vídeos, música…) però el realment important serà de quina manera l’emmagatzema l’ordinador per poder-la tractar posteriorment de manera eficient per generar més informació.

Les dades

Les dades són representacions d’aspectes del món real i se solen recollir per fer càlculs, mostrar-les, organitzar-les, etc., amb l’objectiu que posteriorment algú en pugui fer alguna cosa: prendre decisions, generar noves dades…

Si no s’és gaire estricte es podria dir que en un sistema informàtic qualsevol les úniques tasques que es desenvolupen consisteixen a emmagatzemar dades per processar-les per mitjà d’un programa que o bé aportarà algun tipus d’informació o bé es faran servir de nou per generar noves dades.

Característiques de les dades

Entre les característiques interessants sobre les dades en destaquen sobretot tres aspectes:

  • A qui van dirigides
  • La possibilitat de reutilitzar-les
  • Que es puguin compartir

Destinatari de dades

Si s’intenta ser una mica més pràctic es veurà que realment les dades tindran una forma o una altra en funció del destinatari a qui vagin dirigides:

  1. Dades destinades als humans: generalment les dades destinades al humans requeriran que tinguin alguna estructura concreta, amb uns formats determinats, amb textos decorats d’alguna manera. Hi apareixeran títols, caràcters en negreta, etc. Generalment no cal conèixer quin significat tenen les dades, ja que la interpretació es deixa al lector.
  2. Dades destinades als programes: els programes generalment no necessiten que les dades tinguin informació sobre com s’han de representar, sinó que n’hi ha prou que siguin fàcilment identificables, que quedi clar de quin tipus són i que hi hagi alguna manera de determinar què signifiquen per poder-les tractar automàticament.

Reutilització de les dades

Molt sovint les dades es voldran reutilitzar per poder fer tasques diferents. Un error corrent sol ser emmagatzemar-les específicament per fer una tasca concreta, ja que això pot provocar que posteriorment sigui molt més complicat fer-les servir per fer altres tasques.

Per tant, és bàsic disposar d’un sistema d’emmagatzematge que permeti aconseguir que les dades puguin ser reutilitzades fàcilment i si pot ser que puguin ser reutilitzades tant per les persones com pels programes.

Compartició de les dades

En el passat, amb els ordinadors centrals la informació es generava i es processava en el mateix lloc. Però l’aparició dels ordinadors personals, l’eclosió de les xarxes i, sobretot, l’èxit d’Internet, ha creat tota una sèrie de problemàtiques que fins al moment no existien: les dades generades en un lloc ara poden ser consumides en un lloc totalment diferent, com ara:

  • en sistemes operatius totalment diferents.
  • en màquines que poden funcionar de maneres molt diverses.

Per tant, en un sistema informàtic modern s’ha de tenir en compte aquesta possibilitat a l’hora d’emmagatzemar dades. Hi ha la possibilitat que aquestes dades siguin compartides i, per tant, cal emmagatzemar-les d’alguna manera que no tingui problemes per usar-les en sistemes diferents.

Emmagatzematge de dades en ordinadors

Atesa la seva arquitectura, els ordinadors emmagatzemen la informació en binari i, per tant, tota la informació que s’hi pot emmagatzemar sempre es representarà en uns i zeros (1, 0). Això fa que per representar qualsevol tipus de dades (imatges, vídeos, text…) calgui fer algun tipus de procés que converteixi les dades a una representació en format binari.

Tradicionalment en els ordinadors les dades s’organitzen de dues maneres:

  • Dades de text
  • Dades binàries

Dades binàries

Emmagatzemar les dades de manera binària és la manera natural d’emmagatzemar dades en ordinadors. Estrictament parlant, les dades binàries estan en el format que fa servir l’ordinador, ja que només són una tira de bits un rere l’altre. Per tant, normalment, un ordinador no haurà fer cap procés especial per emmagatzemar i llegir dades binàries.

Les dades en format binari tenen una sèrie de característiques que les fan ideals per als ordinadors:

  • Generalment estan optimitzades per ocupar l’espai necessari.
  • Els ordinadors les llegeixen fàcilment.
  • Poden tenir estructura.
  • És relativament fàcil afegir-hi metadades.

Si un programa vol usar les dades binàries normalment només necessitarà conèixer la mida en bits i, sobretot, conèixer de quina manera s’hi ha emmagatzemat la informació.

Per emmagatzemar el nombre 150 només cal convertir aquest valor decimal a la seva representació en binari i emmagatzemar-lo. És trivial comprovar que pot ser emmagatzemat en un sol byte (8 bits) com es pot veure a la taula.

Taula: Representació del nombre 150 en binari
valor decimal valor binari
150 10010110

Un avantatge afegit de la representació de nombres en binari és que ja estan disponibles immediatament per fer càlculs numèrics, ja que realment es tracta de nombres. No caldrà fer cap transformació per poder usar aquest nombre en qualsevol càlcul.

Metadades

Molt sovint no s’emmagatzemen directament les dades tal com estan sinó que es processen per optimitzar-les, com ara emmagatzemant informació sobre el seu contingut o aplicant-hi procediments d’optimització. Aquestes optimitzacions són transparents per l’usuari final, que visualitzarà les dades normalment.

Una de les maneres més senzilles de representar una imatge en un ordinador consisteix a representar cada un dels punts de color que la formen. O sigui, que només cal dir de quin color serà cada un dels punts per poder emmagatzemar la imatge en un fitxer (figura).

Figura Representació d’un gràfic en un ordinador

Podem fer servir un mètode senzill per representar la imatge anterior, com podria ser definir si cada un dels punts és de color blanc (0) o negre (1). La imatge podrà ser representada d’aquesta manera:

001100
010010
010010
011110
010010
010010

En realitat un ordinador no emmagatzemarà la informació d’aquesta manera sinó de manera lineal, ignorant els salts de línia. Una representació més propera a com ho faria realment un ordinador seria aquesta:

001100010010010010011110010010010010

Representar la informació d’aquesta manera fa que les imatges ocupin molt d’espai i per aquest motiu normalment es fan servir mètodes per optimitzar-ne l’emmagatzematge.

Una de les maneres d’optimitzar l’espai ocupat per la imatge podria ser adonar-se’n que hi han diverses repeticions dels colors. De manera que es podria intentar aprofitar aquesta característica per aconseguir un fitxer binari més petit.

Es podria fer que en comptes d’especificar els punts un per un si hi ha una repetició es pogués especificar el nombre de vegades que es repeteix el color. D’aquesta manera un punt blanc aïllat es representarà normalment, però si es troben quatre punts blancs, en comptes d’emmagatzemar 0000 es pot representar amb 40 (4 blancs)

El resultat d’aplicar aquest procediment a la mateixa imatge ens donarà:

202130120120120120412012012012010

Aquest procediment té l’avantatge afegit que amb el nou sistema les dades ocupen un 10% menys d’espai (33 caràcters) que abans (36 caràcters).

A pesar que amb el nou sistema no s’emmagatzemen tots els punts un programa pot aconseguir fàcilment representar-los en pantalla seguint les especificacions.

Es pot veure que en la representació binària hi ha tota una sèrie de valors que estrictament no són dades de la imatge (els nombres 2, 3 i 4) sinó que són dades que fan referència a la manera com s’han emmagatzemat les dades. Aquestes dades s’anomenen “metadades”.

Les metadades són dades sobre les dades.

L’ús de metadades optimitza l’emmagatzematge d’informació però alhora fa que la compartició de la informació continguda en el fitxer sigui molt més complexa. Però això sí, cal que el programa que vulgui recuperar la informació conegui el procediment que s’ha fet servir o no obtindrà les dades correctes.

Dades estructurades

Les dades en la manera com les generem els humans no estan en un format que en faciliti el tractament automàtic per part d’un ordinador. Per aquest motiu sovint les dades que han de ser processades pels ordinadors es converteixen a algun format que sigui més idoni per al tractament. El més corrent és tractar les dades per tal que tinguin algun tipus d’estructura.

Els tipus de dades estructurats són agrupacions d’altres tipus de dades (normalment tipus més senzills).

La manera més corrent d’estructurar dades binàries sol ser tenir-les agrupades en registres que contenen la informació repetitiva d’una dada en concret. És habitual que els llenguatges de programació tinguin alguna manera de definir dades estructurades. Per exemple, per a aquestes tasques el llenguatge C fa servir els struct.

  1. struct alumne {
  2. char nom[10];
  3. char cognom[10];
  4. int nota;
  5. }

Si es pot accedir a cada un dels registres del fitxer es pot accedir de cop a les dades d’un alumne, es pot identificar ràpidament la part de les dades que és el nom, cognom o nota, i a més sabem si les dades han de ser interpretades com a nombres o com a text.

En l’exemple de la figura podeu veure que es pot identificar a quina dada correspòn cada un dels caràcters. Els deu primers són el nom, els 10 següents són el cognom i els quatre següents són el número enter (32 bits).

Figura Representació de dades en una estructura fent servir caràcters

Generalment aquestes dades estructurades s’emmagatzemen en forma de llistes o conjunts de registres, de manera que el desenvolupador del programa podrà accedir a les dades de tots els alumnes simplement recorrent els diferents registres un per un.

Les dades estructurades facilitaran que les aplicacions les puguin tractar de manera automàtica.

Problemes

Les dades binàries també tenen problemes associats a l’hora de ser compartides, ja que en el món modern les dades s’han de compartir en màquines en què no han estat generades, que poden tenir sistemes operatius diferents, poden ser màquines totalment diferents, etc. Les dades binàries optimitzades per al sistema en què es generen no sempre seran ben enteses pels altres sistemes.

Estructura de les dades

Un dels problemes de donar estructura a les dades és que aquesta estructura només l’entendran els programes que tinguin informació sobre l’estructura. En definir quines són les dades que farà servir el programa es defineix quina mida tindrà cada camp i de quina manera es desaran les dades dins del fitxer binari.

Si agafem l’exemple que hem vist en la figura, perquè un programa pugui representar la imatge de manera correcta cal que tingui prou informació per fer-ho:

  • Primer cal que conegui que el que hi ha representat és una imatge.
  • També ha de saber que es desa cada punt de color amb un sol caràcter.
  • És bàsic que conegui l’equivalència de colors que hem fet: 0 és blanc, 1 és negre.
  • I necessita saber que la imatge és de 6 caràcters de llargada per 6 caràcters d’amplada o el resultat serà molt diferent del que era inicialment (figura)
  • Si s’ha representat la imatge fent servir el sistema optimitzat cal que conegui que els valors numèrics superiors a 1 indiquen que aquest valor no és un color sinó que són el nombre de repeticions del color següent.
Figura Intents de representar el gràfic sense conèixer-ne les dimensions

Totes aquestes coses són les que cal conèixer per poder usar les dades d’un exemple senzill; per tant, podeu imaginar-vos què passaria amb un exemple més complex.

Forma de lectura del processador

De la mateixa manera que en els llenguatges humans hi ha idiomes que s’escriuen d’esquerra a dreta i d’altres de dreta a esquerra, tots els processadors no emmagatzemen la informació de la mateixa manera (tècnicament es fa referència a l’ordre de lectura en les adreces de memòria).

Hi ha dos grans sistemes per emmagatzemar la informació en ordinadors:

  • Big endian: les dades s’escriuen en l’ordre en què es creen. Així, per escriure hola en l’ordinador s’emmagatzemaria h, o, l, a. Aquest sistema és el que fan servir els processadors de Motorola.
  • Little endian: les dades es desen de menys rellevant a més rellevant: a, l, o, h. Aquest sistema és el que fan servir els processadors d’Intel.

El més habitual és que els ordinadors només facin servir un dels dos sistemes, tot i que n’hi ha que poden funcionar amb tots dos indistintament (ARM, PowerPC, PA-RISC…).

Això no és important quan les dades es passen entre ordinadors que funcionen amb el mateix tipus, però és un aspecte vital que cal tenir en compte si els ordinadors que es passen la informació són de tipus diferents, ja que les dades binàries passades d’un sistema a l’altre poden ser totalment malinterpretades per culpa que s’emmagatzemen internament de manera diferent.

Lectura per humans

Un problema diferent és que les dades en format binari estan pensades per ser llegides per màquines (figura) però no per humans, de manera que són ideals per ser emmagatzemades en màquines, van bé per a la comunicació d’informació entre màquines, però en canvi perquè un humà les pugui fer servir caldrà tenir un programa específic per llegir-les.

Figura El format binari no està pensat per ser llegit per humans

Formats binaris estàndards

S’han definit alguns estàndards de fitxers binaris, cosa que permet que qualsevol pugui fer programes que puguin interpretar aquests fitxers.

Això és el que passa per exemple, amb els fitxers d’imatges JPG, PNG, GIF…, que poden ser llegits per diferents programes perquè la seva especificació és pública.

  • JPG - Estàndard ISO/IEC 10918
  • GIF - Especificació del W3C gif89a
  • PNG - Estàndard ISO/IEC 15948

I a més, no serveix qualsevol programa, sinó que cal que el programa entengui l’estructura de les dades que conté el fitxer. Per exemple, les dades generades pel Microsoft Word no poden ser obertes amb el programa de dibuix Gimp perquè no està preparat per entendre-les.

Si qui ha desenvolupat el programa no ha fet pública de quina manera es desen les dades binàries que es generen serà molt difícil compartir dades amb altres usuaris si no disposen del mateix programa.

Dades de text

Per solucionar el problema que calgui recórrer a programes específics per recuperar les dades que hi ha en un fitxer una possibilitat és fer el més obvi, fer el mateix que han fet els humans durant segles. Els humans en escriure ja estan fent servir una codificació i, per tant, si es fa servir la mateixa codificació tindrem les dades en un format fàcil de fer servir i entendre que no tindrà problemes per ser llegit pels programes.

En fitxers binaris el component d’informació més petit era el bit, en fitxers de text el component més petit eś el caràcter.

Els fitxers de text emmagatzemen la informació lletra per lletra d’una manera similar a com ho faria un humà en escriure. Això fa que s’estigui generant una informació que es podrà llegir de la mateixa manera que es llegeix un document de paper.

Per a un ordinador no hi ha gaire diferència a l’hora d’emmagatzemar els fitxers de text o els fitxers binaris, ja que els fitxers de text també són tires de bits. La diferència és que aquest cop els bits estan agrupats d’una manera estàndard i coneguda: un codi de caràcters.

Codis de caràcters

Representar les dades en un ordinador en forma de text implica que per poder representar una paraula qualsevol a l’ordinador prèviament haurà de ser codificada per fer que pugui ser representada en binari (recordem que els ordinadors només poden representar dades en binari). Aquesta codificació sol consistir a determinar una quantitat de bits predefinida per marcar un caràcter i posteriorment s’associa un valor numèric a cada un dels caràcters.

Observeu que per a un ordinador l’espai en blanc és un caràcter més.

L’equivalència entre els caràcters i els seus valors numèrics no es pot fer de manera aleatòria, ja que s’estaria creant el mateix problema que hi ha amb les dades binàries. Si es vol aconseguir que les dades es puguin llegir en diferents sistemes cal seguir algun tipus de norma coneguda per tothom. Per aquest motiu van aparèixer els estàndards de codificació de caràcters.

Problema de la codificació de caràcters

Per exemple, si tinguéssim un idioma que només tingués 5 caràcters (les vocals AEIOU) es podrien codificar tots els caràcters d’aquest idioma fent servir només 3 bits. Per tant, una possible codificació de les lletres de l’idioma podria ser la de la taula.

Taula: Possible codificació de lletres
Caràcter Valor decimal Valor binari
A 0 000
E 1 001
I 2 010
O 3 011
U 4 100
Espai 5 101

Això ens permetria codificar la frase “AI AI AI” d’aquesta manera:

000010101000010101000010

Però davant del mateix problema una altra persona podria triar una combinació diferent, com la de la taula.

Taula: Alternativa diferent de codificació
Caràcter Valor decimal Valor binari
Espai 0 000
A 1 001
E 2 010
I 3 011
O 4 100
U 5 101

Això provocaria que en comunicar la frase “AI AI AI” generada amb el primer sistema, en el segon es descodificaria:

000  --> Espai
010  --> E
101  --> U

I interpretaria que el missatge és ” EU EU EU”.

El procediment de tenir una taula amb els valors numèrics associats i simplement fer la conversió és el procediment més habitual però també es donen casos en què la codificació hagi de complir algun tipus de regles o restriccions a l’hora de fer la conversió.

ASCII

Un dels primers estàndards que va ser adoptat majoritàriament va ser ASCII (American standard code for information interchange), que es pot veure a la taula. ASCII codifica cada un dels caràcters amb set bits i defineix a quin valor numèric es correspon cada un dels caràcters de la llengua anglesa.

Taula: Caràcters imprimibles de l’ASCII
Caràcter Valor decimal Caràcter Valor decimal Caràcter Valor decimal Caràcter Valor decimal Caràcter Valor decimal
32 3 51 F 70 Y 89 l 108
! 33 4 52 G 71 Z 90 m 109
34 5 53 H 72 [ 91 n 110
# 35 6 54 I 73 \ 92 o 111
$ 36 7 55 J 74 ] 93 p 112
% 37 8 56 K 75 ^ 94 q 113
& 38 9 57 L 76 _ 95 r 114
39 : 58 M 77 ` 96 s 115
( 40 ; 59 N 78 a 97 t 116
) 41 < 60 O 79 b 98 u 117
* 42 = 61 P 80 c 99 v 118
+ 43 > 62 Q 81 d 100 w 119
, 44 ? 63 R 82 e 101 x 120
- 45 @ 64 S 83 f 102 y 121
. 46 A 65 T 84 g 103 z 122
/ 47 B 66 U 85 h 104 { 123
0 48 C 67 V 86 i 105 | 124
1 49 D 68 W 87 j 106 } 125
2 50 E 69 X 88 k 107 ~ 126

La codificació que es fa en ASCII és relativament senzilla: simplement es compara cada un dels caràcters del text per codificar en la taula i se n’obté el valor numèric en binari. Per exemple, per codificar la paraula Hola en un ordinador que estigui funcionant amb el codi ASCII haurem de convertir cada un dels caràcters en el seu equivalent numèric (taula).

Taula: Conversió de caràcters a binari fent servir ASCII
Caràcter decimal binari
H 72 1001000
o 111 1101111
l 108 1101100
a 97 1100001

El primer problema que es va trobar per a l’ASCII era que només estava pensat per l’anglès i, per tant, no es disposava de caràcters d’ús corrent en altres llengües: ç, à, á, ñ, etc. Per tant, per poder expandir-se a altres zones es va crear un ASCII expandit, que va incrementar el nombre de de bits a 8, i gràcies a aquest bit extra s’hi podien especificar els caràcters específics de cada idioma que l’anglès no tenia. D’aquesta manera es permetia crear textos en altres idiomes que fessin servir l’alfabet llatí.

Això va fer que apareguessin moltes varietats d’ASCII, especialitzades en un grup d’idiomes (ISO 8859-1, ISO 8859-2, etc.).

Però com que cada idioma feia servir els valors nous per afegir els seus caràcters propis la informació representada fent servir un d’aquests “ASCII” no sempre es veia bé en un altre dels “ASCII”.

A més, ASCII i ASCII expandit només estaven pensats per a idiomes que fessin servir l’alfabet llatí i, per tant, els idiomes no basats en l’alfabet llatí havien de recórrer a altres codificacions.

Unicode

Unicode és un intent de substituir els codis de caràcters existents per un de genèric que serveixi per a totes les llengües, i per tant superi tots els problemes d’incompatibilitat que es produïen en entorns multilingües i permeti afegir els caràcters no llatins.

La idea bàsica de Unicode és donar a cada un dels símbols un identificador únic universal de manera que es puguin fer servir en el mateix document idiomes diferents sense que això comporti problemes de representació.

L’adopció de Unicode resol d’una vegada tots els problemes de representació de caràcters en fitxers de text.

Malgrat els seus avantatges, Unicode també va rebre crítiques de la comunitat anglòfona, perquè feia que els textos acabessin ocupant més del doble que en ASCII.

Unicode defineix tres formes de codificació bàsiques UTF (Unicode transformation format), que podeu veure a la taula.

Taula: Formes de codificació de Unicode
Nom
UTF-8 Sistema basat en un byte amb alguns símbols de longitud variable
UTF-16 Sistema de longitud variable basada en dos bytes
UTF-32 Sistema de longitud fixa que fa servir 32 bits per cada caràcter

Unicode ha estat adoptat de manera general per la majoria de sistemes operatius moderns. Actualment gairebé tots els sistemes operatius fan servir alguna varietat de Unicode (el Linux sol fer servir UTF-8 i el Windows adapta UTF-16).

Compartició d'informació

Gràcies a l’ús d’estàndards de codis de caràcters la informació en forma de text és més fàcilment compartida que no pas la informació binària, ja que els codis de caràcters que fan servir els sistemes per representar el text són coneguts i poden ser implementats lliurement.

Per tant, emmagatzemar les dades en format de text aporta dos grans avantatges:

  • Les poden usar una gran quantitat de programes que ja existeixen (editors de text, navegadors, etc.).
  • Poden llegides per humans.

Amb un dels programes més simples que hi ha, un editor de text, es pot crear un document que es podrà compartir amb qualsevol persona que entengui l’idioma en què ha estat escrit. I com que tots els sistemes operatius porten de sèrie programes capaços de carregar fitxers, si s’envia el fitxer a algú aquest no tindrà cap problema per interpretar les dades quan les rebi.

Problemes

Generar informació en fitxers de text també té alguns problemes:

  • Ocupen més espai al disc que els binaris.
  • Hi ha múltiples codis de caràcters diferents.
  • La manera com els tracten els diferents sistemes operatius.
  • Falta d’estructuració de les dades.

Però a pesar dels problemes, aquests són molt menys importants que els que tenim per compartir fitxers binaris. Per tant els fitxers de text són la manera més senzilla d’assegurar-nos que podem compartir la informació que hi ha amb altres persones.

Espai al disc

Un dels problemes que tenen els fitxers de text és que la informació ocupa molt més espai del que ocuparia si s’emmagatzemés en format binari. Com podem veure en la taula (taula), si volem emmagatzemar el nombre 150 en un ordinador el resultat serà diferent en funció del format triat.

Taula: Diferència entre emmagatzemar en format de text i binari
Format Representació interna
Format binari 10010110
Format textual 00110001 00110101 00110000

Per emmagatzemar el nombre en format binari simplement es converteix a binari i es podrà emmagatzemar en un byte (8 bits) mentre que si es vol emmagatzemar en format de text fent servir ISO-8869-1 s’hauran de desar per separat cada un del tres caràcters (1, 5 i 0). Amb el segon sistema caldran 3 bytes (24 bits): el triple d’espai!

Però a més, si la informació desada en format binari cal per fer algun càlcul, ja es pot fer servir immediatament, ja que s’emmagatzema realment el nombre; mentre que si tenim el nombre en format de text l’haurem de convertir al seu equivalent numèric abans de poder fer qualsevol operació matemàtica.

Múltiples codis de caràcters

Tot i que Unicode intenta que aquest problema desaparegui, alguns sistemes operatius encara fan servir múltiples codis de caràcters i els usuaris tenen informació antiga desada en codis de caràcters antics. Per tant, la compartició de dades encara provoca problemes que poden ser des de la simple representació incorrecta d’algun caràcter fins a corrompre el text o fer que la lectura de la informació sigui impossible.

Figura Problema de codificació incorrecta de caràcters

Si l’objectiu és fer que les dades es puguin reutilitzar tant per programes com per persones, els caràcters erronis s’han d’evitar. Com es veu en la figura els problemes en alguns casos poden ser poc importants si es vol que una persona entengui el que hi posa, però poden ser un problema molt gran per a un programa, ja que la seva capacitat d’interpretació és molt inferior.

L’adopció de Unicode en la majoria de sistemes operatius està fent que aquest problema s’estigui reduint i el fet que la quantitat de codificacions de caràcters sigui molt inferior a la quantitat de codis binaris fa que les dades en format de text es considerin fàcilment compartibles.

Si algú hagués emmagatzemat informació durant els anys setanta, i encara es tingués la capacitat de llegir el suport en el qual es van desar, difícilment es podria recuperar alguna cosa de les dades binàries que s’hi trobessin, ja que els programes que les van generar ja no existeixen o no funcionen amb els sistemes operatius moderns, i en canvi és possible que les dades emmagatzemades en format de text sí que es poguessin recuperar.

Representació de caràcters no textuals

Un altre problema que hi sol haver en la lectura de dades de text quan es fa en diferents sistemes operatius sol estar relacionada amb com es fa el tractament dels caràcters no textuals.

L’exemple més conegut és el diferent tractament que fan dels salts de línia els sistemes Windows i les diferents varietats de Unix i Linux. Per representar els salts de línia en el text els sistemes operatius fan servir algun dels caràcters no imprimibles del codi de caràcters, i per tant, d’aquesta manera tenen una manera “transparent a l’usuari” de poder representar el text tal com l’ha escrit.

El problema és que dos dels sistemes operatius més populars, Windows i Unix, ho fan de manera diferent. Mentre que Unix fa servir un sol caràcter per indicar el salt de línia, LF (line feed), Windows en fa servir dos: CR (carriage Return) i LF (line feed). El resultat és que en obrir un fitxer generat en un sistema Unix en un sistema en Windows els salts de línia han desaparegut i en el seu lloc hi apareix un rectangle que representa el caràcter LF (figura).

Figura Diferència del tractament en els salts de línia entre Windows i Linux

Actualment molt programes ja detecten aquest problema i el compensen automàticament de manera transparent a l’usuari.

Lectura de dades automatitzada

Els programes d’ordinador encara no són gaire bons interpretant les dades si són en text narratiu i, per tant, generalment convé que les dades que hauran de ser tractades per programes d’ordinador estiguin definides amb algun tipus d’estructura per tal que els siguin més fàcils de tractar.

S’han inventat sistemes per fer que les dades dels fitxers de text puguin ser estructurades. Un dels formats que s’ha fet servir durant molt de temps per exportar dades estructurades contingudes en bases de dades o fulls de càlcul a text ha estat el CSV (comma separated values).

El CSV simplement es limita a separar cada un dels registres de l’estructura en línies i els camps se separen amb comes. A més, per poder definir els tipus de dades, envolta de cometes les dades de text, mentre que no es posen cometes en les numèriques.

"Manel", "Puig", "Garcia", 8
"Pere", "González", "Puigdevall", 5
"Maria", "Pous", "Canadell", 7

CSV és una manera senzilla de desar dades estructurades en format de text que permet a un programa identificar les diferents dades que conté cada registre i a més interpretar de quin tipus són.

A més, un avantatge afegit de CSV és que és relativament fàcil afegir més dades a un fitxer que estigui en format CSV, ja que només cal un editor de text i respectar les regles de separar les dades amb comes i fer un salt de línia per cada registre.

Per tant un programa pot deduir fàcilment a partir de l’exemple anterior que les dades són com es veu en la taula.

Taula: Interpretació del significat del fitxer CSV
Dada Resultat
Manel Dada de text perquè està entre cometes
Puig Dada de text perquè està entre cometes
Garcia Dada de text perquè està entre cometes
8 Dada numèrica

Però els sistemes d’estructurar dades en fitxers de text també tenen problemes. Si necessitem afegir més dades a cada registre és gairebé segur que obligarà a fer canvis en el programa que les tractarà. El programa necessita saber quines dades hi ha en cada una de les columnes per poder treballar i, per tant, si modifiquem les columnes pot malinterpretar les dades.

Problema d'afegir dades en un CSV

Per exemple, si afegim una dada nova amb tractament de la persona al davant del fitxer anterior:

"Sr", "Manel", "Puig", "Garcia", 8
"Sr", "Pere", "González", "Puigdevall", 5
"Sra", "Maria", "Pous", "Canadell", 7

Si es fa servir el mateix programa que abans, aquest pot pensar que els noms de les persones són “Sr” i “Sra” i que les notes són “Garcia”, “Puigdevall”, etc.

Però afegir dades no és l’únic problema que tenim, ja que representar les dades d’aquesta manera n’arruïna la lectura de la gent que no faci servir els programes específics. Qui pot saber que el nombre és una nota i no una altra cosa?

A qualsevol de vosaltres se us pot acudir una manera senzilla d’evitar aquest problema, que consisteix a fer que la primera columna indiqui què és cada una de les dades que s’hi representen a continuació.

"nom", "cognom", "cognom2", "nota"
"Manel", "Puig", "Garcia", 8
"Pere", "González", "Puigdevall", 5
"Maria", "Pous", "Canadell", 7

Desenvolupar un programa que interpreti aquestes dades i que s’asseguri que no es produeixen errors és bastant complex.

Fitxers de marques

Es pot dir que els fitxers de marques són una manera diferent d’emmagatzemar informació en ordinadors que s’afegeix a les maneres d’emmagatzemar la informació per mitjà de fitxers binaris o fitxers de text. L’objectiu principal dels fitxers de marques és intentar recollir les millors característiques dels fitxers de text i binaris i esquivar-ne els problemes.

Els fitxers de marques prenen com a base els fitxers de text per aprofitar-se de les característiques més interessants d’aquest tipus de fitxers:

  • La facilitat de creació i lectura.
  • El compliment d’estàndards d’emmagatzematge definits i públics.

Com que els fitxers de text sempre estan emmagatzemats en algun codi de caràcters conegut (ASCII, UTF-8, etc.) s’aconsegueix que puguin ser transportats i llegits en qualsevol plataforma, sistema operatiu o programa que pugui interpretar aquests codis de caràcters. Per tant, els llenguatges de marques s’aprofitaran d’aquesta característica, en estar basats en el format de text.

A més, de retruc, també tindran l’avantatge que podran ser oberts i creats amb els programes d’edició de text estàndard. Des d’editors tan simples com el Bloc de notes dels sistemes Windows o el Gedit de sistemes Unix fins a editors més complexos com el Microsoft Word, passant per editors especialitzats en XML com l’Oxygen XML Editor.

Els fitxers de marques, per tant, s’aprofiten d’un dels grans avantatges dels arxius de text sobre els arxius binaris, ja que aquests darrers requereixen ser oberts amb un programa específic que en pugui interpretar el format.

Però els fitxers de marques no solament s’intenten aprofitar de les característiques dels fitxers de text sinó que també intenten aconseguir les característiques més interessants dels fitxers binaris, com:

  • La incorporació de metadades.
  • La definició de l’estructura de les dades.

Això fa que els llenguatges de marques adquireixin una de les característiques més interessants dels fitxers binaris, que és la possibilitat d’incorporar informació sobre les dades –metadades– però intentant que afecti el mínim possible la llegibilitat del document.

També permeten definir les dades i la seva estructura de manera que sigui senzill per un programa poder-les interpretar.

Gràcies als avantatges que ofereixen els llenguatges de marques, aquests s’han convertit ràpidament en una de les maneres habituals de representar dades i es poden trobar contínuament en les tasques habituals amb ordinadors:

  • L’exponent més popular és Internet –el Web–, que està basat totalment en els llenguatges de marques.
  • Molts dels programes d’ordinador que feu servir habitualment fan servir en algun moment alguna o altra forma d’algun llenguatge de marques per a emmagatzemar les seves dades de configuració o de resultats:
    • Internament els formats de documents de Microsoft Office o d’OpenOffice.org o LibreOffice estan basats en llenguatges de marques.
    • Microsoft Visual Studio desa la seva configuració fent servir llenguatges de marques.
    • etc.

Les marques

Les marques són una sèrie de codis que s’incorporen als documents electrònics per determinar-ne el format, la manera com s’han d’imprimir, l’estructura de les dades, etc. Per tant, són anotacions que s’incorporen a les dades però que no en formen part.

Les marques, per tant, han de ser fàcilment distingibles del text normal (per la seva posició, perquè segueixen algun tipus de sintaxi, etc.). Les marques més usades són les que estan formades per textos descriptius i estan envoltades dels símbols de “més petit” (<) i “més gran” (>) i normalment n’hi sol haver una al principi i una al final:

  1. <nom>Manel Puig Garcia</nom>

Aquestes marques poden ser imbricades per indicar estructures de dades:

  1. <persona>
  2. <nom>Manel Puig Garcia</nom>
  3. <nom>Pere González Puigdevall</nom>
  4. <nom>Maria Pous Canadell</nom>
  5. </persona>

Però hi ha moltes altres formes de marques. Una altra idea consisteix a trobar alguna combinació de caràcters que surti rarament en el llenguatge habitual. El TeX fa servir les barres invertides per a indicar l’inici de les marques

\section{Persones}
\begin{itemize}
\item Manel Puig Garcia
\item Pere González Puigdevall
\item Maria Pous Canadell
\end{itemize}

Altres llenguatges de marques fan servir caràcters no habituals en determinades posicions per indicar que són marques. Per exemple amb Wiki Markup els caràcters ”=” a la primera posició d’una línia es fan servir per indicar que el text és un títol d’apartat i el * per les llistes de punts:

= Persones = 
* Manel Puig Garcia
* Pere González Puigdevall
* Maria Pous Canadell

La idea general és que cal que les marques siguin fàcilment identificables per poder-nos aprofitar dels avantatges que ofereixen els llenguatges de marques.

Característiques dels llenguatges de marques

Els llenguatges de marques són una manera de codificar un document de text de manera que per mitjà de les marques (l’equivalent de les metadades dels fitxers binaris) s’hi incorpora informació relativa a com s’ha de representar el text, sobre quina estructura tenen les dades que conté, etc.

Els llenguatges de marques han destacat per una sèrie de característiques que els han convertit en els tipus de llenguatges més usats en la informàtica actual per emmagatzemar i representar les dades. Entre les característiques més interessants que ofereixen els llenguatges de marques hi ha:

  • Que es basen en el text pla.
  • Que permeten fer servir metadades.
  • Que són fàcils d’interpretar i processar.
  • Que són fàcils de crear i prou flexibles per representar dades molt diverses.

Les aplicacions d’Internet i molts dels programes d’ordinador que es fan servir habitualment fan servir d’alguna manera o altra algun llenguatge de marques.

Basats en text pla

Els llenguatges de marques es basen en text pla sense format. Aquests caràcters poden estar codificats en diferents codis de caràcters: ASCII, ISO-8859-1, UTF-8, etc.

Un dels avantatges que intenten aportar els llenguatges de marques és que es poden interpretar directament i això només és possible si fem servir el format de text, ja que els binaris requereixen un programa per interpretar-los. Però a més tenen l’avantatge que són independents de la plataforma, del sistema operatiu o del programa.

El fet que estiguin basats en format de text fa que siguin fàcils de crear i de modificar perquè només requereixen un simple editor de textos.

Ús de metadades

Les marques s’intercalen entre el contingut del document, de manera que generalment aquestes etiquetes solen ser descriptives de què és el que indica el contingut de les dades que contenen.

Aquestes marques són la manera com s’afegeixen les metadades als documents de text i com s’aconsegueixen superar les limitacions del format de text i aconseguir alguns dels avantatges dels fitxers binaris.

Facilitat de procés

Els llenguatges de marques permeten que el processament de les dades que continguin pugui ser automatitzat d’alguna manera, ja que el fitxer conté l’estructura de les dades que conté.

El fet d’incloure l’estructura permetrà que un programa pugui interpretar cada una de les dades d’un fitxer de marques per representar-lo o tractar-lo convenientment, ja que mostren l’estructura de les dades que contenen.

Posteriorment un programa podrà interpretar gràcies a les marques què és el que significa cada una de les dades del document.

Facilitat de creació i representació de dades diverses

A pesar que van ser pensats per contenir dades de text, els llenguatges de marques han demostrat que són capaços de contenir dades de molts tipus diferents.

Actualment s’estan fent servir fitxers de marques per representar imatges vectorials, fórmules matemàtiques, crear pàgines web, executar funcions remotes per mitjà de serveis web, representar música o sons, etc.

I sense importar quin tipus de dades s’hi representin sempre hi haurà la possibilitat de crear aquests fitxers des d’un editor de text bàsic.

Classificació dels llenguatges de marques

És complicat fer una classificació dels llenguatges de marques que hi ha però generalment s’accepta que en tenim dos grans grups basant-nos en quin és l’objectiu bàsic del llenguatge de marques:

  • Llenguatges procedimentals i de presentació, orientats a especificar com s’ha de representar la informació.
  • Llenguatges descriptius o semàntics: orientats a descriure l’estructura de les dades que conté.

Aquesta és la classificació més acceptada però, com molt sovint passa en l’àmbit de la Informàtica, ens podem trobar llenguatges que tinguin aspectes dels dos grups i permetin tant definir la manera de presentar la informació com definir-ne l’estructura.

Procedimentals i de presentació

En aquests llenguatges el que es fa és indicar de quina manera s’ha de fer la presentació de les dades. Ja sigui per mitjà d’informació per al disseny (marcar negretes, títols, etc.) o de procediments que ha de fer el programari de representació. L’exemple més popular d’aquests llenguatges és l’HTML però n’hi ha molts més: TeX, Wikitext…

En aquests casos els documents ens poden servir per determinar de quina manera es mostrarà el document a qui el llegeixi.

Si agafem un exemple senzill fent servir el llenguatge de marques lleuger Wiki markup, que fa servir Mediawiki (programa amb el qual s’ha desenvolupat la Wikipedia):

  1. = Classe =
  2.  
  3. == Assignatura: XML ==
  4. [[Fitxer:xml.png]]
  5.  
  6. '''Professor''':
  7. :* ''Manel Puig''
  8.  
  9. '''Alumnes'''
  10.  
  11. :* Frederic Puig
  12. :* Filomeno Garcia
  13. :* Manel Puigdevall

Que ens mostrarà el que es veu a la figura:

Figura Representació del text en format wikicode

Es pot veure com el programa ha interpretat les marques ”=” o ”==” per mostrar els diferents nivells dels títols, que els símbols ”:*” indiquen llistes de punts i que amb la diferent quantitat de cometes s’indiquen negretes o cursiva. Per tant, és un exemple que indica clarament com ha de ser representada la informació.

Descriptius o semàntics

En aquests llenguatges es descriu quina estructura lògica té el document ignorant de quina manera serà representada en els programes. Només es posen les marques amb l’objectiu de definir les parts que donen estructura al document. L’exemple més important és l’XML però n’hi algun altre que està tenint molt de suport, com per exemple JSON.

En el document següent tenim un exemple d’un fitxer de marques que dóna informació sobre persones:

  1. <alumnes>
  2. <persona>
  3. <nom>Pere</nom>
  4. <cognom>Puig</cognom>
  5. </persona>
  6. <persona>
  7. <nom>Manel</nom>
  8. <cognom>Garcia</cognom>
  9. </persona>
  10. </alumnes>

Es pot veure clarament que la informació de les marques en el document estableix quin és el contingut de les dades: una llista d’alumnes. Amb un simple cop d’ull resulta fàcil determinar que Pere i Manel són noms i que Puig i Garcia són cognoms. Però per mitjà de la jerarquia de les dades es pot inferir que Pere Puig i Manel Garcia són alumnes ja que tant nom com cognom estan englobats dins de la marca alumnes.

Aquest document mostra quina és l’estructura de les dades que conté i a més aquesta també es pot descobrir tot interpretant les etiquetes el seu contingut semàntic. A partir dels coneixements que es tinguin es dedueix que Pere és el nom d’una persona que és un alumne.

Sistema d'etiquetatge

Tant si el sistema és descriptiu com de presentació les marques no han estat col·locades de qualsevol manera sinó que s’ha anat seguint un sistema determinat. Sovint les marques envolten el contingut que volem que tingui un significat o que sigui representat d’una manera determinada. No es poden col·locar les marques de qualsevol manera, ja que una de les coses que cal evitar són possibles malinterpretacions.

Per això, a més de definir les marques que s’hi posaran, els llenguatges de marques defineixen unes regles d’ús que especifiquen com han de ser les marques, en quines condicions es permet fer-les sevir i a vegades fins i tot què signifiquen.

Història

Es considera que l’origen dels llenguatges de marques està en les modificacions que els impressors feien amb llapis en manuscrits. Quan algú volia imprimir un llibre que havia escrit, els impressors, amb un llapis generalment de color blau, escrivien en el text quines característiques havia de tenir cada part del text, si s’havia de fer en negreta, si era el títol del llibre, etc. Es creu que aquests són els antecedents de les marques.

SGML

Al principi dels anys vuitanta a IBM necessitaven alguna manera d’emmagatzemar i compartir una gran quantitat d’informació entre diferents plataformes i que permetés integrar les dades en sistemes de dades, editors, etc., i van desenvolupar GML, que posteriorment va acabar amb el nom SGML en el moment en què va ser estandarditzat l’any 1986 per l’organització d’estàndards internacional ISO (International Organitzation for Standardisation). L’especificació es troba sota el nom ISO-8879.

A pesar que no es considera el primer llenguatge de marques, va ser el primer llenguatge reconegut com a estàndard ISO.

SGML (standard generalized markup language) és un llenguatge basat en les dades de text que es pot fer servir per posar metadades a les dades. És un sistema per organitzar i etiquetar elements d’un document posant èmfasi en els aspectes de l’estructura d’un document i deixant que sigui l’intèrpret el que s’encarrega de fer la representació visual d’aquestes dades. Ho fa definint unes regles estrictes que especifiquen de quina manera es poden fer les etiquetes.

SGML es va dissenyar per ser una manera estàndard d’etiquetar dades genèriques de manera que no importés si les dades per etiquetar provenien del món de les matemàtiques o bé eren els resultats financers d’una empresa. Totes les dades es podien etiquetar amb sentit fent servir SGML.

El fet que SGML fos tan complex no el feia ideal per intercanviar dades per mitjà d’Internet. Si només un grup de persones podia generar informació el creixement de l’entorn Web hauria estat molt inferior.

SGML es feia servir sobretot en documents que havien de tenir molts canvis i que posteriorment s’havien de representar en formats diferents.

Per tant, amb SGML tenim els avantatges següents:

  • Tenim una manera de reutilitzar les dades.
  • Permet un control més gran sobre les dades i en garanteix la integritat.
  • És portable.
  • És flexible.
  • Ens garanteix la perdurabilitat de la informació.

Però no tot són avantatges en l’SGML:

  • La majoria dels documents que s’hi creaven només estaven destinats a la impressió.
  • És terriblement complex, de manera que no es fa servir en ordinadors personals.

HTML

El 1989, Tim Berners-Lee i Anders Berglund, dos investigadors del CERN (acrònim de Conseil Européen pour la Recherche Nucléaire, Organització Europea per a la Recerca Nuclear), van crear un llenguatge basat en etiquetes basat en SGML destinat a compartir informació per Internet: HTML (hypertext markup language). HTML es basa en la manera de definir i interpretar etiquetes de SGML però no és totalment compatible amb SGML (algunes de les regles que s’hi han definit incompleixen les regles SGML).

HTML es concentra a definir un format per descriure la visualització de la informació en una pàgina web i és molt senzill. La seva senzillesa ha estat un dels factors que ha portat a la ràpida popularitat del World Wide Web i alhora d’Internet. És un dels motius pels quals cada dia es generen milions de pàgines web noves.

El gran èxit de les tecnologies basades en HTML ha fet que no parin d’evolucionar i, per tant, que HTML hagués d’evolucionar molt ràpidament per adaptar-se cada vegada a més canvis i a les noves necessitats dels usuaris. Això, sumat al propòsit de no incrementar la dificultat del llenguatge, ha provocat que no sempre s’hagin fet les coses de la mateixa manera i que, per tant, la creació d’intèrprets de HTML (en especial els navegadors) cada vegada sigui més complexa.

A tot això s’hi ha de sumar que, malgrat no estar pensat per representar la informació, HTML no defineix gaire estrictament algunes de les regles de com s’ha de visualitzar la informació, i per tant sovint els navegadors han fer interpretacions que no sempre coincideixen amb les que fan els altres navegadors. És conegut per tots els dissenyadors de pàgines web que les pàgines no sempre es veuen igual en tots els navegadors (figura).

Figura Visualització de pàgines en navegadors
A vegades les diferències són mínimes però en altres casos les diferències poden ser molt importants.

D’altra banda, HTML funciona bé a l’hora de presentar informació als humans però té uns quants problemes que el fan poc eficient per a les noves aplicacions actuals: és molt difícil reutilitzar la informació que conté per generar resultats en formats diferents dels que ha definit el dissenyador i és molt complex per als programes automàtics interpretar de quin tipus són les dades contingudes en un document HTML.

Per tant, calia alguna manera de poder fer cerques intel·ligents en els documents HTML i seleccionar-ne el resultats segons criteris personalitzables.

Calia una manera de buscar, moure, visualitzar i manipular la informació continguda en els documents HTML.

I per aquest motiu va aparèixer l’XML.

XML

El consorci W3C va desenvolupar una alternativa a l’HTML que pogués satisfer les necessitats futures del web. El 1996 el consorci W3C es va proposar introduir el poder i la flexibilitat de l’SGML al web.

SGML oferia tres avantatges que l’HTML no tenia:

  • Extensibilitat
  • Estructura
  • Validació

La versió més usada és la 1.0, ja que la versió 1.1 no aporta gaires novetats interessants per a la majoria d’usos (bàsicament sobre les versions d’Unicode posteriors a XML 1.0)

El febrer de 1998 es llença l’especificació 1.0 d’XML (www.w3.org/TR/2004/REC-xml-20040204) i posteriorment el 2004 va sortir la versió 1.1 (www.w3.org/TR/xml11). Aquestes especificacions s’han anat revisant periòdicament.

L’XML és un llenguatge simple de descripció d’informació:

  • És un estàndard que permet dissenyar i desenvolupar llenguatges de marques.
  • És un format de text estandarditzat que serveix per representar i transportar informació estructurada.
Nombre d'etiquetes

A l’HTML li ha anat bé amb un nombre finit d’etiquetes i, per tant, a l’hora de dissenyar l’XML es van fer diversos intents de crear un nombre finit d’etiquetes. Però tots els intents de crear un conjunt finit d’etiquetes van fallar perquè restringir les etiquetes restava flexibilitat al llenguatge.

Es va veure que cada conjunt d’usuaris necessita un subconjunt d’etiquetes diferent i que sovint eren divergents (els matemàtics en feien servir un, els químics en necessitaven un altre, etc.), o sigui, que la solució final adoptada va ser la més lògica: si restringir les etiquetes resta flexibilitat el més fàcil és no restringir-les.

L’XML defineix un nombre infinit d’etiquetes.

Per tant, l’XML permetrà que cada persona pugui definir les etiquetes que li facin falta per poder representar les dades més adequadament.

Estructura de les dades

Una altra idea que es va tenir en compte a l’hora de desenvolupar l’XML era que les dades que contingués es poguessin reutilitzar per generar altres resultats i, per tant, calia que pogués ser interpretat fàcilment per mitjà de programes d’ordinador. Per tant, les dades contingudes en documents havien de tenir una estructura.

Per tant, l’XML es va dissenyar amb la idea de donar estructura a les dades i no preocupar-se de com es presentaran les dades als usuaris. Per fer-ho ja es desenvoluparien altres alternatives: CSS, XML-FO, etc.

Una de les idees més importants d’XML és separar les dades de la presentació.

Això fa que a l’hora de crear un document XML s’ha de pensar com s’han d’estructurar les dades i mai especificar res de com s’hauran de representar.

Transport de les dades

El fet que l’XML es concentri en l’estructura de les dades i que, per tant, sigui relativament fàcil determinar quines dades conté, el fa un sistema ideal per al transport de dades entre diferents plataformes.

Per tant, si tenim un document XML com aquest:

  1. <alumnes>
  2. <persona>
  3. <nom>Manel</nom>
  4. <cognom>Garcia</cognom>
  5. </persona>
  6. <persona>
  7. <nom>Pere</nom>
  8. <cognom>González</nom>
  9. </persona>
  10. </alumnes>

Podem veure que observant aquest document és relativament senzill respondre les preguntes:

  • Quina informació conté el fitxer?
  • Quina és l’estructura de la informació?
  • Quines etiquetes s’han creat per descriure’n la informació?
Creació de llenguatges

És evident que la llibertat que dóna tenir un nombre infinit d’etiquetes no és necessària en la majoria dels àmbits d’actuació. Per aquest motiu, normalment quan algú vulgui emmagatzemar informació definirà un nombre finit d’etiquetes i en quin ordre han d’aparèixer.

Per poder solucionar aquests problemes en XML es poden definir fitxers que defineixin quina serà l’estructura del document, i que, per tant, es pugui comprovar si el document segueix l’estructura correcta o no. Això alhora permet que si definim el vocabulari de manera pública qualsevol ens pugui enviar documents i detectar si estan ben formats o no.

De fet, ja hi ha tota una sèrie de documents basats en XML que s’han convertit en estàndards públics en diferents àmbits, alguns dels quals els podeu veure en la taula.

Taula: Alguns llenguatges estàndard basats en XML
Nom Ús
SVG Pensat per a gràfics vectorials en 2D amb animacions o sense
MathML Llenguatge per representar fórmules matemàtiques
CML Llenguatge per a l’intercanvi d’informació química
SMIL Tractament d’informació multimèdia
SSML Síntesi de veu
ChessGML Per representar partides d’escacs
XFRML Per fer informes financers
SML Usat en la indústria de l’acer

Però no s’acaba aquí, ja que la llista és immensa: SMBXML, CIML, NAML, TML, SCORM, LMML, OpenMath, PetroXML, ProductionML, GeophysicsML, X3D, MML, SMDL, BGML, etc.

Extensible

Un altre dels avantatges d’XML és que és fàcilment extensible i adaptable a les necessitats que tinguem. L’XML permet que es barregin diferents vocabularis en el mateix document.

Això fa que puguem definir un document XML amb un vocabulari creat per nosaltres que defineixi una llista d’alumnes i que alhora hi puguem afegir una imatge amb el logotip de l’escola en format SVG (un estàndard XML de gràfics vectorials) i alhora definir-hi la presentació en XHTML.

Per tant, tenim prou flexibilitat per representar les dades que ens calguin en cada moment

Ús d'XML

Actualment els usos d’XML són molt diversos:

  • Mostrar el contingut de pàgines web. Un dels llenguatges XML és l’XHTML, que intenta modificar l’HTML per fer-lo més senzill d’interpretar.
  • Comunicar sistemes distribuïts que fins i tot executin sistemes operatius diferents o estiguin en plataformes totalment diferents.
  • En comerç electrònic, en un sistema conegut com a Bussines2Bussines que permet a les empreses compartir dades de manera automàtica.
  • Reduir la càrrega de servidors distribuint-la entre servidors.

Molts programes que feien servir formats binaris per emmagatzemar les seves dades han passat a algun tipus d’XML:

  • Microsoft Office: va passar de desar els documents en binari .DOC a XML .DOCX (OOXML) en estandaritzar-lo.
  • OpenOffice.org: desa els seus documents en un format XML.

Podem veure que molts programes fan servir XML per desar la seva configuració o les seves dades amb una simple cerca en el sistema operatiu.

Amb una simple cerca podem veure quants fitxers XML tenim en el nostre sistema operatiu. Per exemple, en Linux podem executar el següent per veure el nombre de fitxers XML que hi tenim:

  $ locate .xml | wc -l

En Windows podem fer el mateix amb:

  c:\> dir /a-d /s *.xml | find /c /v “”
Problemes

A pesar dels múltiples avantatges que ofereix l’XML, també se li han fet crítiques, com el fet que els fitxers XML tenen la tendència a ser molt grans. Gairebé sempre ocupen una quantitat molt més gran d’espai en disc que els seus equivalents en format binari.

El fet de fer servir fitxers molt grans pot tenir un impacte important en el rendiment dels programes, ja que abans de poder-hi treballar han de carregar el fitxer o descarregar-lo de la xarxa.

Hi ha gent que considera que el problema de la grandària dels fitxers a vegades és compensat per:

  • La facilitat d’interoperativitat entre programes.
  • El preu de l’emmagatzematge és cada vegada més baix i per ara sembla que la tendència és que encara baixi més.

Però no tothom hi està d’acord, i per aquest motiu han aparegut tota una sèrie d’alternatives a l’XML que es coneixen com a llenguatges de marques lleugers, que normalment tenen com a objectiu aconseguir que els fitxers de marques ocupin molt menys espai:

  • En ocupar menys espai estalvien amplada de banda i espai de disc.
  • Normalment es poden convertir a XML sense problemes.
  • Ocupen menys memòria RAM quan són processats.

Els llenguatges de marques lleugers més usats actualment són JSON (JavaScript object notation) i els llenguatges de marques dels wikis.

Anar a la pàgina anterior:
Referències
Anar a la pàgina següent:
Activitats