Az Extensible Markup Language (XML) az SGML egy kibővíthető leegyszerűsítése. Leegyszerűsítése a kötötteb szintaxis, amely könnyebben parszolhatóvá teszi, azaz a gépi ellenőrzése, feldolgozása könnyebbé válik. Kiterjeszthetősége pedig azt jelenti, hogy adott alkalmazásokhoz magunk definiálhatunk u.n. tag-eket.
Elsődleges célja strukturált adatok tárolása és megosztása, elsősorban az Interneten, de máshol is. Az XML nem arra a célra készült, hogy csináljon valamit, nem is arra, hogy "szépen" meg lehessen jeleníteni, hanem, hogy egy dokumentumot tároljon a strukturájával együtt.
Az XML nyitott és bővíthető, azaz nem léteznek előre definiált tag-ek, (mint pl. a HTML-ben), hanem nekünk kell és lehet szabadon definiálni az egyes tag-eket.
Az XML a World Wide Web Consortium (W3C) ajánlása. A W3C-nek 2007 tavaszám több, mint 400 tagja volt.
Egy XML dokumentum két nagyon fontos szinten lehet "korrekt":
Well-formed: XML szintaxis szerint helyes, azaz minden nyitótagnak megvan a maga lezáró tagja, és nincsen átlapolás.
Valid: Azon kívül, hogy well-formed, még megfelel bizonyos szemantikus szabályoknak is.
<book>This is a book.... </book> <recipe name="bread" prep_time="5 mins" cook_time="3 hours"> <title>Basic bread</title> <ingredient amount="3" unit="cups">Flour</ingredient> <ingredient amount="0.25" unit="ounce">Yeast</ingredient> <ingredient amount="1.5" unit="cups" state="warm">Water</ingredient> <ingredient amount="1" unit="teaspoon">Salt</ingredient> <instructions> <step>Mix all ingredients together.</step> <step>Knead thoroughly.</step> <step>Cover with a cloth, and leave for one hour in warm room.</step> <step>Knead again.</step> <step>Place in a bread baking tin.</step> <step>Cover with a cloth, and leave for one hour in warm room.</step> <step>Bake in the oven at 350° for 30 minutes.</step> </instructions> </recipe> <!-- WRONG! NOT WELL-FORMED XML! --> <p>Normal <em>emphasized <strong>strong emphasized</em> strong</strong></p>
Viszont lehetnek üres, és önlezáró tag-ek:
<foo></foo> <foo /> <foo/> <info author="John" genre="science-fiction" date="2009-Jan-01" />
XML deklaráció. Tartalmazza a verziót (tipikusan 1.0), a karakterkódolást (UTF-8, UTF-16, latin-2, stb...), és esetleges külső függéseket:
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="ISO-8859-2"?>
Kommentek:
<!-- This is a comment. --> <!-- This is a comment. in more lines... -->
Az alapegység az elem (element):
<name attribute="value">content</name>
Az XML két módon engedi, hogy speciális karakterekre hivatkozzunk. Az egyik az Entity referenciák alkalmazása:
& & ampersand < < less than > > greater than ' ' apostrophe " " quotation mark <company_name>AT&T</company_name>
Mi magunk is definiálhatunk ilyeneket a Document Type Definition (DTD)-ben:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE example [ <!ENTITY copy "©"> <!ENTITY copyright-notice "Copyright © 2006, XYZ Enterprises"> ]> <example> ©right-notice; </example>
Vagy hivatkozhatunk a decimnális, vagy hexadecimális kódjukra:
<company_name>AT&T</company_name> <company_name>AT&T</company_name>