XML/XSLT Anzeige mit QueryString Parameter

Olli_K

Grünschnabel
Hallo,

ich habe ein neuen kleines Projektchen, bei dem ich nicht so richtig weiter komme.

Ich habe eine XML Datei im Format von etwa...
Code:
<daten>
  <obj>
     <para1>value 1</wert>
     <para2>value 2</wert>
  </obj>
  <obj>
     <para1>value 3</wert>
     <para2>value 4</wert>
  </obj>
</daten>

Ich dem Projekt ist leider nur Clientscripting erlaubt (jeder Intranet-Besucher hat den IE 6). Ich möchte jetzt die XML Datei mit einem Parameter aufrufen wie etwa daten.xml?para1=value3.

Mit XSLT kann ich ja die Daten ist das richtige Ausgabeformat bringen. Ich möchte aber, dass nur dieser eine Datensatz angezeigt wird.

Hat jemand einen Tipp für mich?

Vielen Dank und schöne Grüße
Olli
 
Hi.

Ich nehme an du verwendest Javascript auf der Client-Seite? Dann wäre das wohl eher etwas für das Javascript Forum gewesen.

Du kannst das XML Dokument (deins ist übrigens nicht wohlgeformt - auf ein para1 Start-Tag folgt ein wert End-Tag) in ein XML DOM Objekt laden und dann die uninteressanten Werte mit selectNodes per XPath herausfiltern:
Javascript:
<script type="text/javascript">
<!--
// Load XML 
var xml = new ActiveXObject("Microsoft.XMLDOM")
xml.async = false
if (!xml.load("data.xml")) alert("fehler beim laden des xml.");
else {
  var nodes = xml.selectNodes("//obj[para1!='value 3']"), n;
  while (n = nodes.nextNode) {
    n.parentNode.removeChild(n);
  }
  alert(xml.xml);
}
// --></script>

Du könntest natürlich auch eine XSL Transformation machen mit der transformNode Methode des XML DOM Objekts.

Gruß

PS: Wie an dem Microsoft Schlüsselwort zu erkennen ist, funktioniert das ganze nur im Internet Explorer.
 
wow, das ist super. genau das habe ich gesucht.
Allerbesten Dank und schöne Grüße aus München
Olli
 
Allerdings hat sich da auch noch ein kleiner Fehler eingeschlichen (obwohl es merkwürdigerweise funktioniert - was wohl daran liegt das es ein ActiveXObjekt ist). Aber die Zeile
Javascript:
while (n = nodes.nextNode) {
sollte eigentlich so lauten:
Javascript:
while (n = nodes.nextNode()) {
da nextNode eine Methode ist.

Viele Grüße aus Magdeburg
 

Neue Beiträge

Zurück