Имајте во предвид дека ова е превод на оригиналниот W3C документ и е во сопственост на W3C. Не преземаме никаква одговорност за грешки во копијата.
(Оваа страница користи CSS стилски листови)
Препораката на CSS2 содржи краток туторијал за користење на CSS со XML (види § 2.2). Во времето кога беше пишуван CSS2, официјалната спецификација за стил во XML не беше готова. Еве што требаше да содржи тој туторијал. Забележете дека примерите користат CSS, но во повеќето случаи стилските правила може да бидат напишани исто така и во XSL.
Сугестија: пробајте го во вашиот прелистувач
HTML има link елемент за поврзување до надворешни стилски листови, но не секој формат заснован на XML има таков елемент. Доколку нема соодветен елемент, вие се’ уште може да прикачите надворешни стилски листови преку xml-stylesheet инструкциите за процесирање, на овој начин:
<?xml-stylesheet href="my-style.css" type="text/css"?> ... rest of document here...
Оваа процесирачка инструкција (ПИ) мора да дојде пред првата етикета на документот. type="text/css" не е задолжителен, но му помага на прелистувачот: доколку не поддржува CSS, тогаш знае дека нема потреба да го симнува овој документ.
Исто како и со link елементот на HTML, може да има повеќекратни xml-stylesheet ПИи и тие може да имаат атрибути за одредување на типот, медиумот и насловот.
Еве еден поголем пример. Да претпоставиме дека имаме три стилски листови, еден кој го одредува основниот тип на приказ на секој елемент (inline, block, list-item, итн.) и други два кои соодветно ги одредуваат боите и маргините. Двата последни се алтернатива еден на друг и читачот на документот може да избере кој од нив да го користи. Освен во случај кога документот се печати, тогаш би сакале да го користиме само последниот стил. Еве го општиот стилски лист:
/* common.css */
INSTRUMENT { display: inline }
ARTICLE, HEADLINE, AUTHOR, PARA { display: block }
Ова е еден од алтернативните стилови, во датотека именувана „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 }
Еве го и другиот, наречен „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 документот кон кој се поврзуваат овие три стилски листови изгледа вака:
<?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>
За повеќе детали, видете ја Препораката на W3C „Поврзување на стилски листови со XML документи“
Сугестија: пробајте го во вашиот прелистувач
HTML има style елемент кој дозволува стилските листови да бидат вметнати директно во HTML датотеката, без да има потреба од надворешна датотека. Во некои случаи тоа е полесно, особено кога стилскиот лист е многу специфичен за тој документ.
Повеќето формати засновани на XML нема да имаат таков елемент, но истата ПИ којашто поврзува до надворешни стилски листови може исто така да посочува кон стилски листови коишто се вметнати во самиот документ. Почнувајќи од февруари 2006, со ова се’ уште има технички проблеми и не постои официјална спецификација. На пример:
<?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>
Во овој случај атрибутот type="text/css" мора да биде присутен, инаку прелистувачот (или друга програма) мора да го нагаѓа јазикот на стилскиот лист. ПИ xml-stylesheet во овој случај посочува не кон надворешен стилски лист, туку кон елемент од самиот документ. Тој елемент е идентификуван со атрибутот id кој служи како цел за линкот. (Во зависност од одделниот XML формат, атрибутот id може да се вика и поинаку; во некои формати може воопшто и да нема соодветен атрибут.)
Препораката од W3C „Поврзување на стилски листови со XML документи“ не го дефинира случајот со вметнати стилски листови, иако изгледа разумно предвидувањето да се дозволат URL фрагменти (кои почнуваат со #). Сега, почеток на 2006, се’ уште има нерешени проблеми и се’ уште нема објавена спецификација. Проблемите се по следниот редослед:
type е потребен во овој случај. Не е дефинирано што се случува доколку атрибутот е испуштен: дали стилскиот лист е игнориран? Дали се претпоставува дека е CSS? Дали постои некој алгоритам за определување на јазикот?
<ARTICLE> не е точен CSS, па изгледа дека е потребно дополнително правило за тоа дека идентификаторот на фрагментот користен во ПИ на стилскиот лист треба да посочува кон содржината на елементот, а не кон самиот елемент.
type го дава типот само на еден од двата и на тој начин прелистувачот не може да знае дали е во можност да го користи стилскиот лист. Дури не е ни дефинирано дали атрибутите type го даваат типот на надворешниот документ или на стилскиот лист вметнат во него.
xml:id и доколку документот содржи атрибути со тоа име, најверојатно дека URL фрагментот посочува кон еден од нив. Но доколку нема такви атрибути, прелистувачот мора да проба други начини за да определи кои атрибути се ID. Доколку документот има DOCTYPE на почетокот и прелистувачот е во можност да го вчита DTD-то на кое е посочено, тоа DTD ќе го одреди атрибутот. Меѓутоа, прелистувачот можеби не е во можност да чита DTD или може да нема DOCTYPE.
HTML исто така дозволува стилските листови да бидат директно прикачени кон индивидуални елементи преку style атрибутот. Повеќето формати на документи базирани на XML нема да имаат таков атрибут, иако некои може да дозволат карактеристики (modules) од HTML да бидат користени внатре во документот.
Сугестија: пробајте го во вашиот прелистувач
class атрибутот кој ви дозволува да создавате поткласи на елементи во HTML не е многу веројатно да биде достапен во поголемиот дел на форматите на документи базирани на XML. Се разбира, CSS ви дозволува да избирате елементи засновани на било кој елемент, не само на class, но синтаксата е понеудобна.
Еве еден пример. Ако има атрибут class и форматот на документот дефинира дека работи како во HTML, можеме да ја користиме нотацијата со точката. (Поради тоа, овој пример нема да работи, бидејќи <doc> не е формат кој прелистувачите го знаат како нешто кое го има 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>
Доколку форматот на документот не одредува дека class создава поткласа, тогаш ќе мора да ги користите подолгите селектори со „[ ]“:
<?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>
Доколку нема атрибут class, но има нешто друго кое можеме да го користиме, се’ уште се применуваат селекторите на атрибути „[ ]“:
Пробајте го во вашиот прелистувач
<?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>