(Šī lappuse izmanto CSS kaskādes stilu tabulas)
Minētais dokuments ir raksta "How to add style to XML".
Dokumenta oriģinālā versija ir piejama tikai W3C saitā
http://www.w3.org/Style/styling-XML
Minētais tulkojums NAV oficiāls W3C documents.
Visas autortiesības pieder W3C.
Minētajā dokumentā var būt tulkojuma un drukas kļūdas.
Autors: Alexander Fristkins (autora
visi tulkojumi)
Lokālā versija:
http://www.reviews4u.org/Style/styling-XML.html
CSS2 rekomendācijas satur īsu pamācību CSS lietošanā ar XML palīdzību (skat. § 2.2). CSS2 tapšanas laikā oficiālā stila specifikācija XML vidē vēl nebija gatava. Lūk, tas, ko pamācībai vajadzēja saturēt. Pievērsiet uzmanību, ka piemēri izmanto CSS, taču lielākajā daļā gadījumu stilu noteikumus var tāpat ierakstīt XSL.
Uzvedne: pamēģiniet to jūsu pārlūkprogrammā
HTML satur elementu link
дpiesaistei ārējai stilu tabulai, taču ne katram formātam uz XML bāzes būs tāds
elements. Ja nav atbilstoša elementa, jūs varat pievienot ārējo stilu tabulu ar
apstrādes instrukciju
xml-stylesheet palīdzību sekojošā veidā:
<?xml-stylesheet href="my-style.css" type="text/css"?> ... dokumenta atlikums te...
Šīm apstrādes instrukcijām (AI) jābūt pirms dokumenta pirmā tega.
type="text/css" nav nepieciešams, taču tas palīdz pārlūkprogrammai:
ja tas neatbalsta CSS, tas zina, ka nevajadzēs ielādēt šo failu.
Līdzīgi kā gadījumā ar HTML elementu link, te var būt sarežģītas
xml-stylesheet AI, un tām var būt atribūti tipa, satura un galvenes
noteikšanai.
Lūk, izvērsts piemērs. Iedomāsimies, ka mums ir trīs stilu tabulas: pamata, kura nosaka katra elementa displeja bāzes tipu (līnijā, blokā, lapā utt.), un divas citas, katra no kurām nosaka krāsu un laukumus. Divas pēdējās ir viena otras alternatīva, un dokumenta lasītājs var izvēlēties, kuru no tām izvēlēties. Izņēmums ir gadījumi, kad dokuments tiek drukāts. Tad mēs vēlamies izmantot tikai pēdējo stilu. Lūk, pamata stilu tabula:
/* common.css */
INSTRUMENT { display: inline }
ARTICLE, HEADLINE, AUTHOR, PARA { display: block }
Tas ir viens no alternatīvajiem stiliem failā ar nosaukumu "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 }
Bet te, lūk, ir otrs, kas saucas "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 }
XML dokuments ar šiem trim, tam piesaistītajiem stiliem izskatās sekojoši:
<?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>
Detalizētākas informācijas gūšanai skatieties W3C rekomendācijas Stilu tabulu piesaiste XML dokumentam
Uzvedne: pamēģiniet to savā pārlūkprogrammā
HTML ir style, elements, kas ļauj iebūvēt stilu tabulu tieši
HTML failā bez ārējā faila esamības nepieciešamības. Dažos gadījumos tā ir
vienkāršāk, īpaši, kad stilu tabula ir ļoti specifiska konkrētajam dokumentam.
Lielākajai daļai uz XML balstīto formātu nebūs tāda elementa, bet tās pašas AI, kas piesaistās ārējai stilu tabulai, var tāpat tikt izmantotas, lai vērstos pie stilu tabulas, kas iebūvēta pašā dokumentā. 2006. gada februārī vēl joprojām eksistē tehniskas tā realizācijas problēmas, bet formālas specifikācijas neeksistē. Piemēram:
<?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>
Šajā gadījumā jābūt atribūtam type="text/css", pretējā gadījumā
pārlūkprogramma (vai cita programma) būs spiesta minēt stilu tabulas valodu
xml-stylesheet AI tagad vēršas nevis pie ārējās stilu tabulas, bet pie
paša dokumenta elementa. Šis elements identificējas ar atribūtu id, kas kalpo
par norādes mērķi. (Atkarībā no atsevišķa XML formāta, atribūts id
var saukties citādi; dažos formātos vispār var nebūt atbilstošu atribūtu.)
W3C rekomendācijas Stilu tabulu piesaiste XML dokumentam neizskata iebūvētās stilu tabulas gadījumu, lai gan šķiet pamatoti atļaut URL fragmentus (sākot no #). Tai pat laikā, 2006. gada sākumā, vēl joprojām pastāv neatrisinātas problēmas, pie kurām nav publicētu specifikāciju. Problēmas ir sekojošas:
type. Nav noteikts, kas
notiek, kad atribūts tiek likvidēts: vai stilu tabula tiek ignorēta? vai tā var
būt CSS? vai ir kāds algoritms valodas atpazīšanai?
<ARTICLE> nav pareiza. Tādējādi var izdarīt secinājumu, ka ir
nepieciešams kāds papildu noteikums, saskaņā ar kuru identifikators, kas tiek
izmantots AI stilu tabulā, vērstos pie elementa satura, nevis paša elementa.
type dod tikai vienu no diviem tipiem,
tādēļ pārlūkprogramma nevar zināt, vai var izmantot stilu tabulu. Nav pat
noteikts tas, vai atribūts type tiek uzdots ārējā dokumenta tipam
vai tajā iebūvētajai stilu tabulai.
xml:id,
un, ja dokuments satur atribūtus ar šādu nosaukumu, visticamāk, ka URL fragments
norādīt uz vienu no tiem. Bet, ja tādu atribūtu nav, pārlūkprogrammai jāmēģina
citi paņēmieni, lai noteiktu, kuri ir ID atribūti. Ja dokumentam ir DOCTYPE
augšā un pārlūkprogramma spēj atjaunot DTD, kas norāda uz to, šis DTD noteiks
atribūtu. Taču pārlūkprogramma var netikt galā ar DTD lasīšanu vai arī var nebūt
DOCTYPE.
HTML tāpat ļauj stiliem pievienoties tieši individuāliem elementiem ar
atribūta
style palīdzību. Vairumam uz XML balstītu dokumentu formātu nebūs
tāda atribūta, lai gan daži var atļaut HTML īpašības (moduļi)
izmantošanai dokumenta iekšienē.
Uzvedne: pamēģiniet to jūsu pārlūkprogrammā
class
, atribūts, kas ļauj jums veidot elementu apakšklases HTML, tāpat nav pieejams
lielākajā daļā formātu uz XML bāzes. Protams, CSS ļauj jums izvēlēties
elementus, kas balstās uz jebkuru atribūtu, ne tikai
class, taču sintakse nav tik ērta.
Lūk, piemērs. Ja ir class atribūts un dokumenta formāts nosaka,
ka tas darbojas kā HTML, mēs varam izmantot norādes ar punktējumu. (Šis
konkrētais piemērs nedarbosies, jo <doc> ir formāts, ko nepazīst pārlūkprogramma
kā kaut ko tādu, kam ir 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>
Ja dokumenta formāts nenosaka, ka class veido apakšklasi, jums
nāksies izmantot garākus tegu noteicēju ar "[ ]":
<?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>
Ja class nav, bet ir kaut kas cits, ko mēs varam izmantot,
vienalga tiek izmantoti "[ ]" atribūtu tegu noteicēji:
pamēģiniet to savā pārlūkprogrammā
<?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>