"Kako dodati stil XML-u" je Srpski prevod originalne i zvanične verzije W3C dokumenta "How to add style to XML" koji se nalazi na adresi http://www.w3.org/Style/styling-XML.en.html. Tekst je preveo arhitekta Danilo, a prevod proverio Lazar. Prevod može sadržati greške. Za dodatne relevantne prevode W3C dokumenata, posetite ovaj link. Ako vam je ova stranica bila od koristi, posetite jedinstven anoniman internet forum.
Ћирилица | Latinica
(Ova strana koristi CSS stilske fajlove)
CSS2 Preporuka sadrži kratak tutorijal o korišćenju CSS-a sa XML-om (pogledajte § 2.2). U vreme kada je CSS2 pisan, zvanična specifikacija za stil XML-u nije bila spremna. Ovde je materijal koji je taj tutorijal trebao da sadrži. Primetite da primeri koriste CSS, ali u većini slučajeva stilska pravila takođe mogu da se pišu u XSL-u.
Savet: probajte ovo u svom brauzeru
HTML ima link
elemenat za linkovanje ka spoljašnjim stilskim fajlovima, ali nemaju svi formati zasnovani na XML-u takav elemenat. Ako ne postoji odgovarajući elemenat, možete i dalje da priključite spoljašnji stilski fajl pomoću xml-stylesheet
instrukcije za procesiranje ovako:
<?xml-stylesheet href="my-style.css" type="text/css"?> ... ostatak dokumenta ovde...
Ova instrukcija za procesiranje (PI) mora doći pre prvog elementa dokumenta. type="text/css"
nije obavezan, ali pomaže brauzeru: ako ne podržava CSS, zna da neće morati da učita taj fajl.
Kao i sa link
elementom HTML-a, mogu postojati višestruke
xml-stylesheet
instrukcije za procesiranje i one mogu imati atribute za obeležavanje tipa, medijuma i naslova.
Evo većeg primera. Pretpostavimo da imamo tri stilska fajla, jedan koji postavlja osnovni prezentacioni tip svakog elementa (liniski, blok, elemenat liste, itd.) i druga dva koji postavljaju boje i margine. Dva poslednja su alternative jedan drugom, i čitaoc dokumenta može izabrati koji oće da koristi. Osim kad se dokumenat štampa, u kojem slučaju mi želimo da koristimo samo poslednji stil. Ovde je uobičajen stilski fajl:
/* common.css */ INSTRUMENT { display: inline } ARTICLE, HEADLINE, AUTHOR, PARA { display: block }
Ovo je jedan od mogućih stilova, u fajlu nazvanom "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 }
A ovo je drugi, nazvan "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 dokumenat sa ova tri stilska fajla linkovana ka njemu izgleda ovako:
<?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>Johan Nikolaus Forkel</AUTHOR> <PARA> Jedno veče, baš dok je spreman uzimao svoju <INSTRUMENT>flautu</INSTRUMENT> i kad su njegovi muzičari su bili okupljeni, oficir mu je doneo listu nepoznatih lica koja su bila stigla. </PARA> </ARTICLE>
Za više detalja, pogledajte W3C Preporuku “Priključivanje Stilskih Fajlova XML dokumentima.”
Savet: probajte u svom brauzeru
HTML ima style
elemenat koji dozvoljava stilsim fajlovima da budu ugrađeni
direktno u HTML fajl, bez potrebe za spoljnim fajlom. U nekim slučajevima to je lakše,
naročito kada je stilski fajl veoma specifičan datom dokumentu.
Većina formata zasnovanih na XML-u neće imati takav elemenat, ali iste PI koje linkuju ka spoljnim stilskim fajlovima mogu da se iskoriste da linkuju ka stilskim fajlovima koji su ugrađeni u sam dokumenat. Od Februara 2006, i dalje postoje tehnički problemi sa ovime, i ne postoji formalna specifikacija. Na primer:
<?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>Frederik Veliki susreće Baha</HEADLINE> ... </ARTICLE>
U ovom slučaju type="text/css"
atribut mora postojati, inače brauzer
(ili neki drugi program) mora da pogađa stilski jezik. xml-stylesheet
PI sada pokazuje ne ka spoljašnjem stilskom fajlu, nego ka elementu unutar samog dokumenta. Taj elemenat je identifikovan sa id
atributom koji služi kao meta linka. (U zavisnosti od konkretnog XML formata, id
atribut se može zvati drugačije; u nekim formatima možda i neće postojati odgovarajući atribut.)
W3C Preporuka “Priključivanje Stilskih Fajlova XML dokumentima” ne definiše slučaj ugrađenih stilskih fajlova, mada to deluje kao razumno tumačenje da se omoguće URL fragmenti (počevši od “#”). U ovom momentu, početkom 2006-te, još uvek postoje nerešeni problemi i ne postoji objavljena specifikacija. Problemi su sledeći:
type
atribut je neophodan u ovom slučaju.
Ne definisano je šta se događa ako je atribut izostavljen: dali je stilski fajl ignorisan? da li se pretpostavlja da je u pitanju CSS? da li postoji neki algoritam koji određuje jezik?
<ARTICLE>
nije ispravan CSS, tako da se čini da treba da postoji dodatno pravilo da identifikator fragmenata koji se koristi u PI stilskog elementa pokazuje ka sadržaju elementa, ne ka samom elementu.
type
atribut samo daje tip na jednom od dva, i stoga brauzer ne može znati dali je u stanju da koristi stilski fajl. Nije čak ni definisano dali type
atribut daje tip spoljašnjeg dokumenta ili stilskog fajla uključenog u njega.
xml:id
i ako dokumenat sadrži atribut sa tim imenom, veoma je verovatno da će URL fragmenat da pokazuje ka jednom od tih. Ali ako ne postoje takvi atributi, brauzer mora pokušati na druge načine da ustanovi koji atributi su ID-ovi. Ako dokumenat ima DOCTYPE na vrhu i brauzer je u stanju da učita DTD ka kome on pokazuje, taj DTD će specificirati atribut. Ali brauzer možda neće biti u stanju da pročita DTD-ove ili možda neće postojati DOCTYPE.
HTML takođe dozvoljava stilovima da vudu direktno prikačeni individualnim elementima uz pomoć style
atributa. Većina dokument formata zanovanih na XML-u neće imati takav atribut, mada neki dozvoljavaju karakteristike (modules) iz HTML da se koriste unutar dokumenta.
Savet: probajte u svom brauzeru
class
atribut koji vam omogućava da kreirate podklase elemenata u HTML takođe nije verovatno da će te ga naći u većini dokumenata zasnovanih na XML formatu. Naravno, CSS vam dopušta da izaberete elemente zasnovane na bilo kom atributu, ne samo class
, ali sintaksa nije tako ugodna.
Evo primera. Ako postoji class
atribut i format dokumenta definiše da to radi kao u HTML-u, mi možemo koristiti notaciju sa tačkom. (Stoga, ovaj konkretan primer neće raditi jer <doc> nije format koji brauzeri znaju kao nešto što ima class
)
<?xml-stylesheet href="#s1" type="text/css"?> <doc> <s id="s1"> s { display: none } p { display: block } p.note { color: red } </s> <p>Neki tekst... </p> <p class="note">Poruka... </p> </doc>
Ako format dokumenta ne specificira da class
stvara podklasu, onda vi treba da koristite duže selektore sa "[ ]":
<?xml-stylesheet href="#s1" type="text/css"?> <doc> <s id="s1"> s { display: none } p { display: block } p[class~=note] { color: red } </s> <p>Neki tekst... </p> <p class="note">Poruka... </p> </doc>
Ako ne postoji atribut class
, ali ima nešto drugo što možemo da koristimo,
atribut selektor "[ ]" i dalje važi:
probajte u svom brauzeru
<?xml-stylesheet href="#s1" type="text/css"?> <doc> <s id="s1"> s { display: none } p { display: block } p[warning="yes"] { color: red } </s> <p>Neki tekst... </p> <p warning="yes">Poruka... </p> </doc>