(This page uses CSS style sheets)
Acest document este o traducere a How to add style to XML si poate contine erori de traducere. Originalul in limba engleza al acestui document este singura versiune normativa. Autorul traducerii: Maryna Molchanova [email protected]
Sfat: verificati aceasta in brawserul Dvs..
In HTML exista elementul link pentru conexiune cu tabelele externe ale stilurilor, dar nu oirce format bazat pe XML va avea un astfel de element. In cazul in care nu exista un element corespunzator, Dvs. puteti conecta tabelele externe ale stilurilor cu mijloacele din instructiunile de prelucrare xml-stylesheet:
<?xml-stylesheet href="my-style.css" type="text/css"?> ... cealalta parte a documentului...
Aceste instructiuni de prelucrare trebuie sa se amplaseze pana la primul tag in document.type="text/css"
nu este obligatoriu, acest lucru insa va ajuta brawserul,
in caz ca nu suporta CSS, acesta va sti ca nu trebuie sa incarce acest fisier.
Ca si in cazul cu elementele link
in HTML, instructiuni
xml-stylesheet
pot fi cateva, si acestea pot avea atribute pentru desemnarea tipului, amenajarii afisarii si titlului.
Iata un exemplu mai desfasurat. Sa presupunem ca avem trei tabele cu stil: unul care stabileste tipurile principale de afisare a fiecarui element (inline, block, list-item etc.), si alte doua tabele, care confera culorile si alineatele. Ultimele doua sunt alternative unul fata de celalalt si cititorul documentului poate alege pe care sa-l utilizeze. Cu exceptia cazului cand documentul se tipareste atunci trebuie sa utilizam ultimul stil. Iata tabelul principal al stilurilor:
/* common.css */ INSTRUMENT { display: inline } ARTICLE, HEADLINE, AUTHOR, PARA { display: block }
Iata unul dintre stilurile alternative, 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 }
Iata alt stil, 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 }
Documentul XML cu cele trei stiluri conectate arata aproximativ astfel:
<?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>
Pentru informatii suplimentare va rugam sa vizionati Recomandarile W3C Conectarea tabelelor stilurilor cu documentele XML.
Sfat: verificati aceasta in brawserul Dvs..
In HTML exista atributul style
care permite tabelelor stilurilor sa se incorporeze in fisier in mod direct,
fara a fi necesar un fisier extern. In unele cazuri este mai simplu, indeosebi daca tabelul stilurilor este creat special
pentru respectivul document.
Majoritatea formatelor bazate pe XML nu au un asemenea element, dar instructiunile asemanatoare de prelucrare, care se refera la tabelul extern al stilurilor, pot fi utilizate de asemenea pentru indicarea stilurilor incorporate in document. La momentul lunii februarie din anul 2006 exista inca probleme tehnice in acest sens si nu exista specificatii formale. Exemplu:
<?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>
In acest caz atributul type="text/css"
trebuie sa fie prezent, in caz contrar brawserul
(sau alt program) va trebui sa presupuna cu privire la limba tabelelor stilurilor.
Instructiunile xml-stylesheet
arata acum nu tabelul extern al stilurilor,
ci elementul documentului insusi. Elementul este determinat de atributul id
, care se transmite ca scop al link-ului.
(In functie de formatul concret XML, atributul id
poate fi numit altfel; in unele formate poate sa nu exista in general atributul corespunzator.)
Recomandarea W3C Conectarea tabelelor stilurilor cu documentele XML nu determina cazul tabelelor incorporate ale stilurilor, desi permisiunea URL partiale, care incep cu #, pare a fi o generalizare convenabila. La momentul inceputului anului 2006, inca mai pot fi probleme nesolutionate, si nu exista specificatii publicate:
type
. Nu s-a determinat ce se va intampla,
daca atributul este omis: va fi oare ignorat tabelul stilurilor?
Se va considera oare CSS? Exista oare un oarecare algoritm de determinare a limbii?
<ARTICLE>
, nu este un cod exact CSS, de aceea
este necesara o regula deosebita, conform careia identificatorul partial in
instructiunile de stil de prelucrare arata continutul elementului si nu elementul in sine.
type
indica doar unul dintre doua tipuri, de aceea
brawserul nu poate sti, daca poate utiliza tabelul stilurilor. Nu s-a determinat
nici macar daca atributele type
indica tipul documentului extern,
sau tabelul stilurilor incorporat in acesta
HTML permite de asemenea utilizarea stilurilor in mod direct fata de unele elemente separate cu ajutorul atributului style. Majoritatea formatelor XML nu au un astfel de atribut, cu toate ca unele pot permite utilizarea posibilitatilor HTML (module) in document.
Sfat:verificati aceasta in browserul Dvs..
Atributul class,
care permite crearea subclaselor de elemente in HTML, este de asemenea inaccesibil in
formatele principale care se bazeaza pe XML. Bineinteles, CSS va permite sa alegeti elementele,
bazandu-va pe orice atribut, nu doar pe class
, dar sintaxa este mai putin comoda.
Iata un exemplu. Daca exista atributul class
, si forma actului
determina, ca acesta functioneaza ca si in HTML, se poate utiliza notatia cu punct.
(In mod efectiv acest exemplu nu functioneaza, pentru ca <doc> nu este acel format,
pe care brawserul il va considera ca fiind ceva care suporta 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>
Daca documentul nu determina ca class creeaza o subclasa, Dvs. trebuie sa utilizati selectori mai lungi cu "[ ]":
<?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>
Daca nu exista nici atributul class, dar exista ceva ce poate fi utilizat, selectorii atributelor "[ ]" pot fi de asemenea utilizati:
Sfat: verificati aceasta in brawserul Dvs.
<?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>