(oversætte « Hvordan at tilføje en stil til XML»)
Anbefaling CSS2 indeholder en kort vejledning til at bruge CSS med XML (see § 2.2). På tidspunktet for stavning af CSS2 den officielle specifikation for tilknytning af stilark med dokumenter XML var ikke klar. Det er det hvad vejledning skal indeholde. Bemærk at alle eksempler bruger CSS, men i de fleste tilfælde den stil regler kan også skrives i XSL.
Råd: tjekke det i din browser.
I HTML der er et link element
for tilknytning med yrde stilark, men ikke alle format baserede på
XML vil have et element. Hvis det er ikke egnet element, du kan tillægge
yrde stilark ved hjælp af behandlingsinstruktion for xml-stylesheet:
<?xml-stylesheet href="my-style.css" type="text/css"?> ... rest of document here...
Denne behandlingsinstruktion bør placeres før den første
tagget i dokumentet. type="text/css" er ikke nødvendigvis,
men det vil hjælpe browseren: hvis den understøtter CSS ikke,
den vil vide at det behøves ikke at hente denne fil.
Som i tilfælde med elementer link i HTML, det kan være
noget instruktioner xml-stylesheet, og de kan have attributter
til at angive typen, skærmenhed og titlen.
Her er ett mere detaljeret eksempel. Antag at vi har tre stilark: ett som fastlægger de grundlæggende typer af kortlægning af hvert element (inline, block, list-item og så videre), og to andre som sæt farver og marginer. De sidste to er alternativer til hinanden og dokument læseren kan vælge nogle af dem til bruge. Bortset fra tilfælde når dokumentet er udskrevet — derefter skal vi bruge den sidste stil. Her er den grundlæggende stilark:
/* common.css */
INSTRUMENT { display: inline }
ARTICLE, HEADLINE, AUTHOR, PARA { display: block }
Her er en af de alternative stilarter, modern.css:
/* modern.css */
ARTICLE { font-family: sans-serif; background: white; color: black }
AUTHOR { margin: 1em; color: red }
HEADLINE { text-align: right; margin-bottom: 2em }
PARA { line-height: 1.5; margin-left: 15% }
INSTRUMENT { color: blue }
Og det — er andre, called classic.css:
/* classic.css */
ARTICLE { font-family: serif; background: white; color: #003 }
AUTHOR { font-size: large; margin: 1em 0 }
HEADLINE { font-size: x-large; margin-bottom: 1em }
PARA { text-indent: 1em; text-align: justify }
INSTRUMENT { font-style: italic }
Dokument XML som forbundet med de tre stilarter ligner som:
<?xml-stylesheet href="common.css" type="text/css"?>
<?xml-stylesheet href="modern.css" title="Modern" media="screen"
type="text/css"?>
<?xml-stylesheet href="classic.css" alternate="yes"
title="Classic" media="screen, print" type="text/css"?>
<ARTICLE>
<HEADLINE>Fredrick the Great meets Bach</HEADLINE>
<AUTHOR>Johann Nikolaus Forkel</AUTHOR>
<PARA>
One evening, just as he was getting his
<INSTRUMENT>flute</INSTRUMENT> ready and his
musicians were assembled, an officer brought him a list of
the strangers who had arrived.
</PARA>
</ARTICLE>
For nærmere oplysninger se anbefaling W3C “Tilknytning af stilark med dokumenter XML“
Råd: tjekke det i din browser.
I HTML det er at attribut style som tillader stilark at direkte
indgå i filen uden behovet for en ekstern fil. I nogle tilfælde
er det nemmere især hvis stilark er skabt specielt til dette dokument.
De fleste formater baserede på XML har ikke disse element, men lignende behandlingsinstruktion, som henvises på ydre stilarl, kan også bruges til at angive de indbyggede stilarter i selve dokumentet. På Februar 2006 det er tekniske problemer med det og det er ikke en formelle specifikation. Eksempel:
<?xml-stylesheet href="#style" type="text/css"?>
<ARTICLE>
<EXTRAS id="style">
INSTRUMENT { display: inline }
ARTICLE, HEADLINE, AUTHOR, PARA { display: block }
EXTRAS { display: none }
</EXTRAS>
<HEADLINE>Fredrick the Great meets Bach</HEADLINE>
...
</ARTICLE>
I denne tilfælde attribut type="text/css" skal være
til stede, ellers browser (eller et andet program) skal gøre antagelser
om sproget af stilark. Instruktion xml-stylesheet peger nu
ikke på et ydre stilark men på et element af selve dokument.
Element er defineret på attribut id, som overbragt som
et der henvises mål. (Afhængigt af specifik formatet XML, attribut
id kan kaldes noget andet; i noget formater det kan være
ingen relevant attribut.)
Anbefaling W3C “Tilknytning af stilark med dokumenter XML“ afgør ikke tilfælde af indbygget stilark, selv om den beslutning af delvis URL begyndende med # synes en acceptabel generalisering. På dette tidspunkt, på begyndelse af 2006 år, det kan være uløste problemer og det er ingen udgivet specifikation:
type er nødvendigt. Det er ikke angivet
om hvad der sker hvis et attribut er mistede: skal det stilark ignoreres?
Skal det være CSS? Er der et algoritme til bestemmelse af sproget?
<ARTICLE> er ikke en korrekt kode CSS, derfor
det behøves en særlig regel ifølge af som et delvis
id i ett stil instruktion indikerer på indholdet af element og
ikke på det hele element.
type derfor
browser kan ikke vide om den kan bruge stilarket. Det er ikke endda
angivet om attributter type indikerer på type af
ydre dokument eller af stilark som er indlejret i det.
xml:id og hvis dokument
indeholder attributter med dette navn derefter sandsynligt delvis URL
indikerer på en af dem. Men hvis det er ikke sådan attributter,
browser skal forsøge fastlægge hvilke attributter er id’er
ved hjælp af andre midler. Hvis dokument har DOCTYPE på
begyndelse og browser kan få DTD, som det indikerer på,
dette DTD vil indikere en attribut. Men browsere kan være ikke
i stand til læse DTD, eller kan være ikke DOCTYPE.
HTML også giver mulighed for at anvende stilarter direkt til særskilt
elementer ved hjælp af en style attribute.
De fleste XML-formater har ikke denne attribut, men nogle kan give mulighed
for at bruge muligheder af HTML (modules) i et dokument.
Råd: tjekee det i din browser.
class attribute
som giver mulighed for at skabe underklasser af elementer i HTML er også
ikke tilgængelig i de vigtigste formater baserede på XML. Naturligvis
CSS giver mulighed for at vælge elementer på grundlag af nogen
attribut, ikke kun på class, men syntaks er mindre bekvem.
Her er et eksempel. Hvis det er attributen class, og format
af dokument fastlægger at det arbejder som i HTML, det kan bruge ett
notation med ett prik. (Denne eksempel arbejder ikke fordi <doc> —
er ikke den format som browser kommer til at tage for noget som fastholder
class)
<?xml-stylesheet href="#s1" type="text/css"?>
<doc>
<s id="s1">
s { display: none }
p { display: block }
p.note { color: red }
</s>
<p>Some text... </p>
<p class="note">A note... </p>
</doc>
Hvis dokument angiver ikke at class skaber en underklass du skal bruge længere selektorer med "[ ]":
<?xml-stylesheet href="#s1" type="text/css"?>
<doc>
<s id="s1">
s { display: none }
p { display: block }
p[class~=note] { color: red }
</s>
<p>Some text... </p>
<p class="note">A note... </p>
</doc>
Hvis der er ingen attribut class, men det er noget som kan
bruges, selektorer af attributter "[ ]" er også gældende:
Råd: tjekke det i din browser.
<?xml-stylesheet href="#s1" type="text/css"?>
<doc>
<s id="s1">
s { display: none }
p { display: block }
p[warning="yes"] { color: red }
</s>
<p>Some text... </p>
<p warning="yes">A note... </p>
</doc>
Hvis dokumentet formatet specificerer ikke, at klassen skaber en underklasse, så du bliver nødt til at bruge længere selektorer med "[ ]"
<?xml-stylesheet href="#s1" type="text/css"?>
<doc>
<s id="s1">
s { display: none }
p { display: block }
p[class~=note] { color: red }
</s>
<p>Some text... </p>
<p class="note">A note... </p>
</doc>
Hvis der ikke er klasse attribut, men der er noget andet, vi
kan bruge, attributten selektorer "[ ]" stadig gælder:
prøv det i din browser
<?xml-stylesheet href="#s1" type="text/css"?>
<doc>
<s id="s1">
s { display: none }
p { display: block }
p[warning="yes"] { color: red }
</s>
<p>Some text... </p>
<p warning="yes">A note... </p>
</doc>