XML - Grundlagen, Prinzipien und Anwendungen

Musterlösung Aufgabe 4

XPaths für komplexe Probleme


Lösungen

Folgende xpaths liefern die Antworten auf die gestellten Fragen:

  1. count(/topicmap/topics/topic)
  2. count(/topicmap/relations/relation)
  3. count(/topicmap/topics/topic/desc)
  4. count(/topicmap/relations/relation/roleref/topicref)
  5. count(/topicmap/relations/relation/roleref/topicref[@TID='xpath'])
  6. count(/topicmap/relations/relation/roleref/topicref[@TID='xpath']/../../roleref/topicref[not(@TID='xpath')])
  7. count(/topicmap/topics/topic[starts-with(name,'X')])
  8. count(/topicmap/locators/locator/uri[substring(@href,string-length(@href)-4)='.html'])
  9. count(/topicmap/topics/topic/desc/topicref[@TID='xml'])
  10. count(/topicmap/topics/topic/desc/topicref[@TID='xml']/../..)
  11. count(/topicmap/topics/topic/desc/topicref[@TID='xml'][following-sibling::topicref[@TID='xml']]/../..)
  12. count(/topicmap/topics/topic/desc/topicref) div count(/topicmap/topics/topic/desc)
  13. count(/topicmap/relations/relation[@RelID='standardized']/roleref[@RolID='standardizationbody']/topicref[@TID='w3c'])

Bemerkungen

Bei der Lösung wurde ausschliesslich der Children-Mechanismus verwendet. Unter Verwendung des Descendant-Mechanismus ergeben sich wesentlich kürzere xpaths. Ausserdem gibt es natürlich eine Vielzahl verschiedener korrekter Lösungen. Diese unterscheiden sich jedoch meist nur in kleineren Details, die grundlegende Idee aller korrekten xpaths ist die gleiche.


please send comments to xml-vl@dret.net
last modification on Tuesday, 02-May-2006 17:28:59 CEST
valid CSS!valid XHTML 1.0!