Tom2 (der authentifizierte): Extrakt aus DOMDocument

Beitrag lesen

Hi Leute

Ich arbeite erst seit kurzem mit XML und XSL, was inzwischen auch recht gut funktioniert. Jetzt soll ich jedoch eine XML-Datei mit dem DOM weiterverarbeiten und weiss nicht genau wie man das macht. Kann mir jemand helfen?

Ich arbeite mit mit ASP und VBScript auf einem IIS und für DOM verwende ich die Microsoft XML Core Services (MSXML2.DOMDocument). Die Struktur meines Dokuments sieht so aus:

<Root>
  <Hauptgruppe Typ="1">
    <Untergruppe id="1">
      <Eintrag id="1" />
      <Eintrag id="2" />
      <Eintrag id="3" />
    </Untergruppe>
    <Untergruppe id="2">
      <Eintrag id="1" />
      <Eintrag id="2" />
    </Untergruppe>
  </Hauptgruppe>
  <Hauptgruppe Typ="2">
    <Untergruppe id="1">
      <Eintrag id="1" />
      <Eintrag id="2" />
    </Untergruppe>
  </Hauptgruppe>
</Root>

Ich möchte nun für jeden Eintrag eine eigene Datei erstellen. Wenn die Datei nur ein Eintrag-Element hat, dann klappt das mit meinem XSL-Dokument schon sehr gut. Ich möchte also einen Eintrag und all dessen Elternelemente, nicht aber die ganzen Brüder und Schwestern selektieren. Gib es hierfür ein einfaches Standard-Verfahren oder muss ich mir die Elemente selbst zusammenkratzen?

Mit oXML.getElementsByTagName("Eintrag") kann ich alle Einträge selektieren und mit getAttribute komm ich auch an die IDs ran. In der DOM Reference von Microsoft hab ich was von context gelesen, jedoch krig ich das nicht zum Laufen (manchmal "unknown property", manchmal keine Fehlermeldung, die Ausgabe wird einfach abgebrochen). Zudem habe ich das Problem, dass ich mit getElementsByTagName alle Einträge unabhängig von Haupt- und Untergruppe selektiere. Normalerweise ist in einem solchen XML-Dokument nur eine Hauptgruppe drin, ich möchte das ganze jedoch möglichst flexibel halten. Wer stand schon vor einem ähnlichen Problem und kann mir einen Hinweis geben?

Und noch was allgemeineres: Wie finde ich heraus, ob ich ein DOMDocument, ein DOMNode oder eine DOMList zurückerhalte und welche Eigenschaften und Methoden diese wirklich unterstützen? Aus der Microsoft-Referenz ist das nicht genau ersichtlich.

Gruss & Dank

Tom2