Wie kann man verhindern, dass ein
<script type="text/javascript" src="xyz.js"></script>
abgekᅵrzt wird zu einem
<script type="text/javascript" src="xyz.js" />
???
Browser mᅵgen offensichtlich die obere Syntax lieber...
Gruᅵ
Egon Schmid
> Wie kann man verhindern, dass ein
>
> <script type="text/javascript" src="xyz.js"></script>
>
> abgekürzt wird zu einem
>
> <script type="text/javascript" src="xyz.js" />
>
> ???
>
> Browser mögen offensichtlich die obere Syntax lieber...
So generell stimmt das nicht, wenn man das Resultat als XML ausliefert,
kommt der XML-Parser auch mit der XML-Syntax zurecht.
So man HTML als Resultat will (da es als text/html an den HTML-Parser
geliefert wird), sollte man auch sicherstellen, dass man HTML erzeugt,
also mit XSLT 1.0
<xsl:output method="html"/>
benutzen und auch keine XML-Namensräume.
Mit XSLT 2.0 gibt es auch noch die Möglichkeit von
<xsl:output method="xhtml"/>
dabei wird dann sichergestellt, dass das Resultat als text/html
verarbeitet werden kann.
So man aber XHTML mit XSLT 1.0 erzeugen will und dass auch als text/html
an Browser wie IE auslieferfen will, bleiben nur "Krücken" wie
<script type="text/javascript" src="file.js">
<xsl:comment>Enforcing HTML serialization</xsl:comment>
</script>
da das dann als
<script type="text/javascript" src="file.js"><!-- Enforcing HTML
serialization --></script>
serialisiert wird und dann korrekt vom HTML-Parser verarbeitet wird.
--
Martin Honnen
http://msmvps.com/blogs/martin_honnen/
> Wie kann man verhindern, dass ein
>
> <script type="text/javascript" src="xyz.js"></script>
>
> abgekürzt wird zu einem
>
> <script type="text/javascript" src="xyz.js" />
>
> ???
>
> Browser mögen offensichtlich die obere Syntax lieber...
Wie kommst Du zu dieser Auffassung? Welche Browser sollen das sein?
Bei Firefox weiß ich definitiv, dass die kurzschreibweise <script ... />
zu einem nicht interpretieren führt.
Ist auch im xhtml Standard so spezifiert.
Liebe Grüße
Andreas
--
Kraftl EDV - Dienstleistungen
Linux, Schulungen, Webprogrammierung
http://www.kraftl.at
Was soll im "xhtml Standard" spezifiziert sein?
Wenn du XHTML als application/xhtml+xml oder application/xml oder
text/xml ausliefert, wird es in Firefox von XML-Parser verarbeitet, und
dann gibt es sicher auch keine Problem mit <script
type="text/javascript" src="file.js"/>:
http://home.arcor.de/martin.honnen/javascript/test2011031501.xhtml
Nur beim Ausliefern von XHTML als text/html wird das Dokument vom
HTML-Parser verarbeitet, und dann muss man sicherstellen, dass die Regel
in http://www.w3.org/TR/xhtml1/#C_3 eingehalten wird.
Zur Illustration:
Das hier funktioniert bei mir mit Firefox:
<http://arnowelzel.de/samples/javascript-ok.html>
Das wiederum nicht - der Rest Dokument wird offenbar ab <script... als
Teil des SCRIPT-Elementes betrachtet:
<http://arnowelzel.de/samples/javascript-fail.html>
Beide Dokumente werden als text/html geliefert.
Sorgt man aber dafür, dass als Content-Type application/xhtml+xml im
Header gesendet wird, geht auch die zweite Variante:
<http://arnowelzel.de/samples/javascript-fail.php>
Dummerweise interpretiert der Internet Explorer application/xhtml+xml
nicht selber, sondern will das an eine externe Anwendung übergeben -
deshalb ist das keine wirkliche Alternative und die Frage des OP bleibt
- wie kann man per XSLT verhindern, dass ein leere SCRIPT-Element
minimiert ausgegeben wird?
> und die Frage des OP bleibt
> - wie kann man per XSLT verhindern, dass ein leere SCRIPT-Element
> minimiert ausgegeben wird?
Ich habe das in
news://news.arcor.de:119/4d51255f$0$6766$9b4e...@newsspool3.arcor-online.net
beantwortet. Also entweder XSLT 2.0 und xsl:output method="xhtml"
verwenden oder mit XSLT 1.0, wenn man wirklich XHTML erzeugen muss, dann
einen Kommentar ins script-Element setzen, dann wird es nicht als
<script/> ausgegeben. Oder halt auf die Verwendung von XHTML verzichten
und HTML 4 mit XSLT 1.0 und output method="html" verwenden, dann wird
auch HTML-Syntax verwendet, mit denen die HTML-Parser etwas sinnvolles
anfangen kᅵnnen.