i Az XML nyelv Győri László munkája
ii Copyright 2009 Győri László E közlemény felhatalmazást ad önnek jelen dokumentum sokszorosítására, terjesztésére és/vagy módosítására a Szabad Szoftver Alapítvány által kiadott GNU Szabad Dokumentációs Licenc 1.2-es, vagy bármely azt követő verziójának feltételei alapján. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation.
iii COLLABORATORS TITLE : Az XML nyelv ACTION NAME DATE SIGNATURE WRITTEN BY Győri, László 2009. december 17. REVISION HISTORY NUMBER DATE DESCRIPTION NAME v0.1 2009. november 20. (péntek) Elkezdem a beadandó feladatom készítését DocBook 5.0-ban. Az alapja kész, már csak a példákat kell elkészíteni. Győri László v0.8 2009. november 21. (szombat) A nap folyamán elkészítettem a források nagy részét, valamint finomítottam a DocBook felépítésén. Győri László v1.0 2009. november 22. (vasárnap) Befejeztem a DocBook-ot, remélhetőleg már nem szükséges módosítani. Győri László v1.1 2009. november 26. (csütörtök) Néhány javításon esett át a DocBook, most már minden tökéletes. Győri László v1.2 2009. december 16. (szerda) Kisebb módosításokat végeztem a DocBook-on. Győri László
iv Tartalomjegyzék I Beadandó feladatok. 1 1. PC Shop - XML 2 2. PC Shop - DTD 5 3. PC Shop - Relax NG 6 3.1 RNG - Matrjoska baba leírással............................................ 8 3.2 Az érvényesség ellenőrzése.............................................. 10 3.3 RNG - Matrjoska baba leírás nélkül......................................... 10 3.4 Az érvényesség ellenőrzése.............................................. 12 4. PC Shop - W3C XML Schema 13 5. PC Shop - XSLT 17 6. PC Shop - XSLT with CSS 25 7. PC Shop - XHTML-MP 30 7.1 XHTML-MP kimenet................................................. 30 8. Felhasznált DocBook parancsok: 32 9. Irodalomjegyzék 34 9.1 XML......................................................... 34 9.2 Docbook........................................................ 34 9.3 Programozás..................................................... 34
v Bevezetés A szerzőről 1991-ben születtem Debrecenben, a kórház elhagyása óta Nyíradony városban élem mindennapjaimat. Az óvodában jelesre vizsgáztam cipőkötésből, így sikeresen felvételt nyertem a Kölcsey Ferenc Általános Iskolába. 2005-ben, mikor leballagtam tanulmányaimat helyben folytattam tovább a Kölcsey Ferenc Gimnázium és Általános Iskolában. 2009-ben az érettségi után sikeres felvételt nyertem a Debreceni Egyetem Informatikai Karára programtervező informatikus szakon, állami képzésen. Az informatika az idők kezdetén a szívemhez nőtt. 7 évesen kaptam meg az első 486-os számítógépmet, amelyet nagy valószínűséggel a zsebemben lapuló mobiltelefon is felülmúl, de azokban az időknek az a számítógép erőműnek számított. Tanulmányaim mellett folyamatosan fejlesztettem informatikai készségeimet, így ötödikben az első informatika órákon nem sokáig kellett keresgélnem a power gombot. Középiskolás koromra több script-nyelvet is ismertem, a gimnáziumban saját szakkört tartottam HTML készítésből. 2009-re már néhány magas szintű programozási nyelvhez is hozzá tudtam szólni. Most, hogy az egyetemre járok sok érdekes dolgot ismerek meg és remélhetőleg még fogok is... Fejlesztői környezet Munkám egy részét otthon, Windows XP operációs rendszer alatt készítettem, valamint jól formázottságát Fedora GNU/Linux rendszer alatt ellenőriztem. Munkám során csak szabad felhasználású szoftvereket használtam fel. Feladatok A feladatok listája a következő: PC Shop - DTD PC Shop - RNG PC Shop - W3C XML Schema
vi PC Shop - XSLT PC Shop - XSLT with CSS PC Shop - XHTML-MP Ember, küzdj, és bízva bízzál! Idézet Madách Imre: Az ember tragédiája c. alkotásából
1 / 34 rész I Beadandó feladatok.
2 / 34
3 / 34 1. fejezet PC Shop - XML Example 1.1 Először is tekintsük meg az első XML dokumentumot, amely egy PC boltot ír le: pcshop.xml 1 2 <?xml version="1.0" encoding="utf-8"?> 3 <!DOCTYPE pcshop SYSTEM "pcshop.dtd"> 4 <pcshop> 5 <neve>laci PC boltja</neve> 6 <game> 7 <borito forras="cover.jpg" /> 8 <cim>dragon Age</cim> 9 <tipus>rpg</tipus> 10 <studio>bioware</studio> 11 <kiado>electronic Arts</kiado> 12 <ev>2009</ev> 13 <korhatar>18</korhatar> 14 <lan van="false" /> 15 <pont ertek="9.5" pnev="gamespot" /> 16 <pont ertek="8.7" pnev="ign" /> 17 <pont ertek="8.6" pnev="gamekapocs" /> 18 <raktaron>301</raktaron> 19 <ar akcios="true">9 990</ar> 20 </game> 21 <game> 22 <borito forras="cover.jpg" /> 23 <cim>star Wars: The Force Unleashed</cim> 24 <tipus>tps</tipus> 25 <studio>n-space</studio> 26 <kiado>lucasarts</kiado> 27 <ev>2009</ev> 28 <korhatar>16</korhatar> 29 <lan van="false" /> 30 <pont ertek="5.0" pnev="gamespot" /> 31 <pont ertek="7.5" pnev="ign" /> 32 <pont ertek="9.0" pnev="gamekapocs" /> 33 <raktaron>519</raktaron> 34 <ar akcios="false">10 990</ar> 35 </game> 36 <game> 37 <borito forras="cover.jpg" /> 38 <cim>cod Modern Warfare 2</cim> 39 <tipus>fps</tipus> 40 <studio>infinity Ward</studio> 41 <kiado>activision</kiado> 42 <ev>2009</ev> 43 <korhatar>18</korhatar> 44 <lan van="true" /> 45 <pont ertek="9.5" pnev="gamespot" /> 46 <pont ertek="8.7" pnev="ign" /> 47 <pont ertek="8.6" pnev="gamekapocs" /> 48 <raktaron>653</raktaron> 49 <ar akcios="true">9 990</ar>
4 / 34 Example 1.2 A jól formázottság ellenőrzése $ xmllint --noout pcshop.xml
5 / 34 2. fejezet PC Shop - DTD Example 2.1 A pcshop.xml-hez tartozó DTD file tartalma: pcshop.dtd 1 2 <?xml version="1.0" encoding="utf-8"?> 3 <!ELEMENT pcshop (neve,game*) > 4 <!ELEMENT neve (#PCDATA)> 5 <!ELEMENT game (borito,cim,tipus,studio,kiado,ev,korhatar,lan,pont*,raktaron,ar)> 6 <!ELEMENT borito EMPTY> 7 <!ATTLIST borito 8 forras CDATA #IMPLIED> 9 <!ELEMENT cim (#PCDATA)> 10 <!ELEMENT tipus (#PCDATA)> 11 <!ELEMENT studio (#PCDATA)> 12 <!ELEMENT kiado (#PCDATA)> 13 <!ELEMENT ev (#PCDATA)> 14 <!ELEMENT korhatar (#PCDATA)> 15 <!ELEMENT lan EMPTY> 16 <!ATTLIST lan 17 van (true false) "false"> 18 <!ELEMENT pont EMPTY> 19 <!ATTLIST pont 20 ertek CDATA #REQUIRED 21 pnev CDATA #REQUIRED> 22 <!ELEMENT raktaron (#PCDATA)> 23 <!ELEMENT ar (#PCDATA)> 24 <!ATTLIST ar 25 akcios (true false) "false"> 26 Example 2.2 Az érvényesség ellenőrzése $ xmllint --noout --valid pcshop.xml
6 / 34
7 / 34 3. fejezet PC Shop - Relax NG Example 3.1 Nézzük meg ismét a PC bolt leírását, ezúttal Relax NG használátval: pcshop_rng.xml 1 2 <?xml version="1.0" encoding="utf-8"?> 3 <pcshop> 4 <neve>laci PC boltja</neve> 5 <game> 6 <borito forras="cover.jpg" /> 7 <cim>dragon Age</cim> 8 <tipus>rpg</tipus> 9 <studio>bioware</studio> 10 <kiado>electronic Arts</kiado> 11 <ev>2009</ev> 12 <korhatar>18</korhatar> 13 <lan van="false" /> 14 <pont ertek="9.5" pnev="gamespot" /> 15 <pont ertek="8.7" pnev="ign" /> 16 <pont ertek="8.6" pnev="gamekapocs" /> 17 <raktaron>301</raktaron> 18 <ar akcios="true">9 990</ar> 19 </game> 20 <game> 21 <borito forras="cover.jpg" /> 22 <cim>star Wars: The Force Unleashed</cim> 23 <tipus>tps</tipus> 24 <studio>n-space</studio> 25 <kiado>lucasarts</kiado> 26 <ev>2009</ev> 27 <korhatar>16</korhatar> 28 <lan van="false" /> 29 <pont ertek="5.0" pnev="gamespot" /> 30 <pont ertek="7.5" pnev="ign" /> 31 <pont ertek="9.0" pnev="gamekapocs" /> 32 <raktaron>519</raktaron> 33 <ar akcios="false">10 990</ar> 34 </game> 35 <game> 36 <borito forras="cover.jpg" /> 37 <cim>cod Modern Warfare 2</cim> 38 <tipus>fps</tipus> 39 <studio>infinity Ward</studio> 40 <kiado>activision</kiado> 41 <ev>2009</ev> 42 <korhatar>18</korhatar> 43 <lan van="true" /> 44 <pont ertek="9.5" pnev="gamespot" /> 45 <pont ertek="8.7" pnev="ign" /> 46 <pont ertek="8.6" pnev="gamekapocs" /> 47 <raktaron>653</raktaron> 48 <ar akcios="true">9 990</ar> 49 </game>
8 / 34 3.1. RNG - Matrjoska baba leírással Hogyan is nézhet így ki a pcshop_rng.xml-hez tartozó RNG fájl?
9 / 34 Example 3.2 pcshop.rng 1 2 <?xml version="1.0" encoding="utf-8"?> 3 <element name="pcshop" 4 xmlns="http://relaxng.org/ns/structure/1.0"> 5 <element name="neve"> 6 <text/> 7 </element> 8 <zeroormore> 9 <element name="game"> 10 <element name="borito"> 11 <attribute name="forras"> 12 <text/> 13 </attribute> 14 </element> 15 <element name="cim"> 16 <text/> 17 </element> 18 <element name="tipus"> 19 <text/> 20 </element> 21 <element name="studio"> 22 <text/> 23 </element> 24 <element name="kiado"> 25 <text/> 26 </element> 27 <element name="ev"> 28 <text/> 29 </element> 30 <element name="korhatar"> 31 <text/> 32 </element> 33 <element name="lan"> 34 <attribute name="van"> 35 <choice> 36 <value>true</value> 37 <value>false</value> 38 </choice> 39 </attribute> 40 </element> 41 <zeroormore> 42 <element name="pont"> 43 <attribute name="ertek"> 44 <text/> 45 </attribute> 46 <attribute name="pnev"> 47 <text/> 48 </attribute> 49 </element> 50 </zeroormore> 51 <element name="raktaron"> 52 <text/> 53 </element> 54 <element name="ar"> 55 <attribute name="akcios"> 56 <choice> 57 <value>true</value> 58 <value>false</value> 59 </choice> 60 </attribute> 61 <text/> 62 </element> 63 </element> 64 </zeroormore> 65 </element> 66
10 / 34 3.2. Az érvényesség ellenőrzése Example 3.3 Az érvényesség ellenőrzése $ xmllint --noout --relaxng pcshop.rng pcshop_rng.xml 3.3. RNG - Matrjoska baba leírás nélkül Nézzük meg hogyan változik a pcshop.rng leírása matrjoska baba leírás nélkül:
11 / 34 Example 3.4 pcshop.rng (matrjoska baba leírás nélkül) 1 2 <?xml version="1.0" encoding="utf-8"?> 3 <grammar xmlns="http://relaxng.org/ns/structure/1.0" 4 datatypelibrary="http://www.w3.org/2001/xmlschema-datatypes"> 5 <start> 6 <element name="pcshop"> 7 <ref name="pcshop_content"/> 8 </element> 9 </start> 10 <define name="pcshop_content"> 11 <element name="neve"> 12 <text/> 13 </element> 14 <zeroormore> 15 <element name="game"> 16 <ref name="game_content"/> 17 </element> 18 </zeroormore> 19 </define> 20 <define name="game_content"> 21 <element name="borito"> 22 <attribute name="forras"> 23 <text/> 24 </attribute> 25 </element> 26 <element name="cim"> 27 <text/> 28 </element> 29 <element name="tipus"> 30 <text/> 31 </element> 32 <element name="studio"> 33 <text/> 34 </element> 35 <element name="kiado"> 36 <text/> 37 </element> 38 <element name="ev"> 39 <text/> 40 </element> 41 <element name="korhatar"> 42 <text/> 43 </element> 44 <element name="lan"> 45 <attribute name="van"> 46 <choice> 47 <value>true</value> 48 <value>false</value> 49 </choice> 50 </attribute> 51 </element> 52 <zeroormore> 53 <element name="pont"> 54 <attribute name="ertek"> 55 <text/> 56 </attribute> 57 <attribute name="pnev"> 58 <text/> 59 </attribute> 60 </element> 61 </zeroormore> 62 <element name="raktaron"> 63 <text/> 64 </element> 65 <element name="ar"> 66 <attribute name="akcios"> 67 <choice>
12 / 34 3.4. Az érvényesség ellenőrzése Example 3.5 Az érvényesség ellenőrzése $ xmllint --noout --relaxng pcshop.rng pcshop_rng.xml
13 / 34
14 / 34 4. fejezet PC Shop - W3C XML Schema Example 4.1 Nézzük meg, hogyan néz ki a PC bolt W3C XML sémával: pschop_schema.xml 1 2 <?xml version="1.0" encoding="utf-8"?> 3 <grammar xmlns="http://relaxng.org/ns/structure/1.0" 4 datatypelibrary="http://www.w3.org/2001/xmlschema-datatypes"> 5 <start> 6 <element name="pcshop"> 7 <ref name="pcshop_content"/> 8 </element> 9 </start> 10 <define name="pcshop_content"> 11 <element name="neve"> 12 <text/> 13 </element> 14 <zeroormore> 15 <element name="game"> 16 <ref name="game_content"/> 17 </element> 18 </zeroormore> 19 </define> 20 <define name="game_content"> 21 <element name="borito"> 22 <attribute name="forras"> 23 <text/> 24 </attribute> 25 </element> 26 <element name="cim"> 27 <text/> 28 </element> 29 <element name="tipus"> 30 <text/> 31 </element> 32 <element name="studio"> 33 <text/> 34 </element> 35 <element name="kiado"> 36 <text/> 37 </element> 38 <element name="ev"> 39 <text/> 40 </element> 41 <element name="korhatar"> 42 <text/> 43 </element> 44 <element name="lan"> 45 <attribute name="van"> 46 <choice> 47 <value>true</value> 48 <value>false</value> 49 </choice>
15 / 34 Example 4.2 Mit tartalmazhat a pcshop.xsd fájl? 1 2 <?xml version="1.0" encoding="utf-8"?> 3 <xs:schema xmlns:xs="http://www.w3.org/2001/xmlschema"> 4 <xs:element name="pcshop"> 5 <xs:complextype> 6 <xs:sequence> 7 <xs:element name="neve" type="xs:string"/> 8 <xs:element name="mobil" minoccurs="0" maxoccurs="unbounded"> 9 <xs:complextype> 10 <xs:sequence> 11 <xs:element name="borito"> 12 <xs:complextype> 13 <xs:attribute name="forras" type="xs:string"/> 14 </xs:complextype> 15 </xs:element> 16 <xs:element name="cim" type="xs:string"/> 17 <xs:element name="tipus" type="xs:string"/> 18 <xs:element name="studio" type="xs:string"/> 19 <xs:element name="kiado" type="xs:string"/> 20 <xs:element name="ev" type="xs:string"/> 21 <xs:element name="korhatar" type="xs:string"/> 22 <xs:element name="lan"> 23 <xs:complextype> 24 <xs:attribute name="van"> 25 <xs:simpletype> 26 <xs:restriction base="xs:string"> 27 <xs:enumeration value="true"/> 28 <xs:enumeration value="false"/> 29 </xs:restriction> 30 </xs:simpletype> 31 </xs:attribute> 32 </xs:complextype> 33 </xs:element> 34 <xs:element name="pont" minoccurs="0" maxoccurs="unbounded"> 35 <xs:complextype> 36 <xs:sequence> 37 <xs:attribute name="ertek" type="xs:string"/> 38 <xs:attribute name="pnev" type="xs:string"/> 39 </xs:sequence> 40 </xs:complextype> 41 </xs:element> 42 <xs:element name="raktaron" type="xs:string"/> 43 <xs:element name="ar" type="xs:string"> 44 <xs:complextype> 45 <xs:attribute name="akcios"> 46 <xs:simpletype> 47 <xs:restriction base="xs:string"> 48 <xs:enumeration value="true"/> 49 <xs:enumeration value="false"/> 50 </xs:restriction> 51 </xs:simpletype> 52 </xs:attribute> 53 </xs:complextype> 54 </xs:element> 55 </xs:sequence> 56 </xs:complextype> 57 </xs:element> 58 </xs:sequence> 59 </xs:complextype> 60 </xs:element> 61 </xs:schema> 62
16 / 34 Example 4.3 Az érvényesség ellenőrzése $ xmllint --noout --schema pcshop.xsd pcshop_schema.xml
17 / 34 5. fejezet PC Shop - XSLT XML fájljainkat megfelelő XLST fájlokkal HTML oldalakká alakíthatjuk.
18 / 34 Example 5.1 Vegyük át ismét, mit tartalmaz a pcshop.xml, ezúttal pcshop_xslt.xml néven. 1 2 <?xml version="1.0" encoding="utf-8"?> 3 <pcshop> 4 <neve>laci PC boltja</neve> 5 <game> 6 <borito forras="cover.jpg" /> 7 <cim>dragon Age</cim> 8 <tipus>rpg</tipus> 9 <studio>bioware</studio> 10 <kiado>electronic Arts</kiado> 11 <ev>2009</ev> 12 <korhatar>18</korhatar> 13 <lan van="false" /> 14 <pont ertek="9.5" pnev="gamespot" /> 15 <pont ertek="8.7" pnev="ign" /> 16 <pont ertek="8.6" pnev="gamekapocs" /> 17 <raktaron>301</raktaron> 18 <ar akcios="true">9 990</ar> 19 </game> 20 <game> 21 <borito forras="cover.jpg" /> 22 <cim>star Wars: The Force Unleashed</cim> 23 <tipus>tps</tipus> 24 <studio>n-space</studio> 25 <kiado>lucasarts</kiado> 26 <ev>2009</ev> 27 <korhatar>16</korhatar> 28 <lan van="false" /> 29 <pont ertek="5.0" pnev="gamespot" /> 30 <pont ertek="7.5" pnev="ign" /> 31 <pont ertek="9.0" pnev="gamekapocs" /> 32 <raktaron>519</raktaron> 33 <ar akcios="false">10 990</ar> 34 </game> 35 <game> 36 <borito forras="cover.jpg" /> 37 <cim>cod Modern Warfare 2</cim> 38 <tipus>fps</tipus> 39 <studio>infinity Ward</studio> 40 <kiado>activision</kiado> 41 <ev>2009</ev> 42 <korhatar>18</korhatar> 43 <lan van="true" /> 44 <pont ertek="9.5" pnev="gamespot" /> 45 <pont ertek="8.7" pnev="ign" /> 46 <pont ertek="8.6" pnev="gamekapocs" /> 47 <raktaron>653</raktaron> 48 <ar akcios="true">9 990</ar> 49 </game> 50 <game> 51 <borito forras="cover.jpg" /> 52 <cim>need for speed: Shift</cim> 53 <tipus>szimulator</tipus> 54 <studio>slightly Mad Studios</studio> 55 <kiado>electronic Arts</kiado> 56 <ev>2009</ev> 57 <korhatar>7</korhatar> 58 <lan van="false" /> 59 <pont ertek="7.0" pnev="gamespot" /> 60 <pont ertek="9.0" pnev="ign" /> 61 <pont ertek="8.6" pnev="gamekapocs" /> 62 <raktaron>426</raktaron> 63 <ar akcios="false">11 990</ar> 64 </game> 65 <game> 66 <borito forras="cover.jpg" /> 67 <cim>the Sims 3</cim>
19 / 34 Example 5.2 A pcshop_pelda.xslt tartalma: 1 2 <?xml version="1.0" encoding="utf-8"?> 3 <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> 4 <xsl:output method="html" version="4.0" encoding="utf-8" indent="yes" /> 5 <xsl:template match="pcshop"> 6 <html> 7 <head> 8 <title><xsl:value-of select="neve" /></title> 9 </head> 10 <body> 11 <h1> 12 <xsl:value-of select="neve" /> 13 </h1> 14 <p>a boltban kaphato termekek:</p> 15 <xsl:for-each select="game"> 16 <li><b><xsl:value-of select="cim" /></b>, ami egy <i><xsl:value-of select="tipus" /></i> jatek.</li> 17 </xsl:for-each> 18 </body> 19 </html> 20 </xsl:template> 21 </xsl:stylesheet> 22 Example 5.3 HTML lap előállítása $ xsltproc -o pcshop_pelda.html pcshop_pelda.xslt pcshop_xslt.xml Az eredményül kapott pcshop_pelda.html lap így fest: 1 2 <html> 3 <head> 4 <META http-equiv="content-type" content="text/html; charset=utf-8"> 5 <title>laci PC boltja</title> 6 </head> 7 <body> 8 <h1>laci PC boltja</h1> 9 <p>a boltban kaphato termekek:</p> 10 <li><b>dragon Age</b>, ami egy <i>rpg</i> jatek.</li> 11 <li><b>star Wars: The Force Unleashed</b>, ami egy <i>tps</i> jatek.</li> 12 <li><b>cod Modern Warfare 2</b>, ami egy <i>fps</i> jatek.</li> 13 <li><b>need for speed: Shift</b>, ami egy <i>szimulator</i> jatek.</li> 14 <li><b>the Sims 3</b>, ami egy <i>szimulator</i> jatek.</li> 15 <li><b>crysis</b>, ami egy <i>fps</i> jatek.</li> 16 </body> 17 </html> 18
20 / 34
21 / 34 Example 5.4 Most kicsit bonyolítsuk meg a dolgot, listázzuk ki a PC bolt termékeit táblázatos alakban: pcshop_table.xslt 1 2 <?xml version="1.0" encoding="utf-8"?> 3 <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> 4 <xsl:output method="html" version="4.0" encoding="utf-8" indent="yes" /> 5 <xsl:template match="pcshop"> 6 <html> 7 <head> 8 <title><xsl:value-of select="neve" /></title> 9 </head> 10 <body> 11 <table border="1" cellspacing="3" cellpadding="3" width="700"> 12 <caption><h3><xsl:value-of select="neve" /></h3></caption> 13 <tr bgcolor="#eeeeee"> 14 <td><b>jatek cime</b></td> 15 <td><b>tipus</b></td> 16 <td><b>ev</b></td> 17 <td><b>korhatar</b></td> 18 <td><b>lan</b></td> 19 <td><b>ar</b></td> 20 </tr> 21 <xsl:for-each select="game"> 22 <tr> 23 <td><xsl:value-of select="cim" /></td> 24 <td><xsl:value-of select="tipus" /></td> 25 <td><xsl:value-of select="ev" /></td> 26 <td> 27 <xsl:choose> 28 <xsl:when test = "korhatar = 18 "><font color="#ff0000"><xsl:value-of select="korhatar" /></font></xsl:when> 29 <xsl:when test = "korhatar = 16 "><font color="#ffa812"><xsl:value-of select="korhatar" /></font></xsl:when> 30 <xsl:otherwise><font color="#668014"><xsl:value-of select="korhatar" /></ font></xsl:otherwise> 31 </xsl:choose> 32 </td> 33 <td> 34 <xsl:element name="img"> 35 <xsl:attribute name="src">images/<xsl:value-of select="lan/@van" />.png</ xsl:attribute> 36 <xsl:attribute name="width">20</xsl:attribute> 37 <xsl:attribute name="height">20</xsl:attribute> 38 </xsl:element> 39 </td> 40 <td> 41 <xsl:choose> 42 <xsl:when test = "ar/@akcios = true "><font color="#ff0000"><b><xsl:value- of select="ar" /></b> Ft</font></xsl:when> 43 <xsl:otherwise><b><xsl:value-of select="ar" /></b> Ft</xsl:otherwise> 44 </xsl:choose> 45 </td> 46 </tr> 47 </xsl:for-each> 48 </table> 49 </body> 50 </html> 51 </xsl:template> 52 </xsl:stylesheet> 53 Az eredményül kapott pcshop_table.html lap így fest: 1 2 <html> 3 <head> 4 <META http-equiv="content-type" content="text/html; charset=utf-8"> 5 <title>laci PC boltja</title> 6 </head> 7 <body>
22 / 34
23 / 34 Example 5.5 És íme egy komoly terméklista a PC boltról: pcshop_complete.xslt 1 2 <?xml version="1.0" encoding="utf-8"?> 3 <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> 4 <xsl:output method="html" version="4.0" encoding="utf-8" indent="yes" /> 5 <xsl:template match="pcshop"> 6 <html> 7 <head> 8 <title><xsl:value-of select="neve" /></title> 9 </head> 10 <body bgcolor="#eaeaea"> 11 <h1><xsl:value-of select="neve" /></h1> 12 <xsl:for-each select="game"> 13 <table border="0" cellpadding="0" cellspacing="0" width="500" style="margin-bottom: 10px"> 14 <tr height="15"> 15 <td width="15" style="background: url( images/box-tl.gif ) right no-repeat"></ td><td background="images/box-tm.gif"></td><td width="15" style="background: url( images/box-tr.gif ) no-repeat"></td> 16 </tr> 17 <tr> 18 <td style="background: url( images/box-lm.gif ) right repeat-y"></td><td bgcolor="#ffffff"> 19 <div style="font-size: 16px; font-weight: bold"><xsl:value-of select="cim" /> ( <xsl:value-of select="ev" />)</div> 20 <br /> 21 <table border="0" cellpadding="0" cellspacing="0" height="120" width="100%"> 22 <tr> 23 <td width="85" valign="top" align="center"> 24 <xsl:element name="img"> 25 <xsl:attribute name="src">images/<xsl:value-of select="borito/@forras " /></xsl:attribute> 26 <xsl:attribute name="width">71</xsl:attribute> 27 <xsl:attribute name="height">100</xsl:attribute> 28 <xsl:attribute name="align">left</xsl:attribute> 29 <xsl:attribute name="border">1</xsl:attribute> 30 </xsl:element> 31 </td> 32 <td width="180" valign="top"> 33 <b>ertekelesek</b><br /> 34 <xsl:for-each select="pont"> 35 <li>[<xsl:value-of select="@ertek" />] <xsl:value-of select="@pnev" />< /li> 36 </xsl:for-each> 37 <b>korhatar: </b><xsl:value-of select="korhatar" /> ev felett<br /> 38 <br/> 39 </td> 40 <td valign="top"> 41 <b>studio: </b><xsl:value-of select="studio" /><br /> 42 <b>kiado: </b><xsl:value-of select="kiado" /><br /> 43 <b>tipus: </b><xsl:value-of select="tipus" /><br /> 44 <b>lan: </b> 45 <xsl:choose> 46 <xsl:when test = "lan/@van = true ">Van</xsl:when> 47 <xsl:otherwise>nincs</xsl:otherwise> 48 </xsl:choose> 49 <br /><b>raktaron: </b><xsl:value-of select="raktaron" /> darab 50 </td> 51 </tr> 52 </table> 53 <div align="right"> 54 <b>a jatek ara: 55 <xsl:choose> 56 <xsl:when test = "ar/@akcios = true "><font color="#ff0000">most csak < xsl:value-of select="ar" /> Ft</font></xsl:when> 57 <xsl:otherwise><xsl:value-of select="ar" /> Ft</xsl:otherwise> 58 </xsl:choose> 59 </b></div>
24 / 34
25 / 34
26 / 34 6. fejezet PC Shop - XSLT with CSS Example 6.1 XML fájljainkat megjeleníthetjük stílusfájl alkalmazásával is: pcshop_css.xslt 1 2 <?xml version="1.0" encoding="utf-8"?> 3 <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> 4 <xsl:output method="html" version="4.0" encoding="utf-8" indent="yes" /> 5 <xsl:template match="pcshop"> 6 <html> 7 <head> 8 <title><xsl:value-of select="neve" /></title> 9 <link href="style.css" rel="stylesheet" type="text/css" /> 10 </head> 11 <body bgcolor="#eaeaea"> 12 <h1><xsl:value-of select="neve" /></h1> 13 <xsl:for-each select="game"> 14 <table class="main_table" cellspacing="0"> 15 <tr> 16 <td class="mt_tl"></td><td class="mt_tm"></td><td class="mt_tr"></td> 17 </tr> 18 <tr> 19 <td class="mt_lm"></td><td bgcolor="#ffffff"> 20 <div class="cim"><xsl:value-of select="cim" /> (<xsl:value-of select="ev" />)</ div> 21 <br /> 22 <table class="second_table" cellpadding="0" cellspacing="0"> 23 <tr> 24 <td class="cover"> 25 <xsl:element name="img"> 26 <xsl:attribute name="src">images/<xsl:value-of select="borito/@forras " /></xsl:attribute> 27 <xsl:attribute name="width">71</xsl:attribute> 28 <xsl:attribute name="height">100</xsl:attribute> 29 <xsl:attribute name="align">left</xsl:attribute> 30 <xsl:attribute name="border">1</xsl:attribute> 31 </xsl:element> 32 </td> 33 <td class="info_left"> 34 <b>ertekelesek</b><br /> 35 <xsl:for-each select="pont"> 36 <li>[<xsl:value-of select="@ertek" />] <xsl:value-of select="@pnev" />< /li> 37 </xsl:for-each> 38 <b>korhatar: </b><xsl:value-of select="korhatar" /> ev felett<br /> 39 <br/> 40 </td> 41 <td class="info_right"> 42 <b>studio: </b><xsl:value-of select="studio" /><br /> 43 <b>kiado: </b><xsl:value-of select="kiado" /><br /> 44 <b>tipus: </b><xsl:value-of select="tipus" /><br /> 45 <b>lan: </b> 46 <xsl:choose>
27 / 34
28 / 34 Example 6.2 Végül következzék egy utolsó megoldás, ismét stílusfájl használatával: pcshop_final.xslt 1 2 <?xml version="1.0" encoding="utf-8"?> 3 <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> 4 <xsl:output method="html" version="4.0" encoding="utf-8" indent="yes" /> 5 <xsl:template match="pcshop"> 6 <html> 7 <head> 8 <title><xsl:value-of select="neve" /></title> 9 <link href="style_final.css" rel="stylesheet" type="text/css" /> 10 </head> 11 <body bgcolor="#eaeaea"> 12 <table> 13 <tr> 14 <td colspan="2" class="title"> 15 <xsl:value-of select="neve" /> 16 </td> 17 </tr> 18 <tr> 19 <td class="term_info"> 20 Akcios termekek 21 <xsl:for-each select="game"> 22 <xsl:choose> 23 <xsl:when test = "ar/@akcios = true "> 24 <table class="main_table" cellspacing="0"> 25 <tr> 26 <td class="mt_tl"></td><td class="mt_tm"></td><td class="mt_tr"></td> 27 </tr> 28 <tr> 29 <td class="mt_lm"></td><td bgcolor="#ffffff"> 30 <div class="cim"><xsl:value-of select="cim" /> (<xsl:value-of select="ev" />)</ div> 31 <br /> 32 <table class="second_table" cellpadding="0" cellspacing="0"> 33 <tr> 34 <td class="cover"> 35 <xsl:element name="img"> 36 <xsl:attribute name="src">images/<xsl:value-of select="borito/@forras " /></xsl:attribute> 37 <xsl:attribute name="width">71</xsl:attribute> 38 <xsl:attribute name="height">100</xsl:attribute> 39 <xsl:attribute name="align">left</xsl:attribute> 40 <xsl:attribute name="border">1</xsl:attribute> 41 </xsl:element> 42 </td> 43 <td class="info"> 44 <b>studio: </b><xsl:value-of select="studio" /><br /> 45 <b>kiado: </b><xsl:value-of select="kiado" /><br /> 46 <b>korhatar: </b><xsl:value-of select="korhatar" /> ev felett<br /> 47 <b>tipus: </b><xsl:value-of select="tipus" /><br /> 48 <b>lan: </b> 49 <xsl:choose> 50 <xsl:when test = "lan/@van = true ">Van</xsl:when> 51 <xsl:otherwise>nincs</xsl:otherwise> 52 </xsl:choose> 53 </td> 54 </tr> 55 </table> 56 <div class="ar"><b>a jatek ara: <font color="#ff0000"><xsl:value-of select="ar" /> Ft</font></b></div> 57 </td><td class="mt_rm"></td> 58 </tr> 59 <tr> 60 <td class="mt_bl"></td><td class="mt_bm"></td><td class="mt_br"></td> 61 </tr> 62 </table> 63 </xsl:when> 64 </xsl:choose>
29 / 34
30 / 34 7. fejezet PC Shop - XHTML-MP 7.1. XHTML-MP kimenet Nézzük meg, hogyan tekinthetjük meg XML fájljainkat mobilon.
31 / 34 Example 7.1 A pcshop_mobil.xslt a PC bolt mobilokhoz készített verziója. 1 2 <?xml version="1.0" encoding="utf-8"?> 3 <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> 4 <xsl:output method="xml" version="1.0" encoding="utf-8" 5 doctype-system="http://www.wapforum.org/dtd/xhtml-mobile10.dtd" 6 doctype-public="-//wapforum//dtd XHTML Mobile 1.0//EN" indent="yes" /> 7 <xsl:template match="pcshop"> 8 <html xmlns="http://www.w3.org/1999/xhtml"> 9 <head> 10 <title>pc Shop - transzformalt XHTML lap</title> 11 </head> 12 <body> 13 <h1><xsl:value-of select="neve" /></h1> 14 <p> 15 <xsl:text>jelenleg </xsl:text> 16 <xsl:value-of select="count(game)"/> 17 <xsl:text> PC jatek kaphato a boltban.</xsl:text> 18 </p> 19 </body> 20 </html> 21 </xsl:template> 22 </xsl:stylesheet> 23 Az eredményül kapott pschop.xhtml tartalma: 1 2 <?xml version="1.0" encoding="utf-8"?> 3 <!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN" "http://www.wapforum.org/dtd/ xhtml-mobile10.dtd"> 4 <html xmlns="http://www.w3.org/1999/xhtml"> 5 <head> 6 <title>pc Shop - transzformalt XHTML lap</title> 7 </head> 8 <body> 9 <h1>laci PC boltja</h1> 10 <p>jelenleg 6 PC jatek kaphato a boltban.</p> 11 </body> 12 </html> 13 Az eredményül kapott pcshop.xhtml lap így néz ki Firefox böngészőben:
32 / 34 8. fejezet Felhasznált DocBook parancsok: attribution article author authorgroup bibliodiv biblioentry bibliography blockquote chapter citetitle city copyright country edition email example filename firstname imagedata imageobject info link listitem orgname otheraddr
33 / 34 para part persionname postcode pubdate publisher screen sect1 surname task textobject title year
34 / 34 9. fejezet Irodalomjegyzék 9.1. XML [XML KNYV] Bíró, Szabolcs, Szövegfeldolgozás XML alapokon, Böngészhető változat, 2007. 9.2. Docbook [DOCBOOK 5.0] Walsh, Norman, DocBook 5.0: The Definitive Guide, Böngészhető változat Összefoglaló lap, 2007. [DOCBOOK XSL] Stayton, Bob, DocBook XSL: The Complete Guide, Böngészhető változat, 2007. 9.3. Programozás [PP] Bátfai, Norbert, Programozó Páternoszter, PDF változat, 2007.