Az XML leíró nyelv Szabályok XHTML írásra Tartalom 1. Az XML és XHTML nyelvek...1 1.1. Az XML leíró nyelv...1 1.1.1. Néhány alapvető nyelvi elem...2 1.1.1.1. Az XML deklaráció...2 1.1.1.2. Elemek és az elemek tulajdonságai...2 1.1.1.3. Entitások...4 1.1.1.4. Vezérlő utasítások...4 1.1.2. Az XML dokumentumok jól formázottsága...5 1.1.3. Az XML dokumentumok modellezése és érvényessége...5 1.1.3.1. A DTD alapú típus megadás...5 1.1.3.2. Az XML Schema...7 1.1.4. Az XML dokumentumok megjelenítése...8 1.1.5. XML transzformációk (XSLT)...8 1.1.6. XML állományok feldolgozása...10 1.2. Az XHTML nyelv...12 1.3. Szabályok XHTML írásra...12 1.3.1. A DTD-k...12 1.3.2. A HTML elem szintaxisa...12 1.3.3. Az XHTML írásának fontosabb szabályai...12 1.3.4. Kiinduló sablon...14 1. Az XML és XHTML nyelvek 1.1. Az XML leíró nyelv Az XML - extensible Markup Language ugyancsak az SGML-re épülő jelölő vagy leíró nyelv, és amint neve is állítja, egy bővíthető nyelv. Gyakorlatilag bármilyen strukturált adat illetve információ leírására alkalmas. A nyelvet a W3C specifikálta. Amikor a konzorcium munkája sokirányú lett, egy olyan leíró nyelvre volt szüksége amelyik kifejező, jól ellenőrizhető és elég rugalmas. A HTML nem felelt meg ezeknek a feltételeknek. Ezért a W3C HTML után egy olyan nyelvet standardizált amivel gyakorlatilag bármilyen Interneten közlekedő információt ábrázolni lehet, ugyanakkor szintaxisa szigorúbb. Alkalmazási területei szélesek: így a W3C 1999 utáni standardjait ezzel fogalmazta meg. A nyelv elsődleges célja az adatok leírása és információ megosztása Interneten használt technológiák számára. A nyelvet egy külső szakértő, Tim Bray segítségével specifikálták 1996 és 1999 között,a ki létrehozta a nyelv egy előzetes változatát dokumentum kezelési feladatokra. Az első specifikációt 1
1998-ban véglegesítették. Mindmáig ez az 1.0-ás verzió legelterjedtebb, bár létezik 1.1-es specifikáció. 1.1.1. Néhány alapvető nyelvi elem Egy nagyon egyszerű XML dokumentum pl. az alábbi: <?xml version="1.0" encoding="utf-8"?> <kurzus> <modul id="első"> <tartalom>html jelölőnyelv</tartalom> <segedanyag>füzet I.</segedanyag> <eloado>szabó László</eloado> <idopont>2009. március 20.</idopont> </modul> <modul id="második"> <tartalom>css Stíluslapok</tartalom> <segedanyag>füzet II.</segedanyag> <eloado>szabó László</eloado> <idopont>2009. március 20.</idopont> </modul> </kurzus> Az XML dokumentumok felépítő elemei az alábbiak: az XML deklaráció elemek és az elemek tulajdonságai entitások vezérlő utasítások névterek 1.1.1.1. Az XML deklaráció A dokumentum első deklarációja az un. XML deklaráció vagy prológus. Ez megadja a nyelv verzióját és a használt karakterkészletet: <?xml version="1.0" encoding="utf-8" standalone="yes"?> Az 1.0 a verziószám, a karakterkódolás a fenti esetben UTF-8. Az UNICODE illetve UTF-8 karakterkészletet deklaráltan jól kezeli a nyelv: így gyakorlatilag bármilyen szöveg ábrázolható és feldolgozható a segítségével. A fenti példa még egy információt tartalmaz: a dokumentum használható-e önmagában, vagy szüksége van külső dokumentumokra is. 1.1.1.2. Elemek és az elemek tulajdonságai Az elemek (element) egy fa szerű struktúrát hoznak létre, egyetlen gyökér elemmel. A szintaxis szigorú: minden elemnek nyitó és záró címkével (tag) kell rendelkeznie: <tartalom>css Stíluslapok</tartalom> és ezek nem fedődhetnek át. Ha egy elem csak egy címkével rendelkezik, akkor ezt jelzi a szintaxis a záró > jel helyett helyett a /> sorozattal: <img src="kep.jpg" /> 2
Az elemek nem korlátozódnak egy rögzített halmazra mint a HTML: alkalmazástól függően új elemeket lehet deklarálni. A nyelv relatív jól olvasható emberi szemmel (és természetesen gépek által). Az emberi olvashatóság miatt azonban általában valamilyen stíluslap megoldással jelenítik meg. Például a fenti dokumentumot így: De ehhez már külső megoldásra (transzformáció és stíluslap) van szükség. Az elemek nevei betűkből, számokból és a _ jelből állnak, de a betűk bármilyen ABC betűit tartalmazhatják. Az elemek neveiben kis vagy nagybetű számít. Mivel a különböző területeken használt elem nevek fedődhetnek, az XML un. névtereket (name spaces) használ a nevek egyediségének biztosítására. Így pl. A MathML matematikai leíró nyelv, amelynek XML névtere a mathml, így ennek <mo> eleme (math operator) használható így: <mo> + </mo>, de így is:. <mathml:mo> + </mathml:mo> A tulajdonságoknak egyedi neveknek kell lenniük (egy tulajdonság nem adható meg kétszer egy elemen). A tulajdonságértékeket mindenképp idézőjel vagy aposztróf közé kell tenni. <üzenet id="első" tipus='"'>első üzenet</üzenet> Az xml névtér rendelkezik néhány előre definiált tulajdonsággal. Ilyenek: xml:lang Bármely elemnél megatható a tartalom nyelve, pl: <p xml:lang="hu-hu">pargrafus tartalma?</p> xml:space Az XML kezelheti a tartalmi szövegekben levő szóközöket úgy mint a HTML (a többszörös helyett egyet hagyva), ugyanakkor megvan a lehetőség arra is, hogy 3
érintetlenül hagyja őket: <pre xml:space="preserve">program forrás</pre> xml:id Minden elemnek adható egy egyedi azonosító, amely belső refrenciákra használható: <p xml:id="első">első paragrafus tartalma</p> 1.1.1.3. Entitások Bizonyos tartalmakat könnyebben kezel a nyelv ha azokat külön, akár a dokumentum első részeiben, akár külső helyeken, pl. állományokban definiál. Az ilyen tartalmaknak az XML nevet ad, és egy referenciával hivatkozik rá. Az XML dokumentumokban a két legfontosabb entitás a karaktereket illetve teljes szövegrészeket tartalmazó entitások. A karakterek esetében a használat hasonló a HTML-hez, pl. az Á itt is az Á karaktert jelenti. A hosszabb szövegrészeknek több okból érdemes nevet adni, pl. akkor, ha többször használjuk őket, és paraméterként is előfordulnak. Az elemek tartalmi részébe illeszthetünk olyan szövegrészeket, amelyeket az XML elemzők átugorhatnak, és úgy kezelnek, mintha nem tartoznának hozzá a leíró nyelvhez. Pl. ha egy szövegrészben olyan karakterek vannak, amelyek az értelmező számára elválasztó karakterek ( <, >, & ) akkor a karakter entitások használata helyett a szöveget egy un. CDATA (unparsed character data) szekcióba helyezhetjük. A CDATA szekció szintaxisa: <![CDATA[ itt jön a beillesztet szöveg ]]> Például:. <relacio><![cdata[ if (a < b) x = 2; ]]></relacio> Gyakori, hogy beillesztett forráskódokat (pl. JavaScript) így kell kezelni. 1.1.1.4. Vezérlő utasítások Az XML dokumentum egyúttal végrehajtható elemeket is tartalmazhat. Ezeket különböző célokra lehet felhasználni, és általában csak bizonyos feldolgozó programok számára jelentenek végrehajtást. Más feldolgozók egyszerűen átugorják őket. A szintaxisuk: <?név adat?> Az utasítás, amennyiben a feldolgozó program számára van értelme, elindítja a név nevű feldolgozást a megadott adattal. Az adat rész opcionális, a név önmagában jelenthet egy műveletet a feldolgozó program számára. 4
Például a dokumentumot elemző program meghívhat egy külső interpretert és annak kimenetét illeszti a dokumentumba:. <div> <p><a href=" <?php echo $_SERVER['PHP_SELF'];?>" >Vissza</a></p> </div> 1.1.2. Az XML dokumentumok jól formázottsága Amint említettük, az XML dokumentumok formátuma szigorú és ellenőrizhető. Alább megadunk néhány fontos jellemzőt, amelyekkel egy jól formázott dokumentum rendelkezik: -a dokumentumnak egy gyökér eleme van -az elemek egymásba ágyazódhatnak de a beágyazások nem fedhetik át egymást -az elemek címkéi mindig zárulnak (akár két címkével, akár egy címke és /> lezárás -a tartalmazott szöveg megfelel a deklarált karakterkészletnek 1.1.3. Az XML dokumentumok modellezése és érvényessége Az XML nyelv tulajdonképpen nem önmagában, hanem mint más nyelveket modelező vagy definiáló nyelv érdekes. A bevezetőben megadott tanfolyam definíció egy jól formázott XML, de ebben gyakorlatilag bármilyen címkát használhatunk az elemek megadására: nincsenek megkötések erre nézve. Ezzel szemben az XHTML (XML-en alapuló HTML), MathML (Mathematical Markup Language), a SVG (Scalable Vector Graphics) valamennyien XML alapú nyelvek, de jól meghatározott elemkészlettel és elem tulajdonságokkal. Ezek esetében a dokumentum típusokra adott egy modell, egy pontos leírás nemcsak arról, hogyan kell kinézzen, hanem arról is, hogy a dokumentum milyen elemeket tartalmazhat és milyen sorrendben. Ezeket a leírásokat ugyancsak egy nyelv segítségével adják meg, és a leírást általában publikussá teszik. Így bárki, ellenőrizheti, hogy egy adott dokumentum érvényes XHTML vagy a érvényes MathML. Ugyanakkor a programok számára az is könnyen ellenőrizhetővé válik, hogy egy adott MathML dokumentum milyen verziójú, és természetesen a doukemnum szerkesztéséhez illetve feldolgozásához is adott minden információ. Az XML dokumentum modelleket több nyelven lehet megfogalmazni, ezek legtöbbje maga is XML alapú. Az első nyelv amit erre a célra használtak SGML gyökerű, és ugyanaz a nyelv amivel a HTML dokumentumok leírásánál találkoztunk. Ennek segítségével adható meg a DTD (Document Type Description). Több XML alapú dokumentum modellt leíró nyelv létezik, ezek közül az egyik legismertebb, és időben is elsők közt specifikált az XML Schema (a W3C által ajánlott nyelv). Az ismertebb nyelvek közt van még az OASIS által kidolgozott REALAX NG. 1.1.3.1. A DTD alapú típus megadás A DTD (Document Type Description) dokumentumok az SGML alapú nyelvek szintaxis definíciójához használt formális szabályokat tartalmaznak. Ez volt az első olyan nyelv amellyel XML alapú dokumentum modelleket írtak le, és jelenleg is van eset amikor még használjuk. 5
Amennyiben adott az alábbi XML példa dokumentum (kurzus.xml): <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE kurzus PUBLIC "-//FOO//DTD Java KURZUS V1.0//HU" SYSTEM "http://www.ms.sapientia.ro/~lszabo/html/modul4/2_dtd/kurzus.dtd"> <kurzus> <modul sorszam="1" idotartam="8"> <tartalom>html jelölőnyelv</tartalom> <segedanyag oldalszam="60">füzet I.</segedanyag> <eloado>szabó László</eloado> <idopont>2009.március 28.</idopont> </modul> <modul sorszam="2" idotartam="8"> <tartalom>css Stíluslapok</tartalom> <segedanyag oldalszam="40">füzet II.</segedanyag> <eloado>szabó László</eloado> <idopont>2009.április 4.</idopont> </modul > </kurzus> Akkor az alábbi DTD-vel adhatjuk meg a használható elemeket, azok tulajdonságait és az elemek egymásba ágyazhatóságát (kurzus.dtd): <!ENTITY % oraszam "CDATA"> <!ELEMENT kurzus (modul*)> <!ELEMENT modul (tartalom, segedanyag, eloado, idopont) > <!ATTLIST modul idotartam %oraszam; #REQUIRED sorszam CDATA #REQUIRED > <!ELEMENT tartalom (#PCDATA) > <!ELEMENT segedanyag (#PCDATA) > <!ATTLIST segedanyag oldalszam CDATA #REQUIRED> <!ELEMENT eloado (#PCDATA) > <!ELEMENT idopont (#PCDATA) > Nem célunk most a DTD részletes boncolgatása, abból jól kiolvasható a használható elemek és azok viszonya, illetve az elemek tulajdonság listája. A DTD nem tud a tulajdonságok esetében olyan mintákat megadni, amelyekkel a tulajdonságokat részletesen ellenőrizni lehet. Az adott modellnek megfelelő XML dokumentum elején, az XML prológus után egy referencia áll a DTD-re: <!DOCTYPE kurzus PUBLIC "-//FOO//DTD Java KURZUS V1.0//HU" SYSTEM "http://www.ms.sapientia.ro/~lszabo/html/modul4/2_dtd/kurzus.dtd">, így bárki könnyen ellenőrizni tudja, hogy a dokumentum érvényes-e. A DOCTYPE utáni kurzus 6
a dokumentum gyökér elemét adja meg, utána a DTD leírás két elérhetősége következik. A PUBLIC kulcsszó utáni név akár fiktív is lehet, ez elméletileg egy publikus azonosító, amit a feldolgozó programnak ismernie kellene. Jelenleg azonban a második, SYSTEM kulcsszó után álló azonosító a fontosabb, ami általában egy webcím, ahonnan a DTD letölthető. 1.1.3.2. Az XML Schema Ugyanannak az XML dokumentumnak az elején (kurzus.xml) hivatkozhatunk egy XML Schema nyelven megadott dokumentumra. Ezúttal a hivatkozás magában a gyökér elemben van: <?xml version="1.0" encoding="utf-8"?> <kurzus xmlns="http://www.ms.sapientia.ro/~lszabo" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation="http://www.ms.sapientia.ro/~lszabo/html/modul4/3_sch ema/kurzus.xsd"> <modul sorszam="1" idotartam="8"> <tartalom>html jelölőnyelv</tartalom> <segedanyag oldalszam="60">füzet I.</segedanyag> <eloado>szabó László</eloado> <idopont>2009.március 28.</idopont> </modul> <modul sorszam="2" idotartam="8"> <tartalom>css Stíluslapok</tartalom> <segedanyag oldalszam="40">füzet II.</segedanyag> <eloado>szabó László</eloado> <idopont>2009.április 4.</idopont> </modul> </kurzus> Az adott webcímen léteznie kell a típust leíró, XML Schema nyelven megadott dokumentumnak: <?xml version="1.0" encoding="utf-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/xmlschema"> <xs:annotation> <xs:documentation> Java alapú webprogramozés tanfolyamot leíró dokumentum, XML Schema állománya Marosvásárhely, 2009 március 28. </xs:documentation> </xs:annotation> <xs:element name="kurzus" type="kurzus" /> <xs:complextype name="kurzus"> <xs:sequence> <xs:element name="modul" type="modul" minoccurs="0" maxoccurs="30" /> </xs:sequence> <xs:attribute name="idotartam" type="long" use="required" /> <xs:attribute name="sorszam" type="byte" use="required"/> </xs:complextype> <xs:complextype name="modul"> 7
<xs:sequence> <xs:element name="tartalom" type="xs:string" /> <xs:element name="segedanyag" type="segedanyag" /> <xs:element name="eloado" type="xs:string" /> <xs:element name="idopont" type="xs:date" /> </xs:sequence> </xs:complextype> <xs:complextype name="segedanyag"> <xs:attribute name="oldalszam" type="xs:long" use="required"/> </xs:complextype> </xs:schema> Az XML-ben megadott dokumentum definíciók előnye, hogy XML-ben írhatóak - tehát ugyanabban a nyelvben amit az adott felhasználó amúgy is ismer és használ. Általában pontosabb definíciót tesznek lehetővé: nemcsak a nyelvtan adható meg pontosan, hanem a használt tulajdonság értékek ellenőrzéséhez szükséges minták is jól leírhatóak. 1.1.4. Az XML dokumentumok megjelenítése Az XML dokumentumok annak ellenére, hogy deklarált céljuk az emberi szemmel való olvashatóság is, nehezen olvashatóak. Megjelenítésükre két módszert használhatunk. Az első módszer ismert, és egyszerűen stíluslapok használatát jelenti. Erre akár CSS stíluslapokat is lehet használni. Nyilván a dokumentum struktúrája megmarad, így nagyon jó megjelenítést nehéz adni. A második módszer a transzformációs eljárások alkalmazása. Ilyenkor az XML dokumentumot egy transzformációs eljárással átalakítjuk, és eredményül egy másik XML, vagy sokszor XHTML (vagy egyéb dokumentum megjelenítő nyelven előállított) dokumentumot kapunk, amely úgy tartalmazza az eredeti dokumentum részeit, hogy a megjelenítés a legjobb legyen. A művelethez általában egy programra illetve egy vezérlő nyelvre van szükség, amelyet szintén XML-ben adnak meg. Ilyen nyelv az XSL (Extensible Stylesheet Language). 1.1.5. XML transzformációk (XSLT) Az XSLT (Extensible Stylesheet Language Transformations) tulajdonképpen egy alkalmazás, amely szabályokat tartalmaz arra nézve, hogy egy adott XML dokumentumot bizonyos sablonok szerint átalakítsunk. Eredményül a kimenetén egy olyan dokumentumot kapunk amely könnyen megjeleníthető. A transzformációt vezérlő dokumentum maga is egy XML dokumentum, amely átalakításai sablonokat tartalmaz. Az XSLT processzor a bemeneti dokumentum elemeit egyezteti a vezérlő dokumentum sablonaival, és elvégzi az átalakítást. A fenti kurzus XML-t például az alábbi XSLT dokumentummal alakíthatjuk át: <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/xsl/transform" version="1.0"> <xsl:output indent="yes" doctype-system="http://www.w3.org/tr/xhtml1/dtd/xhtml1-strict.dtd" doctype-public="-//w3c//dtd XHTML 1.0 Strict//EN"/> 8
<xsl:template match="/"> <html> <head> <title>java alapú webprogramozás tanfolyam</title> <meta http-equiv="content-type" content="text/html;charset=utf-8" /> <style type="text/css"> h1 { } table { } td { text-align: center }.balra { text-align: left; }.erositve { font-weight: bolder ; } </style> </head> <body> <h1>java alapú webprogramozás</h1> <table border="1"> <caption align="bottom">a tanfolyam munkaterve</caption> <tr> <th>sorszám</th> <th>időtartam</th> <th>a modul tartalma</th> <th>segédanyag</th> <th>előadó</th> <th>időpont</th> </tr> </table> </body> </html> </xsl:template> <xsl:apply-templates /> <xsl:template match="modul"> <tr> <td> <xsl:apply-templates select="@sorszam"> </xsl:apply-templates> </td> <td> <xsl:apply-templates select="@idotartam"> </xsl:apply-templates> </td> <xsl:apply-templates /> </tr> </xsl:template> <xsl:template match="tartalom"> <td class="balra erositve"><xsl:apply-templates /></td> </xsl:template> <xsl:template match="segedanyag"> <td><xsl:apply-templates /></td> </xsl:template> <xsl:template match="eloado"> <td><xsl:apply-templates /></td> </xsl:template> <xsl:template match="idopont"> <td><xsl:apply-templates /></td> </xsl:template> 9
</xsl:stylesheet> 1.1.6. XML állományok feldolgozása Az XML alapú dokumentumok elterjedésével mindennapi feladattá vált a dokumentumokat feldolgozó programok használata. Mivel ez rutinfeladattá vált, a feldolgozás menetét standardizálták és alkalmazás programozói felületeket -API-kat (Application Program Interface) alakítottak. Az XML feldolgozásoknak sok megközelítése van, ezek közül kettő a gyakrabban használt. Az első módszer a dokumentum elemzésére, és elemzés közben a felismert struktúrák (elemek) által kiváltott eseményekre épül. Az ilyen feldolgozásokat esemény alapú feldolgozásoknak nevezzük. Az elemzés során a módszer nem épít fel egy adatstruktúrát amely az XML dokumentumot ábrázolná, hanem a kiváltott események hatására egy kimenetet gyárt. Az ilyen módszer az eredeti dokumentumon kis módosításokat tud végezni, arra viszont alkalmas, hogy az eredeti dokumentumnak megfelelő transzformációkat végezzen, és egy új dokumentumot generáljon. Az első ilyen XML feldolgozó interfészt a Java nyelv keretein belül valósították meg, ez a Simple API for XML (SAX). Az esemény alapú feldolgozások gyorsak és kis memória igényűek. <kurzus> <modul sorszam="1" idotartam="8"> <tartalom>html jelölőnyelv</tartalom> <segedanyag oldalszam="60">füzet I.</segedanyag> <eloado>szabó László</eloado> <idopont>2009.március 28.</idopont> </modul> </kurzus> Egy ilyen elemző a fenti dokumentumot szekvenciálisan olvassa. Sorra felfedezi a : kurzus, modul, tartalom, stb. elemeket. Minden egyes elem felfedezésénél képes arra, hogy kiugorjon a szekvenciális feldolgozásból ("esemény következett be"), elvégezzen kimenet generáló feladatokat, utána pedig visszatér és folytatja az elemzést. SAX elemző minden elterjedt programozási nyelvre létezik. Java implementációja az org.sax.xml csomag (http://www.saxproject.org/). A második elterjedt feldolgozási mód során az elemző felépít egy dokumentum modellt, amellyel ábrázolja az XML-ben levő elemek fastruktúráját. A fa csomópontjaiban az elemeket és tulajdonságaikat ábrázoló adatstruktúrák vagy objektumok vannak. Mivel a modell felépítése után a feldolgozó a teljes XML struktúrát egyszerre tudja kezelni, gyakorlatilag bármilyen módosítást el tud végezni az elemeken akár a fa struktúráját is megváltoztathatja. Ugyanakkor könnyen kezeli az elemek közti linkeket (azaz a kapcsolatrendszert,ami az XML esetében sokkal bonyolultabb mint a HTML link rendszere). A dokumentum megjelenítéséhez pedig egy dinamikus struktúra áll rendelkezésre. Az egyik ilyen feldolgozó interfészt a W3C specifikálta a böngészőben létrejövő dokumentum ábrázolása végett. Ez a Document Object Model, DOM-nak nevezett alkalmazás programozói felület. A webprogramozás során mindkét módszert használjuk. Az esemény alapú módszer nagyon előnyös az XML-ben kódolt adatok feldolgozásához, míg a DOM az alapja a böngésző 10
dokumentumábrázolásának és a kliens oldali programozásnak (JavaScript segítségével). 11
1.2. Az XHTML nyelv Az XHTML ugyanazokat az elemeket használja, mint a HTML 4.01 nyelv. Mivel XML-ben van modellezve, az XML szintaktikai szabályai érvényesek rá, tehát egy XHTML már nem HTML, hanem XML dokumentum. Megjegyzendő, hogy az XHTML-nek van egy moduláris felbontása is: a nyelv elemeit kategóriákba sorolták, így lehetséges csak egy-egy leszűkítette elemkészlet használata, pl. olyan eszközök esetében amelyek nem képesek teljes HTML megjelenítésre (pl. mobil eszközök). 1.3. Szabályok XHTML írásra A dokumentum első elemeként ajánlott az XML prológus használata, de nem kötelező. Az alábbi forma megfelel: <?xml version="1.0" encoding="utf-8"> A DOCTYPE elem viszont már kötelező. 1.3.1. A DTD-k Az XHTML megtartja ugyanazt a három kategóriát a dokumentumírásban mint a HTML 4.01, azaz a strict, transitional és frameset típusokat. A három szükséges DTD az említett sorrendben: <!DOCTYPE htmlpublic "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-strict.dtd"> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd"> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-frameset.dtd"> 1.3.2. A HTML elem szintaxisa A dokumentum gyökere továbbra is a HTML elem, így ennek kötelező tartalmaznia névtér megadása, az alábbi módon: <html xmlns="http://www.w3.org/1999/xhtml"> 1.3.3. Az XHTML írásának fontosabb szabályai A dokumentumnak XML értelemben jól formázottnak kell lennie, tehát be kell tartania z alábbi szabályokat: 1. Elemek és tulajdonságok nevét kisbetűvel írjuk. A tulajdonságok értékeit mindig "" idézőjelekbe tesszük 2. Az elemek egymásba ágyazódnak és a zárások nem fedhetik át egymást. 12
Tehát: <p><strong>szöveg</p></strong> helytelen. 3. Minden elemnél záró címkét kell használni, még akkor is ha az elem üres. Tehát: <p></p> 4. A HTML zárócímke nélküli elemeit zárni kell, akár záró címkével, akár egy címkével és záró per jellel. Ez tehát helytelen: <br> az alábbiak viszont helyesek: <br></br> <br /> 5.Nem szabad minimalizálni az elemek tulajdonságainak kiírását. Tehát az alábbi elem XHTMLben helytelen: <option name="maros" value="01" selected> a helyes írásmód: <option name="maros" value="01" selected="selected"> 6. Nem használandó az elemek name tulajdonsága, helyette az id-t kell használni. 7. Ha az elemekben megadjuk a használt nyelvet, akkor azt nem csak HTML hanem XML szerint is meg kell adni, pl.: <html xmlns="http://www.w3.org/1999/xhtml" lang="ro" xml:lang="ro"> 8. A script és style elemekben a magyarázat jel helyett a beszúrt szöveget CDATA-ként kell deklarálni (ez unparsed character data -t jelent, tehát az XML elemzők átugorják ezt a részt és szövegszerűen bent hagyják a dokumentumban). A szintaxis az alábbi: <script language="javascript"> <![CDATA[ function test (){ alert ("test"); } ]]> </script> Ha nem így adjuk meg, akkor a beszúrt programszövegekben a <, &, ", ' karaktereket karakter entitás referenciaként kell megadni (<, &, ", ' ). 13
1.3.4. Kiinduló sablon Az alábbi sablon használható kiindulópontnak egy XHTML kód írásánál: <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="hu" xml:lang="hu"> <head> <title>xhtml sablon</title> <style type="text/css"> <![CDATA[ /* stiluslap ide jön */ ]]> </style> </head> <body> </body> </html> Egy dokumentum megírása után mindenképpen egy ellenőrző programot kell használni, mert a hibás XML dokumentumot a böngészők nem jelenítik meg (például: http://validator.w3.org/). 14