Übungsblatt 4

Transcrição

Übungsblatt 4
XML-Technologien, Sommersemester 2012
4. Übung zu Dienstag, dem 22. Mai 2012
Freiwillige Übung zur Besprechung im Tutorium
Tutorium: Dienstag 12:00 - 14:00, Niels Hoppe ([email protected])
1. XSLT entwerfen und verwenden
(keine Punkte)
Entwerfen Sie ein XSLT-Stylesheet, das aus der Musterlösung der 1. Übung durch
eine Transformation folgendes HTML-Dokument erzeugt. Das Stylesheet soll auch
für jedes andere XML-Dokument, das dem Schema aus der Musterlösung der 2.
Übung genügt, eine sinngemäße Transformation durchführen.
< !DOCTYPE HTML PUBLIC ”−//W3C//DTD HTML 4.01 Transitional//EN”>
< html>
< head>
< title> Order of 1999−12−01< /title>
< /head>
< body>
< h1> Order of 1999−12−01< /h1>
< h2> Shipping address< /h2>
< !−− format like shown below, if this is a ipo:US−Address −→
< address class=”export”>
Helen Zoe< br />
Eden Street< br />
Cambridge< br />
12647
< /address>
< h2> Billing address< /h2>
< !−− format like shown above, if this is a ipo:EU−Address −→
< address>
Robert Smith< br />
8 Oak Avenue< br />
Old Town, AK 95819
< /address>
< h2> Order details< /h2>
< table>
< thead> < tr>
< th> partNum< /th>
< th> productName< /th>
< th> quantity< /th>
< th> price< /th>
< th> shipDate< /th>
< th> comment< /th>
< /tr> < /thead>
< tbody>
< !−− for each item in items −→
< tr>
< td> {partNum}< /td>
< td> {productName}< /td>
< td> {quantity}< /td>
< td> {price}< /td>
< td> {shipDate}< /td>
< td> {comment}< /td>
< /tr>
< !−− end for each −→
< /tbody>
< tfoot> < !−− advanced stuff, optional −→
< tr>
< td> Total:< /td>
< td> 6 items< /td>
< td> 19 pieces< /td>
< td> 7056,30 &curren;< /td>
< td> < /td>
< td> < /td>
< /tr>
< /tfoot>
< /table>
< /body>
< /html>
Beachten Sie, dass insbesondere leere td-Elemente nicht zu <td /> werden dürfen.
Die Fußzeile der Tabelle stellt eine (ungetestete) Herausforderung zum Spielen mit
XPath-Funktionen 1 dar.
Zum Testen Ihrer Transformation gibt es mehrere Möglichkeiten:
• XSLT Tryit Editor unter http://w3schools.com/xsl/tryxslt.asp?
xmlfile=cdcatalog&xsltfile=cdcatalog
• XML in einem kompatiblen Browser 2 laden und wie folgt mit dem Stylesheet
verknüpfen:
< ?xml version=”1.0” ?>
< ?xml−stylesheet type=”text/xsl” href=”xml ueb04 lsg.xsl”?>
< !−− ... −→
1 Siehe
2 Siehe
http://www.w3.org/TR/xpath-functions/
http://w3schools.com/xsl/xsl_browsers.asp
• Eignes Programm z.B. in Java oder PHP (siehe Beispiel) schreiben.
/∗∗
∗ @author Niels Hoppe
∗ @name transform
∗ @param $xml document (filename) or string to be transformed
∗ @param $xsl stylesheet (filename) to be used for transformation
∗/
function transform($xml, $xsl) {
// XSLT Stylesheet laden
$xslDom =new DOMDocument();
$xslDom→load($xsl);
// XML laden
$xmlDom =new DOMDocument();
if (! $xmlDom→load($xml)) {
$xmlDom→loadHTML($xml);
}
// loadHTML to handle possibly defective markup
$xsl = new XsltProcessor();
// create XSLT processor
//$xsl→registerPHPFunctions();
// optional , figure out for yourself
$xsl→importStylesheet($xslDom);
// load stylesheet
return $xsl→transformToXML($xmlDom); //transformation returns XML
}