Mit értünk azazlatt, hogy az XML kiterjeszthető? Tekintsük a következő példát
<?xml version="1.0" encoding="ISO-8859-2"?> <note date="12/11/2002" id="1"> <to>Peti</to> <from>Jani</from> <body>Menjünk bringázni a hétvégén</body> </note>
Valaki ír egy alkalmazást, amely az ilyen típusú üzeneteket képes megszerkeszteni, továbbítani majd megjeleníteni. Az idők során azonban újabb igények merülnek fel az üzenettel kapcsolatban, pl. jó lenne jelezni, hogy ez most egy kérdés, ötlet vagy parancs. Jó lenne az üzenetnek prioritást is adni. Esetleg több címzettünk is lehet.
<?xml version="1.0" encoding="ISO-8859-2"?> <note date="12/11/2002" id="1"> <priority>urgent</priority> <to>Pista</to> <to>Peti</to> <from>Jani</from> <question> <body>Menjünk bringázni a hétvégén</body> </question> </note>
Most mi történjen az üzenetet feldolgozó/megjelenítő programokkal? Hibajelzéssel megálljanak, hibásan működjenek, szálljanak el?
Az XML alkalmazások még mindig képesek lesznek az új, kibővített üzenetből a korábban ismert információ kinyerésére, és feldolgozására.
A kiterjeszthetőség miatt hasznosabb, ha amit csak tudunk elemekként, és nem attribútumként ábrázolunk.
<?xml version="1.0" encoding="ISO-8859-2"?> <note date="12/11/2002" id="1"> <priority>urgent</priority> <to>Pista</to> <to>Peti</to> <from>Jani</from> <question> <body>Menjünk bringázni a hétvégén</body> </question> </note>
helyett inkább írjuk ezt:
<?xml version="1.0" encoding="ISO-8859-2"?> <note id="1"> <date> <year>2002</year> <month>12</month> <day>11</day> </date> <priority>urgent</priority> <to>Pista</to> <to>Peti</to> <from>Jani</from> <question> <body>Menjünk bringázni a hétvégén</body> </question> </note>
Az attribútumokkal az alábbi gondok vannak:
Attributumok nem tartalmazhatnak többszörös értékeket. Gyerekelemek mindig ismétlődhetnek, így egyszerűen jelüljük a többszörös értékeket. Lásd a <to> tag ismétlődése.
Attributumok nehezen bővíthetők. A dátumunkat ől. egéászen egyszerűen kibővíthetnék egy időzóna összetevővel a gyerekelem ábrázoláskor, de megyszenvednénk a string attribútumot feldolgozó program esetében.
Az attribútumok nem írnak le struktúrát, a gyerekelemek igen.
Az attributumokat nehezebb programból kezelni.
Az attributum értékek validságát sokkal nehezebb ellenőrizni.
Az egyetlen szokásos kivétel az id-k, egyedi azonosítók használata.