Lösungen - XML Tutorium mit Oxygen - home.hs

Werbung
Lösungen - XML Tutorium mit Oxygen
PC Laptop
DTD
<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT pc (desktop,laptop)+>
<!ELEMENT desktop (hersteller+)>
<!ELEMENT hersteller (modell+)>
<!ATTLIST hersteller name CDATA #REQUIRED>
<!ELEMENT modell (cpu,speicher,festplatte?,preis)>
<!ATTLIST modell id CDATA #REQUIRED>
<!ELEMENT cpu (#PCDATA)>
<!ATTLIST cpu takt CDATA #IMPLIED>
<!ELEMENT speicher (#PCDATA)>
<!ELEMENT festplatte (#PCDATA)>
<!ATTLIST festplatte groesse CDATA #IMPLIED>
<!ELEMENT preis (#PCDATA)>
<!ELEMENT laptop (hersteller+)>
Xpath
Teilweise sind mehrere richtige Lösungen angegeben!
1. //modell[@id=4711]/../@name
2. //modell/cpu[text()="AMD"]/../@id
//modell[cpu="AMD"]/@id
3. //laptop//modell[speicher="DDR3"]/preis
4. //desktop/hersteller/modell/preis[text()>800]/../@id
//desktop//preis[.>800]/../@id
//desktop[.//preis/text()>800]//modell/@id
5. sum(//laptop/hersteller[@name="Lenovo"]/modell/preis/text())
sum(//hersteller[@name="Lenovo"]//preis)
sum(//laptop//hersteller[@name="Lenovo"]//preis/text())
6. count(//festplatte[@groesse>250])
Studiengänge:
DTD
<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT studiengaenge (studiengang+)>
<!ELEMENT studiengang (beschreibung, personal?)>
<!ATTLIST studiengang name CDATA #REQUIRED>
<!ELEMENT beschreibung (#PCDATA|link|em)*>
<!ELEMENT link (#PCDATA)>
<!ATTLIST link target CDATA #REQUIRED>
<!ELEMENT em (#PCDATA)>
<!ELEMENT personal (lehrkraefte,verwaltung)>
<!ELEMENT lehrkraefte (person+)>
<!ELEMENT person ((name|(vorname,nachname)),aufgabe*,fachgebiet*)>
<!ATTLIST person geschlecht CDATA #REQUIRED
typ CDATA #IMPLIED>
<!ELEMENT name (#PCDATA)>
<!ELEMENT vorname (#PCDATA)>
<!ELEMENT nachname (#PCDATA)>
<!ELEMENT aufgabe (#PCDATA)>
<!ELEMENT fachgebiet (#PCDATA)>
<!ELEMENT verwaltung (person+)>
XPATH
1. //person/aufgabe[text()="Dekan"]/../*
//aufgabe[.="Dekan"]/../*
2.
count(//studiengang[@name="Wirtschaftsinformatik"]/personal/lehrkraefte/per
son[@typ="Lehrbeauftragter"])
count(//studiengang[@name="Wirtschaftsinformatik"]//person[@typ="Lehrbeau
ftragter"])
3. //person[@geschlecht="W"]/aufgabe[text()="Dekan"]/../../../../@name
//studiengang[personal/lehrkraefte/person[@geschlecht="W"]/aufgabe[.="Dekan
"]]/@name
4. //person/fachgebiet[text()="Softwareengineering"]/../../../../@name
//person[fachgebiet="Softwareengineering"]/../../../@name
Herunterladen