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