2008-10-21 12 views
9

Ich versuche, dynamisch generierte XML-Seiten von einem Webserver zu dienen, und eine benutzerdefinierte, statische, Xslt von demselben Webserver, die die Entlastung Verarbeitung in den Client-Webbrowser.Firefox 3 nicht anwenden mein XSLT-Stylesheet, aber andere Browser tun

Bis vor kurzem hatte ich das funktioniert gut in Firefox 2, 3, IE5, 6 und Chrome. In letzter Zeit hat sich jedoch etwas geändert, und Firefox 3 zeigt jetzt nur die Textelemente in der Quelle an.

Die Seite Quelle beginnt wie folgt aus:

<?xml version="1.0" encoding="UTF-8"?> 
<!-- Firefox 2.0 and Internet Explorer 7 use simplistic feed sniffing to override desired presentation behavior for this feed, and thus we are obliged to insert this comment, a bit of a waste of bandwidth, unfortunately. This should ensure that the following stylesheet processing instruction is honored by these new browser versions. For some more background you might want to visit the following bug report: https://bugzilla.mozilla.org/show_bug.cgi?id=338621 --> 
<?xml-stylesheet type="text/xsl" href="/WebObjects/SantaPreview.woa/Contents/WebServerResources/Root.xsl"?> 
<wrapper xmlns="http://www.bbc.co.uk/ContentInterface/Content" xmlns:cont="http://www.bbc.co.uk/ContentInterface/Content" sceneId="T2a_INDEX" serviceName="DSat_T2"> 
    .... 

Firebug zeigt, dass die Root.xsl-Datei geladen wird, und die Antwort-Header für sie die Linie

Content-Type text/xml 

I enthalten habe habe es auch mit application/xml als Inhaltstyp versucht, aber es macht keinen Unterschied :-(

Die Web Developer Extension sh Auch die korrekte generierte Quelle wird angezeigt, und wenn Sie diese speichern und die Seite in Firefox laden, wird sie korrekt angezeigt.

Die Firefox-Version das Problem anzuzeigen ist 3.0.3

Alle Ideen, was ich tun könnte falsch sein?

Antwort

5

Anzeige nur die Textelemente dienen, ist das Verhalten, das Sie aus einem leeren XSL-Stylesheet erhalten würden.

Für mich bedeutet das, dass etwas faul mit Ihren xpath-Ausdrücken vor sich geht und dass die xsl: template/@ match-Attribute nicht mit dem Quelldokument übereinstimmen.

Sie liefern nicht genügend Informationen, um weiter zu diagnostizieren, also ist diese Blindschätzung alles, was ich anbieten kann.

EDIT: Es stellte sich heraus, das Problem war, dass IE und Chrome stillschweigend ein Knotenset als Argument zu string-length akzeptieren, während FF3 nicht. Beachten Sie, dass die Spezifikation ein optionales Zeichenfolgenargument erfordert und kein Verhalten mit einem Knotensatzargument angibt.

+0

Ich werde einen Blick darauf werfen und überprüfen. Sowohl IE als auch Chrome scheinen die Umwandlung in Ordnung zu machen, und die Web Developer-Erweiterung in Firefox zeigt HTML an, das für die generierte Quelle gültig ist. Wie genau ist das generierte Quellfenster? Zeigt es die genaue Quelle zum Rendern an? –

+0

Verwenden Sie auch keinen Unterstrich im Namen der XSLT-Datei. Ich hatte das, und als ich zu einem Dateinamen ohne Unterstreichung wechselte, funktionierte es in Firefox gut. –

0

versucht es als application/xml statt text/xml

+0

Das hilft nicht. –

+0

Manchmal tut es für andere Browser, also keine schlechte Schätzung. –

2

Beantworten meiner eigenen Frage im Lichte der nachfolgenden Untersuchung. ddaa führe mich in die richtige Richtung.

Firefox scheint mit xslt Konvertierungen ziemlich pingelig zu sein. Überprüfe deine xslt, um sicherzustellen, dass keine Fehler auftreten, die IE und Chrome maskieren.

XML Spy ist ein gutes, wenn auch nicht billiges Produkt, das eine Reihe von Fehlern im xslt hervorhebt. Es scheint mindestens so viele Probleme aufzugreifen wie der Firefox-Renderer.

Es scheint, dass Sie sich leider nicht auf die Web Developer-Erweiterung verlassen können, um das Problem aufzugreifen.

+0

Also, war das wirklich eine Art Namespace-Matching-Problem? – ddaa

+1

Nein. Ich hatte ein XPath-Problem. string-length() in IE und Chrome macht es nichts aus, wenn das Argument eine Knotenliste ist, aber XML Spy beklagt, dass es "Zu viele Elemente" gibt und dass der Ausdruck Firefox wieder zum Leben erweckt. –

+0

Gibt es eine Möglichkeit, eine Fehlermeldung von Firefox zu erhalten? Ich habe das selbe Problem und XML Spy klagen nicht. 8-/ –

2

Ich schreibe hier nur für die Nachwelt - ich hatte das gleiche Symptom, auch Firefox 3.Jedoch in mein Fall, das Problem ein anderes war:

Firefox scheint wirklich, wirklich Abneigung, wenn eine XSL-Datei einen Unter _ im Namen hat. Meine XSLT-Datei wurde etwa my_super_nice_xslt_which_loads_in_opera_and_ie.xsl genannt.

Also, Leute, lasst uns keine Unterstriche verwenden. Verwenden Sie stattdessen einen Bindestrich (Minus): my-super-nice-xslt-which-loads-in-opera-and-ie.xsl.

Dann wird es auch in Firefox geladen. Ich denke, ich werde von nun an einfach tote einfache Namen mit Buchstaben und Zahlen verwenden. Sie kennen das Sprichwort "einmal gebissen, zweimal schüchtern". (In meinem Fall wurde ich zweimal gebissen, aber vergessen, das erste Mal, so dass ich macht wie viermal diesmal scheuen.)

3

Wenn Sie NoScript verwenden, die auch XSL-Stylesheets, bis Sie Allow <site> deaktiviert.

+0

Das war es für mich. Ich hätte nie gedacht, dass NoScript das Laden von XSL-Stylesheets deaktiviert, geschweige denn die Verarbeitung, aber bis ich die Site auf die weiße Liste gesetzt habe, hat FireFox nicht einmal die HTTP-Anfrage für das XSL-Stylesheet ausgeführt. Nachdem ich die Website auf die weiße Liste gesetzt hatte, wurde die Seite automatisch neu geladen und das Stylesheet angefordert und verwendet. – Eddie

+0

Ich fühle mich jetzt so dumm, aber das war genau mein Problem. Ich weiß, dass "Danke" -Kommentare auf SO generell verpönt sind, aber * danke. * –