Relativen Pfad für xsl:import oder xsl:include
Ich versuche, mit VBScript zu tun eine XSLT-Transformation auf ein XML-Objekt ein.
Die XSL-Datei bin ich der übersetzung beinhaltet die <xsl:import href="script.xsl"/>
Richtlinie. Wenn ich die absolute URL ( http://localhost/mysite/script.xsl
) importiert Stylesheet in Ordnung; allerdings, wenn ich den relativen Pfad (script.xsl
) es Berichte "Ressource nicht gefunden." Ich muss in der Lage sein, um port unter diesem eine Reihe von Maschinen, so muss ich in der Lage sein, um die relative URI. Irgendwelche Vorschläge?
Hinweise:
- VBScript-Datei ist in
http://localhost/myscript.asp
- erste XSL-Datei ist in
http://localhost/mysite/styles.xsl
- zweite XSL-Datei ist in
http://localhost/mysite/script.xsl
- Sie den relativen Pfad
mysite/script.xsl
funktioniert auch nicht
Nachtrag:
Dank, an alle, für Eure Antworten. Je mehr ich Grabe in den code, der macht das, der fremde ist. myscript.asp
ist eine eher ungewöhnliche Zusammenstellung von code. Was passiert, ist styles.xsl
enthalten ist in der HTML-Ausgabe von myscript.asp
als XML-chunk (<xml src=...>
) und dann, dass der chunk ist geladen, wie Sie ein stylesheet, wenn Sie VBScript verwenden, die auf client-Seite. Dieses stylesheet wird dann verwendet, um die Transformation eines XML-chunk abgerufen werden über XMLHTTP. Also das problem ist der Kontext der styles.xsl
ist die HTML-Datei auf der client-Seite und hat keinen Bezug zu denen script.xsl
ist.
Dieses Problem wird in: stackoverflow.com/questions/27785901/...
InformationsquelleAutor alumb | 2008-09-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
Aktuellen Verzeichnis für eine xsl:import, xsl:include, und die document () - Funktion ist das Verzeichnis, das die Transformation, die Sie verwendet. Also die xsl:import-Direktive, Sie haben gesagt, Sie verwenden sollten, um zu arbeiten.
Das einzige was ich mir vorstellen kann, könnte sich dies auf: wenn Sie einen relativen Pfad angeben, wird die Datei gelesen wird direkt aus dem Dateisystem, während, wenn Sie eine absolute URI, abgerufen von der web-server. Ist es möglich, dass es eine Sicherheitseinstellung, die verhindern Skripte aus der Lektüre der Dateien in diesem Verzeichnis?
InformationsquelleAutor Robert Rossney
@Jon ich denke, Sie sind ganz in der Nähe... aber sollte es nicht sein...
...mit einem führenden Schrägstrich?
InformationsquelleAutor dacracot
Ich würde gegen dieses Problem durch ausführen Sysinternals Process Monitor. Mit diesem tool läuft, können Sie tatsächlich sehen, was Dateien, die Ihr script versucht zu öffnen, auch wenn Sie nicht existieren.
InformationsquelleAutor Dominic Cronin
Ist es möglich, dass die "aktuellen Verzeichnis" für Zwecke der relative Pfad könnte die Lage der ASP-Seite, nicht Ihre XSL-Datei? In anderen Worten, wenn Sie nicht bereits haben, können Sie versuchen:
InformationsquelleAutor Jon Schneider
Ich laufen Häufig in dieses problem, weil es ein benutzerdefiniertes URI-resolver eingesetzt, indem eine Bibliothek, die ich nicht sehen kann (oder nicht kennen, weil ich nicht Lesen entsprechende Dokumentation.) Ich kann mich nicht erinnern, ob in diesem spec oder nicht, aber in der sächsischen/java-Welt, die benutzerdefinierte URI-resolver bekommt den ersten Riss an versucht zu lösen URI ' s für include/import-Anweisungen sowie die document () - Funktion. Wenn es nicht auflösen kann die URI einer Standard-URI-resolver gibt es einen Versuch, die in der Regel nie findet, wenn dann URI wird der absolute.
So, es ist wahrscheinlich etwas in die ASP-engine, die über eine Kontext-driven-URI-resolver auf der Grundlage der app-Kontext.
InformationsquelleAutor
Erster Versuch:
Ich habe versucht, inklusive Skript.xsl als ein anderes xml-Stück, und ändern Sie die import-Anweisung in jeder Weise könnte ich mir vorstellen, aber ohne Erfolg.
Endgültige Lösung:
Da die absolute url für includeing Skript.xsl arbeitete von Anfang an, meine Letzte Lösung war, um zu konvertieren Stil.xsl-style.asp mit den richtigen doctype. In dieser Datei war ich dann in der Lage, zum abrufen der server-name, Protokoll und Pfad und echo Sie in den rechten Platz in der import-Anweisung mit asp. Dann, wenn diese Datei habe enthalten in mysscript.asp hatte es die richtige absolute url für die server. Das ist ein bisschen ein hack, aber der einzige Weg, fand ich zur Lösung dieser ziemlich verworrenen situation.
InformationsquelleAutor alumb
Benötigen Sie eine variable, die definiert, die approot, oder webroot beim laden von JS -, Bild-oder CSS-Dateien.
oder wenn Sie den Wert in der XML,
InformationsquelleAutor scunliffe