DarrenMedlem sedan dec. 2002741 inlägg
I en tidigare tråd här på wF fick jag veta att jag skulle använda mig utav XSLT (som skall vara W3C standard) för att visa mina XML dokument... Jag gjorde det och fick problem med en gång. :(
Skall visa lite kod så ni förstår vad jag pratar om.
fil - bilder.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="bilder.xsl"?>
<INVENTARIUM>
<BILD>
<RUBRIK>697h</RUBRIK>
<NAMN>img/697h.jpg.</NAMN>
</BILD>
<BILD>
<RUBRIK>697i</RUBRIK>
<NAMN>img/697i.jpg.</NAMN>
</BILD>
<BILD>
<RUBRIK>697c</RUBRIK>
<NAMN>img/697c.jpg.</NAMN>
</BILD>
<BILD>
<RUBRIK>697d</RUBRIK>
<NAMN>img/697d.jpg.</NAMN>
</BILD>
<BILD>
<RUBRIK>697e</RUBRIK>
<NAMN>img/697e.jpg.</NAMN>
</BILD>
<BILD>
<RUBRIK>697f</RUBRIK>
<NAMN>img/697f.jpg.</NAMN>
</BILD>
</INVENTARIUM>
fil - bilder.xsl
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<head>
<title>Bildinventarium</title>
</head>
<body>
<h2>Bildinventarium</h2>
<xsl:for-each select="INVENTARIUM/BILD">
<span style="font-style:italic">Rubrik: </SPAN>
<xsl:value-of select="RUBRIK"/><br/>
<xsl:value-of select="NAMN"/><br/><br/>
</xsl:for-each>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Nu till problemet. Som i min förra tråd så har jag problem med att få dokumentet att visas korrekt i alla webbläsare. IE 6 (SP1) visar den som den ska. Opera 6.05, Opera 7 och Netscape 7.01 visar bara en lång rad med text. Mozilla 1.3a visar bara en sida med grått bakgrund.
Skall det vara så svårt? Sidan skall bara visa två rader med text för varje <bild>-tagg den hittar i xml-dokumentet...
Kan någon förklara för mig vad i hela friden jag skall göra för att få sidan att visas korrekt i alla webbläsare? Snart slänger jag boken och hela datorn ut igenom fönstret...
jarvkloMedlem sedan juli 20013 295 inlägg
Du har ett fel i din XSLT-fil
<span style="font-style:italic">Rubrik: </SPAN>
skall vara
<span style="font-style:italic">Rubrik: </span>
eftersom vi pratar XML (som är skiftlägesberoende).
Felskrivningen gör att det som genereras av transformationen inte är giltig XML, vilket bör utlösa någon form av felbeteende (olika beroende på vilken webbläsare du kör - MSIE t.ex. validerar inte alltid XML:en utan "kör ändå" ibland beroende på konfiguration och version av MSXML-komponenten).
Jag får din transformation att funka i Moz 1.1 efter det att jag ändrat till </span> iallafall.
Det är inte många äldre Netscape-läsare som hanterar XSLT. MSIE från 4 hanterar det någorlunda och bättre med ökande versionsnummer.
Opera har jag ingen koll på.
Sökmotorer hanterar antagligen inte XSLT-transformationer alls... Vilket gör att man är utlämnad till deras (eventuella) val att indexera XML överhuvudtaget...
Vill du vara säker på att sidan skall funka i *alla* webbläsare bör du nog göra transformationen på serversidan (har du tillgång till t.ex. PHP eller ASP ?)
Kan rekommendera XMLCooktop (http://xmlcooktop.com) om du kör Windows för att debugga och provköra XSLT om du är ute efter ett gratis och bra verktyg för att börja gräva dig in i XSLT
DarrenMedlem sedan dec. 2002741 inlägg
Tack jarvklo. Missade span grejen totalt. Man blir väl helt blind när man kollar förlänge på koden.
När jag ändrade span grejen fungerade det i IE 6, Netscape 7.01 och Mozilla 1.3a. Dock bryr sig inte Opera 6.05 och 7 om radbrytningar som finns i bilder.xsl filen. Den visar all text på en och samma rad som tidigare.
Kan man anta att Opera inte stödjer XML/XSLT fullt ut då?
Transformationen på serversidan kan jag tyvärr inte ta till genom att jag vill distributera denna grejen på cd-skivan.
Tack för hjälpen...
jarvkloMedlem sedan juli 20013 295 inlägg
Hmm...
Kollade upp Opera lite snabbt...
Dokumentationen för opera 7 skrev:
Opera does not support XSL formatting objects, and neither does it natively support XSLT transformations.
Källa: http://www.opera.com/docs/specs/#xml
DarrenMedlem sedan dec. 2002741 inlägg
En annan mysko grej här...
Om jag i netscape eller mozilla går till File/Open file och öppnar sidan som innehåller koden ovan så visas den som den skall.
Om jag däremot startar webbservern och går till http://localhost/bilder.xml då vill de två nämnda webbläsare intevisa sidan.
Vad kan det bero på tro?
jarvkloMedlem sedan juli 20013 295 inlägg
Har för mig att Moz/NN6+ fungerar så att den går på filextensionen om du öppnar en fil lokalt, och enbart på MIME-typen om du hämtar den från en server...
Du har antagligen inte rätt inställningar på MIME-typen för filer med extensionen .xml
Mer info: http://www.mozilla.org/newlayout/xml/
DarrenMedlem sedan dec. 2002741 inlägg
Ska ta och kolla på det där. Tack.