zurück zur Startseite
  


Zurück XHTMLforum > (X)HTML und CSS > (X)HTML
Seite neu laden xhtml mit xsl?

Antwort
 
LinkBack Themen-Optionen Ansicht
  #1 (permalink)  
Alt 28.11.2009, 20:35
Ober-Telefondesinfizier
neuer user
Thread-Ersteller
 
Registriert seit: 24.11.2009
Ort: Berlin
Beiträge: 39
.rhavin befindet sich auf einem aufstrebenden Ast
Standard xhtml mit xsl?

Hallo Leute, ich habe folgendes Problem:

Ich möchte in einem Dokument beim Laden ein javascript ausführen, also brauche ich den Onload-Event-Handler im Body - soweit erstmal alles easy.

Nun ist ja XHTML eine XML-Untermenge, auch wenn ich nicht den Eindruck habe, daß die für mich wichtigen Browser FF und IE das genauso sehen, denn ich benöte außerdem, daß auf den Content noch ein XSL-Stylesheet angewendet wird, und genau da geht das Problem los - die übliche Link-Anweisung wird zwar gewertet, wenn es sich um eine *.xml-Datei handelt, aber falls es sich um eine *.html-Datei handelt, wir sie schlicht und einfach ignoriert!

Mache ich allerdings ein XML-Dokument daraus, wird das XSL-Stylesheet gewertet, aber nicht der Onload-Handler, was a bissel dämlitsch is...

Was mach ich'n da?
Mit Zitat antworten
Sponsored Links
  #2 (permalink)  
Alt 29.11.2009, 01:06
Ober-Telefondesinfizier
neuer user
Thread-Ersteller
 
Registriert seit: 24.11.2009
Ort: Berlin
Beiträge: 39
.rhavin befindet sich auf einem aufstrebenden Ast
Standard

$#*!%&!

Also ich glaub', ich bin 3 Jahre zu früh ;-/

Anstatt den Content einfach mal so zu interpretieren wie's da steht, versuchen die blöden Browser mitzudenken...

Habe ich eine *.html-Datei, denken die sich offensichtlich bei allen <? .... ?> - Tags: "Oh, 'son neumodischer XML-Schnickschnack .. is bestimmt nur informativ, laß' ich mal besser weg."

Habe ich eine *.xml-Datei, sehen die beiden Spacken die für mich wichtige DOCTYPE für XHTML1.1 und denken sich "Oh, das is ja garkein HTML-Dokument, na, da sonder ich mal sicherheitshalber 'ne Fehlermeldung ab."

Mit Zitat antworten
Sponsored Links
  #3 (permalink)  
Alt 29.11.2009, 03:55
Ober-Telefondesinfizier
neuer user
Thread-Ersteller
 
Registriert seit: 24.11.2009
Ort: Berlin
Beiträge: 39
.rhavin befindet sich auf einem aufstrebenden Ast
Blinzeln

*loooooooooooooooool*

Ick gloobs nich....

Also, ich habs tatsächlich geschafft! Da es zuerst *nicht* ging, und mir der IE wenigstens immer genau anzeigt, wo der Fehler liegt, hatte ich zuerst mal mit den IE weiterprobiert, so frei nach dem Motto: Wenn die Zicke das hinbekommt, dann schafft es der FF ja wohl auch.
Nun hatte ich dabei die Rechnung ohne das w3c gemacht: denen hat das falsche Verhalten des IE (ständig die DTD nachzuladen, statt bei PUBLIC erstmal die lokale Kopie zunutzen) nämlich (endlich!) mal gereicht.

Da der Traffic auf den w3-Servern exorbitant anstieg, seit immer mehr Designer !DOCTYPEs benutzen und daher die IEs bei JEDER SEITE ne DTD vom w3c runterzuladen versuchten (man glaubt's ja nich, wenn man es nicht selber gesehn hat), hat das w3c die Notbremse gezogen und schlicht folgende policy gesetzt:

Kommt ein IE und will 'ne DTD runterladen, dann schmeiß ihn mit ner 503 raus.

Geil, oder? Dadurch brach dann immer mein Dokument im *.xml-Modus ab.

Dafür war der Fehler im FF ganz wo anders zu suchen, der hat nämlich einen mach-dem-DAU-das-Internet-easy-by-default-Modus, in dem LOKALE XLS's nicht ausgeführt werden. Einzustellen unter about:config -> security.fileuri.strict_origin_policy, wenn man es denn mal weiß, denn irgendeine entsprechende Warnung spuckt das Teil natürlich nicht aus;-/

Ein weiter nur-FF Bug: Kommt in einem CSS ein unbekannter Selector, also z.B. ...

HTML-Code:
dubidu {display:block;}
... verschluckt der sich irgendwie; daher sollten zuesrt alle Standard-xhtml-Tags frisiert werden und danach erst die eigenen.

Nun also die Lösung:
  • die DTD muß per Browserweiche raus, also im IE ohne DTD.
  • das body-tag muß per xsl:template nochmal neu definiert werden, da kann man dann auch den onload-handler benutzen.
  • das css-stylesheet muß gleich zweimal eingebunden werden (dafür muß das Head-Tag auch neu definiert werden), und war am besten so:

Die als *.xml gespeichte xhtml-Datei:
HTML-Code:
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<?xml-stylesheet type="text/xsl" href="stylesheet.xsl" ?>
<!-- note: title as attribute of head-->
<html><head title="test-xml">
	<!--  ... -->
</head><body>
	<!--  ... -->
</body></html>
das XSL-Stylesheet (Auszug):
HTML-Code:
<!-- stylesheet name und pfad als variable. Note inner quotes! -->
<xsl:variable name="stylesheet" select="'stylesheet.css'" />

<xsl:template match="/">
	<xsl:processing-instruction name="xml-stylesheet">
		<xsl:attribute name="href"><xsl:value-of select="$stylesheet" /></xsl:attribute>
		<xsl:attribute name="type">text/css</xsl:attribute>
	</xsl:processing-instruction>
	<html>
		<xsl:apply-templates />
	</html>
</xsl:template>

<xsl:template match="head">
	<head>
		<!-- insert title from heads title attribute -->
		<title><xsl:value-of select="@title"/></title>
		<link rel="stylesheet" type="text/css">
			<xsl:attribute name="href"><xsl:value-of select="$stylesheet" /></xsl:attribute>
		</link>
		<xsl:apply-templates />
	</head>
</xsl:template>

<xsl:template match="body">
	<body onload="alert('onload handler executed!');">
		<xsl:apply-templates />
	</body>
</xsl:template>

Geändert von .rhavin (29.11.2009 um 12:34 Uhr)
Mit Zitat antworten
Antwort

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
XHTML 1.0 vs. XHTML 1.1 redplug (X)HTML 9 04.12.2009 13:37
XHTML WWW und XHTML 1.1 MP / WAP2.0 prosac257 (X)HTML 4 23.10.2006 01:18
XHTML 1.1 "muss" als xml+xhtml verschickt / Diskus Boris (X)HTML 9 21.04.2005 17:08
noch mal xhtml Broken CSS 13 03.08.2003 22:56


Alle Zeitangaben in WEZ +2. Es ist jetzt 06:49 Uhr.