XML

A HupWiki-ből...

Extensible Markup Language

Matematikai fastruktúrák szövegszerű leírására használt szabvány, legismertebb alkalmazása a HTML (pontosabban az XHTML). Gyakorlatilag a következő egyszerű szabályokat definiálja:

  • Minden elem formátuma: <elemnév attribútum1="érték1" attribútum2="érték2" ...>tartalom...</elemnév>, ahol a tartalom... helyén szöveg és további elemek keveréke állhat.
  • Helyes egymásbaágyazás. Az <elem1><elem2></elem1></elem2> sorrend nem fordulhat elő, előbb az elem2-t kell lezárni (ettől lesz matematikailag fa).

Hogy pontosan milyen attribútumokkal bírnak az egyes elemek, milyen egyéb elemek lehetnek a tartalomban, azt ún. nyelvtanokkal lehet definiálni. Nyelvtanok megadására többféle kiegészítő szabvány is létezik, különféle kifejezőerővel:

  • DTD (Document Type Definition) - a legősibb, maga az XML-szabvány is ezt követeli meg. Nagyon nem rugalmas, egyetlen globális névtérbe zsúfolna mindent, különböző forrásból származó nyelvtanok összeillesztésére nem valami jó.
  • XML-sémák - igen barokkos megfogalmazásra ad lehetőséget, és a szabvány íróira láthatóan nagy benyomást tett a Java objektumorientált típusrendszere, valamint James Joyce Ulysses c. könyve (ugyanolyan olvashatatlanul csapongó maga a szabvány szövege). Viszont támogat névtereket (különböző nyelvtanok kompozíciója!), és típusok kiterjesztését is. (És sajnos típusszűkítést is.) A nagyvilágban a web service-rajongók mindennapi kenyerének egy darabját adja.
  • Relax NG - kicsi, sokoldalú, olvasható, elegáns. Ugyan kevés "hivatalos" lendület van mögötte (2004 januárját írjuk), de reméljük, ez változni fog.

Mivel az XML egy fastruktúrát ír le, ezen műveleteket is lehet végezni:

  • Fa-csomópontok szűrésére, kiválasztására jó az XPath nyelv.
  • Fastruktúrából másfajta szerkezetű fastruktúra előállítására jó az XSLT nyelv. A fában különféle illesztési mintákat felismerve a célfára egy további részminta aggatható, itt mind a mintafelismerés, mind az célfa növesztése során igen nagy szerep jut az előbbiekben említett XPath-nek.