Ü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 ¤< /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 }