Thomas J.S.: XSL ggf nicht anwenden

Beitrag lesen

Hallo,

xsl:otherwise
  <!-- alles andere was passieren soll -->
  </xsl:otherwise>

Dieses im otherwise ist mein Problem. Ich möchte im otherwise sagen "Ignoriere das Style Sheet". Die XML Datei soll also so angezeigt werden als ob es das Style Sheet nicht gibt. Also zum Beispiel im Internet Explorer dieser schöne Baum.

Das geht nur wenn du Scriptest und schon vor der Anwendung der Stylesheets das VERSION-element ausliest. Also erst aus eine HTML-Datei.
Ich habe dir ein Beispiel geschrieben wie das mit dem IE geht (nein ich weiss jetzt auch nicht, wie man das jetzt gleich für beliebige Dateien macht, aber schließlich sollst du auch etwas tüfteln! ;-) )

Grüße
Thomas

<html>
<head>
  <title>sample</title>
  <script language = "javascript">
 function init()
 {
  var xmlDoc = new ActiveXObject("Msxml2.DOMDocument");
  xmlDoc.async=false;

//hier gibst du den pfad zu deiner xml datei an
  xmlDoc.load("temp.xml");
  var objNodeList;
  xmlDoc.setProperty("SelectionLanguage", "XPath");

// hiermit selektierst du dein version-element
  // gegebenfalls muss du den pfad anpassen:
  // z.B.: electSingleNode("/xmldokumentelement/version")
  // du kannst in klammer xpath ausdrücke verwenden
  objNodeList = xmlDoc.documentElement.selectSingleNode("version");

//hier vergleichts du was das version element einen text enthält
  // du kannst hier die übliche vergleichsmethoden aus javascript nutzen
  if (Number(objNodeList.text) < "2.0")
   {
    //ist die bedingung erfüllt (oder nicht erfüllt, ja nach dem was du
    // für einen vergleich machst) ladest du die xml datei
    // pfad muss du richtig angeben
    location.replace("temp.xml");
   }

// andernfalls führst du die transformation aus
  else
   {
    var xslDoc= new ActiveXObject("Msxml2.DOMDocument");
    xslDoc.async = false;
    //hier gibst du den pfad zu deiner xsl datei an
    xslDoc.load("temp.xsl");
    resultDoc.innerHTML = xmlDoc.transformNode(xslDoc);
   }
 }
  </script>
</head>

<body onload="init()" id="resultDoc">
</body>
</html>