Die Aufgaben 1 mit 4 beziehen sich auf das nachfolgende XML-Eingabedokument:
<?xml version="1.0" encoding="ISO-8859-1"?>
<Hobbysten>
<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="Helmut"
geburtsjahr="1942" geschlecht="M">
<PersAusweisNr>0987654321</PersAusweisNr>
<Anschrift>
<PLZ>48123</PLZ>
<Ort>Muenster</Ort>
</Anschrift>
<Hobbies>Foto Tennis</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>Muenster</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>
</Hobbysten>
Geben Sie einen XPath-Ausdruck an, der folgende Knotenmengen lokalisiert:
Welche Knotenmengen liefern die folgenden XPath-Ausdrücke:
/Hobbysten/Person[3]/@nachname
//PLZ[starts-with(.,"48")]
//Person[@nachname = preceding::Person/@nachname or @nachname = following::Person/@nachname]
//Person[@geburtsjahr < sum(//*/@geburtsjahr) div 5]
//Person[(position() mod 2)=0]/@geschlecht
Schreiben Sie eine XSLT-Transformation, die aus der Eingabedatei folgende Ausgabe erzeugt:
<?xml version="1.0" encoding="ISO-8859-1"?>
<Personen>
<Augsburger>
<Person>
<Name>
<Vorname>Helmut</Vorname>
<Nachname>Schmidt</Nachname>
</Name>
<Geburtsdatum jahr="1972"/>
<PersAusweisNr>1234567890</PersAusweisNr>
<Anschrift>86161-Augsburg</Anschrift>
</Person>
<Person>
<Name>
<Vorname>Ilona</Vorname>
<Nachname>Schmidt</Nachname>
</Name>
<Geburtsdatum jahr="1945"/>
<PersAusweisNr>2345676543</PersAusweisNr>
<Anschrift>86123-Augsburg</Anschrift>
</Person>
<Person>
<Name>
<Vorname>Philipp</Vorname>
<Nachname>Huber</Nachname>
</Name>
<Geburtsdatum jahr="1949"/>
<PersAusweisNr>777777777</PersAusweisNr>
<Anschrift>86454-Augsburg</Anschrift>
</Person>
</Augsburger>
<Muensteraner>
<Person>
<Name>
<Vorname>Helmut</Vorname>
<Nachname>Schmidt</Nachname>
</Name>
<Geburtsdatum jahr="1942"/>
<PersAusweisNr>0987654321</PersAusweisNr>
<Anschrift>48123-Muenster</Anschrift>
</Person>
<Person>
<Name>
<Vorname>Joachim</Vorname>
<Nachname>Korn</Nachname>
</Name>
<Geburtsdatum jahr="1972"/>
<PersAusweisNr>1111111111</PersAusweisNr>
<Anschrift>48234-Muenster</Anschrift>
</Person>
</Muensteraner>
</Personen>
Schreiben Sie eine XSLT-Transformation die mittels des Euklid'schen Algorithmus den größten gemeinsamen Teiler zweiter positiver Ganzzahlen errechnet und als XML-Dokument ausgibt.
Die notwendige Eingabe habe dabei folgendes Format:
<ggT>
<input>
<no1>18</no1>
<no2>6</no2>
</input>
</ggT>
Das Verfahren:
Der Euklidische Algorithmus ermittelt den größten gemeinsamen Teiler zweier positiver natürlicher Zahlen auf folgende Weise:
Basisprinzip ist die wiederholte Division mit Rest, die folgendermaßen angewandt wird.
Zunächst wird die erste übergebene Zahl mit Rest durch die zweite dividiert. Als Resultat erhält man neben dem positiv ganzzahligen Quotienten einen Rest, der stets größer gleich Null und kleiner als der Quotient selbst ist.
Im nächsten Berechnungsschritt wird der in der vorhergehenden Operation ermittelte Quotient durch den ebenfalls dort ermittelten Rest (wieder mit Rest) dividiert. Dies wird solange fortgeführt, bis als Rest 0 entsteht.
Der im vorausgegangenen Rechenschritt ermittelte Rest ist der größte gemeinsame Teiler.
Es gilt somit immer:
Für a
, b
Eingangswerte mit a=>b
, q
ist der ganzzahlige Quotient a/b
und r
der bei der Division entstehende Rest:a = b*q + r
Im nächsten Rechenschritt nimmt b
den Platz von a
bzw. r
den von b
ein.
Zahlenbeispiel:
Gesucht: größter gemeinsamer Teiler von 123 und 77:
123 : 77 =1 Rest 46
77 : 46 = 1 Rest 31
46 : 31 = 1 Rest 15
31 : 15 = 2 Rest 1
15 :1 = 15 Rest 0.
=> ggT(123,77) = 1.
Ausgabe: Mittwoch, 2001-12-12
Abgabe: Freitag, 2001-12-21
Service provided by Mario Jeckle
Generated: 2004-06-07T12:31:14+01:00
Feedback SiteMap
This page's original location: http://www.jeckle.de/vorlesung/xml/p4.html
RDF description for this page