Frank Z.: XML und XSLT Dateien auf verschiedenen Servern

Liebe Gemeinde,

ich habe noch nicht viel Erfahrung in Webseiten-Programmierung, habe aber weder über Google noch über das Archiv Hilfe gefunden.

Ich habe mehrere XML-Dateien auf Webserver A, die formatiert im Browser dargestellt werden sollen. Die Datei, die die Formatierung übernehmen soll, muss aber auf einem anderen Webserver (B) untergebracht werden.

Als erste Möglichkeit habe ich probiert die XML-Dateien mit CSS zu formatieren. Das klappt prinzipiell gut, aber ich kann mit CSS nicht die Browserleiste beeinflussen, richtig? Wenn ja, heißt das, dass CSS zu eingeschränkte Möglichkeiten für meinen Bedarf hat.

Als zweite Möglichkeit habe ich ein XSLT-Script angewendet. Das funktioniert beim lokalen Test fantastisch und es funktioniert auch, wenn ich XSLT-Script und XML-Datei testweise auf den selben Server lege, aber nicht wenn die XML-Datei und das XSLT-Script auf den verschiedenen Servern liegen. Ich habe mit Safari, Opera und Firefox getestet.
Die XSLT-Transformation muss client-seitig realisiert werden.

Ich würde also gern eine Möglichkeit erfahren wie ich die XML- bzw. XSLT-Dateien so gestalten kann, dass die Transformation auch dann funktioniert, wenn die Dateien auf verschiedenen Webservern liegen. Falls das nicht oder nur sehr umständlich zu realisieren wäre, würde ich mich über einen alternativen Vorschlag freuen, wie man ich die XML-Dateien formatiert anzeigen lassen kann.

Noch die verkürzten Minimalbeispiele der Dateien. (URL geändert.)

Die XML-Files:

  
<?xml version="1.0" encoding="UTF-8"?>  
<?xml-stylesheet type="text/xsl" href="http://pfad-zum-stylesheet/style.xsl"?>  
[... Daten ...]  

Das XSLT-Script:

  
<?xml version="1.0" encoding="UTF-8"?>  
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">  
	<xsl:output method="html"/>  
	[... Transformationen ...]  
</xsl:stylesheet>  

  1. Liebe Gemeinde,

    ich habe nun noch eine weitere Möglichkeit gefunden: Die XML-Datei lässt sich mit CSS formatieren und die Browser-Titelleiste lässt sich per JavaScript bestimmen.

    In den XML-Files muss vor dem letzten schließenden Tag folgender Verweis:

      
    <xhtml:script xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://pfad-zum-script/title.js" type="application/javascript"/>  
    
    

    Das JavaScript sieht dann so aus:

      
    var mytitle = document.[...DOM-Pfad“ zum gewünschten XML-Element ...].nodeValue;  
    document.title = mytitle;  
    
    

    Da das ganze aber den Nachteil hat, dass in die XML-Daten der JavaScript-Verweis gesetzt werden muss und die Daten somit mit einem Tag "verunreinigt" werden, der nichts mit den Daten zu tun hat, habe ich mich nun entschieden, kein JavaScript zu verwenden und die Browser-Titelleiste nicht festzulegen. Das schaut zwar in manchem Browser nicht schön aus, ist aber bisher für mich die beste Alternative.

    Falls noch jemand Ideen oder Anmerkungen hat, freue ich mich über jeden Kommentar.

    Herzlich,

    Frank

    1. Hi,

      Also dein Projekt scheint sehr ambintioniert, gleichwohl sind in deinen Grundueberlegungen vielerlei Annahmen, die du unbedingt ueberdenken solltest. Hier mal mal eine kurze Liste:

      Verschiedene Browser haben verschiedene XSL Parser, z.B. Firefox benutzt einen anderen als Chrome. IE hat ebenso einen anderen, das kann unter Umstaenden unterschiedliche Ergebnisse im Browser zur Folge haben, insbesondere wenn XSL erweiterungen verwendet werden.

      Die XSL auf einen anderen Server auszulagern ist nicht so fein, suche mal in einer Suchmaschine nach "some origin policy". Einige Browser fueheren die XSL erst gar nicht aus, wenn die nicht von der gleichen Domain kommt.

      Was ist XML mit javascript? Meinst du XHTML? Ansonsten wird JavaScript nicht so ohne weiteres in beliebigen XML Dateien ausgefuehrt, Sicherheitsrisiko.

      Ein Tipp von mir: Mach das Parsen (XSL Transformation) serverseitig (mit einem Applikation Server). Das hat den Vorteil, dass du genau weisst, was beim Client ankommt. Eventuel kannst du auch noch Traffic sparen, falls das Transformationsergebnis kleiner ist als die XML Quelle.

      Gruss, Holge r

      1. Lieber Holge r,

        vielen Dank für deine Antwort!

        Ist das Projekt wirklich so ungewöhnlich? Ich möchte auf einen Server reine XML Daten hochladen. Diese sollen natürlich einigermaßen schön dargestellt werden. Die dazu benötigten Dateien kann ich leider nicht auf dem selben Server unterbringen, sondern auf einem zweiten.

        » Verschiedene Browser haben verschiedene XSL Parser, [...] das kann unter Umstaenden unterschiedliche Ergebnisse im Browser zur Folge haben, insbesondere wenn XSL erweiterungen verwendet werden.
        Danke für diesen Hinweis! Falls ich nochmal auf XSL zurückkomme, werde ich verschiedene Browser testen. Die XSL-Transformation, die ich benötige, ist eigentlich relativ simpel: es werden nur die Tags <xsl:template>, <xsl:value-of> und <xsl:for-each> benötigt.

        » Was ist XML mit javascript? Meinst du XHTML?
        Ja, das wäre dann ein einzelner XHTML Tag. Die Idee habe ich eigentlich verworfen mittlerweile.

        » Ein Tipp von mir: Mach das Parsen (XSL Transformation) serverseitig [...]
        Es hat leider Priorität, dass der Nutzer XML-Daten enthält, um sie ggf. automatisiert durchsuchen zu lassen.

        Herzliche Grüße,

        Frank