Sie sind auf Seite 1von 9

HdM-Stuttgart, DT XML-Technologien Dr.

Marko Hedler

Probeklausur:
XML-Technologien

606282035.doc Ausdruck: 27.06.2012 09:20:00 vorm.


HdM-Stuttgart, DT XML-Technologien Dr. Marko Hedler

1. Themenblock: XML Grundlagen (XML+DTD)


<!ELEMENT thesaurus (begriff)+ >
<!ELEMENT begriff (name, link*) >
<!ATTLIST begriff id ID #REQUIRED >
<!ELEMENT name (#PCDATA) >
<!ELEMENT link EMPTY >
<!ATTLIST link
ref IDREF #REQUIRED
typ (Synonym|Oberbegriff|Unterbegriff) #REQUIRED
>

606282035.doc Ausdruck: 27.06.2012 09:20:00 vorm.


HdM-Stuttgart, DT XML-Technologien Dr. Marko Hedler

2. Themenblock: XPath
1. Allgemeine Fragen

2. Aufgabe:
Gegeben ist folgendes XML-Dokument:

<?xml version="1.0" encoding="ISO-8859-1"?>


<Hobby>
<Person
nachname="Schmidt" vorname="Helmut"
geburtsjahr="1972" geschlecht="M">
<PersAusweisNr>1234567890</PersAusweisNr>
<Anschrift>
<PLZ>86161</PLZ>
<Ort>Augsburg</Ort>
</Anschrift>
<Hobbies>Lesen Foto Reisen</Hobbies>
</Person>
<Person
nachname="Schmidt" vorname="Ilona"
geschlecht="W" geburtsjahr="1945">
<PersAusweisNr>2345676543</PersAusweisNr>
<Anschrift>
<PLZ>86123</PLZ>
<Ort>Augsburg</Ort>
</Anschrift>
<Hobbies>Konzert</Hobbies>
</Person>
<Person
nachname="Korn" vorname="Joachim"
geschlecht="M" geburtsjahr="1972">
<PersAusweisNr>1111111111</PersAusweisNr>
<Anschrift>
<PLZ>48234</PLZ>
<Ort>Münster</Ort>
</Anschrift>
<Hobbies>Reisen</Hobbies>
</Person>
<Person
nachname="Huber" vorname="Philipp"
geschlecht="M" geburtsjahr="1949">
<PersAusweisNr>777777777</PersAusweisNr>
<Anschrift>
<PLZ>86454</PLZ>
<Ort>Augsburg</Ort>
</Anschrift>
<Hobbies>Golf Ski Konzert</Hobbies>
</Person>
</Hobby>

606282035.doc Ausdruck: 27.06.2012 09:20:00 vorm.


HdM-Stuttgart, DT XML-Technologien Dr. Marko Hedler

Geben Sie einen XPath-Ausdruck an, der folgende Knotenmengen lokalisiert: (10 Punkte)
1. Alle Postleitzahlen
2. Alle Personen die 1972 geboren sind.
3. Die Vornamen aller Personen die Schmidt mit Nachnamen heißen.
4. Die Personen-Elemente deren einziges Hobby Konzert ist.
5. Den Wohnort der Personen die vor 1970 geboren wurden.

1. //PLZ
2. //Person[@geburtsjahr='1972']
3. //Person/@vorname[../@nachname='Schmidt']
4. //Person[Hobbies='Konzert']
5. //Ort[../../@geburtsjahr<1970]

606282035.doc Ausdruck: 27.06.2012 09:20:00 vorm.


HdM-Stuttgart, DT XML-Technologien Dr. Marko Hedler

3. Themenblock: XSLT und HTML


1. Allgemeine Fragen

2. Programmieraufgabe ( 15 Punkte)
Gegeben ist folgendes XML Dokument:

<Company>
<Employee email="TBrowne@Infoteria.com">
<FirstName>Tim</FirstName>
<LastName>Browne</LastName>
<Position>CEO</Position>
<Category>Officer</Category>
<Age>25</Age>
</Employee>
<Employee email="HeadGeek@XMLPitstop.com">
<FirstName>David</FirstName>
<MiddleName>Michael</MiddleName>
<LastName>Silverlight</LastName>
<Position>Chief XML Evangelist</Position>
<Category>Evangelist</Category>
<Age>33</Age>
</Employee>
<Employee email="MDamphouse@Infoteria.com">
<FirstName>Mike</FirstName>
<LastName>Damphouse</LastName>
<Position>Chief Marketing Officer</Position>
<Category>Officer</Category>
<Age>33</Age>
</Employee>
</Company>

Transformieren Sie mit Hilfe eines XSLT-Skripts dieses XML-Dokument nach HTML. Beachten Sie dabei
folgende Richtlinien:
- Geben Sie die Informationen zu den Angestellten in einer Tabelle aus
- Die Tabellenspalten lauten: Name, Position und Email
- In der Spalte Name sollen sowohl die Informationen aus FirstName als auch aus LastName
stehen.
- Am Ende der Tabelle soll ein Absatz stehen der die Gesamtzahl der Angestellten zählt und
ausgibt. (Die nötige XPATH Funktion dafür ist count(..) )
- Verwenden Sie für die Umsetzung das Pull-Programmiermethode.

606282035.doc Ausdruck: 27.06.2012 09:20:00 vorm.


HdM-Stuttgart, DT XML-Technologien Dr. Marko Hedler

Beispiel der Umsetzung:

Verwenden Sie für Ihre Lösung das vorhandene Codefragment als gegeben:

<?xml version="1.0" encoding="UTF-8"?>


<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" version="4.0" encoding="UTF-8"/>

<xsl:template match="/">
<html>
<head>
<title>Firmeninformation</title>
</head>
<body>

<!-- Fügen Sie hier Ihren Code ein -->

</body>
</html>
</xsl:template>
</xsl:stylesheet>

Lösung:

<p style="font-family:Arial">Employee Listing</p>


<table border="1">
<tr>
<th>Name</th>
<th>Position</th>
<th>Email</th>
</tr>
<xsl:for-each select="Company/Employee">
<tr>
<td>
<xsl:value-of select="FirstName"/>
<xsl:text> </xsl:text>
<xsl:value-of select="LastName"/>
</td>
<td>
<xsl:value-of select="Position"/>

606282035.doc Ausdruck: 27.06.2012 09:20:00 vorm.


HdM-Stuttgart, DT XML-Technologien Dr. Marko Hedler

</td>
<td>
<xsl:value-of select="@email"/>
</td>
</tr>
</xsl:for-each>
</table>
<p style="font-family: Arial">
Gesamtzahl aller Angestellten:<xsl:text> </xsl:text>
<xsl:value-of select="count(Company/Employee)"/>
</p>

606282035.doc Ausdruck: 27.06.2012 09:20:00 vorm.


HdM-Stuttgart, DT XML-Technologien Dr. Marko Hedler

4. Themenblock: XSLT und XSL-FO


1. Allgemeine Fragen zum Thema

2. Programmieraufgabe (15 Punkte)

Gegeben ist folgende XML Datei

<?xml version="1.0" encoding="UTF-8"?>


<eintrag>
<titel>Kyrill (Orkan)</titel>
<untertitel>aus Wikipedia, der freien Enzyklopädie</untertitel>
<datum>15. Januar 2007 </datum>
<text>
<abs>
Kyrill vom griechischen <reg ref="1882">„der Herrliche“</reg> ist der Name
eines Orkans, der in Böen Windgeschwindigkeiten von über 200 km/h erreichte
und am 18. und 19. Januar 2007 das öffentliche Leben in weiten Teilen
Europas beeinträchtigte. </abs>
<abs>Er forderte bisher mindestens <kursiv>34
Todesopfer</kursiv> und führte zu erheblichen Sachschäden sowie zur
vorzeitigen Schließung von Schulen. </abs>
<abs>Außerdem kam es zu erheblichen Beeinträchtigungen im
Verkehrssektor, da Flüge gestrichen, Autobahnen gesperrt und der
Bahnverkehr in großen Teilen Deutschlands eingestellt werden mussten, so
dass zehntausende Passagiere betroffen waren.</abs>
</text>
</eintrag>

Mit Hilfe von XSLT soll nun ein Korrekturauszug in Form eines PDF’s erzeugt werden. Dabei soll das
Dokument vollautomatisch nach XSL-FO transformiert werden.
Folgende Ausgabe soll dabei erzeugt werden:

Hinweise zur typographischen Umsetzung:


Bitte verwenden Sie für den Titel eine Schriftgröße von 24pt. Alle anderen Absätze sind in 12pt auszuzeichnen.
Setzten Sie die Auszeichnung kursiv entsprechend um. Die Referenz eines Registereintrags soll im
Korrekturauszug nach dem Registereintrag in fett erscheinen.

606282035.doc Ausdruck: 27.06.2012 09:20:00 vorm.


HdM-Stuttgart, DT XML-Technologien Dr. Marko Hedler

Ergänzen Sie nachfolgendes XSL-Skelett um die nötigen Templates:


<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:fo="http://www.w3.org/1999/XSL/Format">

<xsl:template match="/">
<fo:root>
<fo:layout-master-set>
<fo:simple-page-master master-name="A4">
<fo:region-body margin="40mm 40mm 40mm 40mm"/>
</fo:simple-page-master>
</fo:layout-master-set>
<fo:page-sequence master-reference="A4">
<fo:flow flow-name="xsl-region-body">
<fo:block>
<xsl:apply-templates/>
</fo:block>
</fo:flow>
</fo:page-sequence>
</fo:root>
</xsl:template>

<!-- Fügen Sie hier Ihren Code ein -->

</xsl:stylesheet>
Lösung:

<xsl:template match="titel">
<fo:block font-size="24pt">
<xsl:apply-templates/>
</fo:block>
</xsl:template>

<xsl:template match="untertitel"></xsl:template>
<xsl:template match="datum"></xsl:template>
<xsl:template match="abs" >
<fo:block font-size="12pt">
<xsl:apply-templates/>
</fo:block>
</xsl:template>

<xsl:template match="kursiv">
<fo:inline font-style="italic">
<xsl:apply-templates/>
</fo:inline>
</xsl:template>

<xsl:template match="reg">
<xsl:apply-templates/>
<fo:inline font-weight="bold">[
<xsl:value-of select="@ref"/>]
</fo:inline>
</xsl:template>

606282035.doc Ausdruck: 27.06.2012 09:20:00 vorm.

Das könnte Ihnen auch gefallen