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.