Yo!
Sitter och pillar lite med XML och CSS. Började lära mig för typ någon dag sedan och har nu stött på ett prob. Vissa som försöker kolla på mitt dokumentet får:
The XML page cannot be displayed Cannot view XML input using style sheet. Please correct the error and then click the Refresh button, or try again later.
XML document must have a top level element.
Anävnder följande kod...
<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/css" href="varor.css"?>
<varor>
<mobiltelefoner>
<tillverkar namn="ericsson">Ericsson</tillverkar>
<modell>Ericsson T39</modell>
<artikel nr="1000">1000</artikel>
<info>
T39m är utrustad med GPRS (General Packet Radio Services) för omedelbar
Internetåtkomst och trådlös Bluetooth-teknik för sladdlös komfort.
Till det kan du lägga en imponerande lista av användbara funktioner.
Du får en effektiv och säker Internetåtkomst med T39:ans WAP-bläddrare
1.2.1, eller med en laptop, eller handdator med hjälp av det inbyggda
modemet i T39m. PIM-applikationerna (Personal Information Management)
inkluderar en avancerad kalender och telefonbok.
<pris>Pris: 5000</pris>
</info>
<tillverkar namn="siemens">Siemens</tillverkar>
<modell>Siemens SL45</modell>
<artikel nr="1001">1001</artikel>
<info>
SL 45 är en av de första telefonerna med MP-3 spelare. Vad som
skiljer ut den här produkten är att den har utbytbart MultiMediaCard
TM (MMC) som musiken lagras på. Genom att lansera en high-end produkt
med elegans och högteknologiska funktioner blir Siemens GSM-portfölj
komplett. SL 45 är inte bara en telefon. Med sin MP-3 spelare, utbyt
bara MultiMediaCard TM (MMC), röstinspelning, mobil internet anslutning,
adressbok/planeringskalender är den mycket, mycket mer. Med sin eleganta
design är den en av de mest attraktiva produkterna på marknaden.
<pris>Pris: 7000</pris>
</info>
</mobiltelefoner>
</varor>
------------------ Är det en fysisk liknelser eller är du bara ett stort bakverk?
Jämför skillnaderna mellan Netscape 6.2 och Opera 6 (som gör "rätt") och MSIE 5.5 (som inte hanterar border-stilen inset och inte klarar av :before och :after) så ser du vad jag menar med att MSIE har ofullständigt CSS-stöd
En annan sak man får tänka på, är att man verkligen lagrar XML-filen i den encoding man anger i XML-taggen om man har svenska tecken (åäö - typ) i sitt innehåll - Annars kan man få det felmeddelande du anger för att webbläsaren tolkar åäö "snett"...
och en tredje sak ;) som *eventuellt* kan spela in är att
XML document must have a top level element.
tyder på att den som får felet jar en version av webbläsare som har validering av XML påslagen (om det nu är möjligt ;) ) och därför förväntar sig en <!DOCTYPE i XML-dokumentet - <!DOCTYPE anger ju vilket XML-element i dokumentet som är rot-element ;)
Jäpp, det var det jag var rädd för... Du måste nog skriva en fullständig DTD om du ska ha med någon över huvud taget.
Om du inte har kunskaperna, så kanske det står något på http://www.xml101.com eller http://www.xmlakademin.se ( Eller var det .nu? ). Orkar tyvärr inte skriva ihop hela åt dig just nu. :l
Tog och kollade lite på DTD och efter lite småpill och ändringar fick jag fram följande kod..
<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/css" href="varor.css"?>
<!DOCTYPE varor [
<!ELEMENT varor (mobiltelefoner, tillverkare, modell, artikel, info, pris)>
<!ELEMENT mobiltelefoner (#PCDATA)>
<!ELEMENT tillverkare (#PCDATA)>
<!ELEMENT modell (#PCDATA)>
<!ELEMENT artikel (#PCDATA)>
<!ELEMENT info (#PCDATA)>
<!ELEMENT pris (#PCDATA)>
]>
<varor>
<mobiltelefoner>
<tillverkare>Ericsson</tillverkare>
<modell>Ericsson T39</modell>
<artikel nr="1000">1000</artikel>
<info>
T39m är utrustad med GPRS (General Packet Radio Services) för omedelbar
Internetåtkomst och trådlös Bluetooth-teknik för sladdlös komfort.
Till det kan du lägga en imponerande lista av användbara funktioner.
Du får en effektiv och säker Internetåtkomst med T39:ans WAP-bläddrare
1.2.1, eller med en laptop, eller handdator med hjälp av det inbyggda
modemet i T39m. PIM-applikationerna (Personal Information Management)
inkluderar en avancerad kalender och telefonbok.
<pris>Pris: 5000</pris>
</info>
<tillverkare>Siemens</tillverkare>
<modell>Siemens SL45</modell>
<artikel nr="1001">1001</artikel>
<info>
SL 45 är en av de första telefonerna med MP-3 spelare. Vad som
skiljer ut den här produkten är att den har utbytbart MultiMediaCard
TM (MMC) som musiken lagras på. Genom att lansera en high-end produkt
med elegans och högteknologiska funktioner blir Siemens GSM-portfölj
komplett. SL 45 är inte bara en telefon. Med sin MP-3 spelare, utbyt
bara MultiMediaCard TM (MMC), röstinspelning, mobil internet anslutning,
adressbok/planeringskalender är den mycket, mycket mer. Med sin eleganta
design är den en av de mest attraktiva produkterna på marknaden.
<pris>Pris: 7000</pris>
</info>
</mobiltelefoner>
</varor>
...dock får jag Only text allowed inside element "mobiltelefoner" :(
------------------ Är det en fysisk liknelser eller är du bara ett stort bakverk?
Jäpp. Det beror på att du sätter att innehållet ska vara PCDATA, vilket innebär text. Prova med att sätta ANY istället. Tror att det bör hjälpa... Ska snoka runt lite, och se om det inte var så. :)
Red.} Ja, ANY skulle det vara. Då borde det se ut så här:
Ahh, tror allt jag missuppfattade texten om PCDATA.
Har bytt på "mobiltelefoner" och får nu.. this file is not well-formed: % expected
Liten undrarn. Räcker det med att jag kör ANY på mobiltelefoner då de andra elementen e underelement? OM, borde jag inte då köra ANY på varor då det e topelementet?
Måste säga att det e mycket pill med det här. Tog en snabb titt på XHTML förut och det verkar vara ännu värre.
------------------ Är det en fysisk liknelser eller är du bara ett stort bakverk?
Jag har inte pysslat så mycket med DTDer... Vad jag har förstått så ska ett element deklareras med ANY om det innehåller både text och andra element, eller länkar. Annars #PCDATA.
Visst är det mycket pillegöra om man sitter med scheman och DTDer, men det är inte alltid såna används... Även om det är att föredra. :)
Tyvärr kan jag nog inte hjälpa dig mer med DTDer, men jag ska försöka hitta information på nätet som är nyttig...