این یک ترجمه است. ممکن است حاوی خطا باشد یا با توجه به نسخه انگلیسی از تاریخ خارج شود. مترجم: Alex White
توصیه CSS2 شامل یک آموزش مختصر در مورد استفاده از CSS با XML است (به بند 2.2 مراجعه کنید). در زمانی که CSS2 نوشته شد، مشخصات رسمی سبک در XML آماده نبود. در اینجا چیزی است که آن آموزش باید حاوی آن باشد. توجه داشته باشید که نمونه ها از CSS استفاده می کنند، اما در بیشتر موارد قوانین سبک را می توان در XSL نیز نوشت.
Tip: آن را در مرورگر خود امتحان کنید
HTML یک عنصر
پیوند
برای پیوند به شیوه نامه های خارجی دارد، اما
هر قالب مبتنی بر XML چنین عنصری را نخواهد داشت. اگر عنصر مناسبی وجود
ندارد، همچنان میتوانید شیتهای سبک خارجی را با استفاده از دستورالعمل پردازش xml-stylesheet
به این صورت وصل
کنید:
<?xml-stylesheet href="my-style.css"?> ... rest of document here...
این دستورالعمل پردازش (PI) باید قبل از اولین تگ سند باشد. type="text/css"
مورد نیاز نیست، اما به مرورگر کمک می کند:
اگر از CSS پشتیبانی نمی کند، می داند که مجبور نیست این فایل را
دانلود کند.
درست مانند عنصر پیوند
HTML میتواند چندین PI با xml-stylesheet
وجود داشته باشد و آنها میتوانند ویژگیهایی
برای تنظیم نوع، رسانه و عنوان داشته باشند.
در اینجا یک مثال بزرگتر است. بیایید فرض کنیم سه شیوه نامه داریم. دو مورد آخر جایگزین یکدیگر هستند و خواننده سند ممکن است انتخاب کند که از کدام یک استفاده کند. به جز زمانی که سند چاپ می شود که در این صورت فقط می خواهیم از آخرین استایل استفاده کنیم. اینجاست common style sheet:
/* common.css */ INSTRUMENT { display: inline } ARTICLE, HEADLINE, AUTHOR, PARA { display: block }
این یکی از سبک های جایگزین است، در فایلی به نام “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”:
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"?> <?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 را ببینید “Associating Style Sheets with XML documents”
نکته: آن را در مرورگر خود امتحان کنید
HTML دارای یک عنصر سبک
است که به شیوه نامه (های)
اجازه می دهد بدون نیاز به فایل خارجی مستقیماً در فایل HTML جاسازی
شود. در برخی موارد این آسان تر است، به خصوص زمانی که شیوه نامه بسیار
خاص آن سند است.
اکثر قالبهای مبتنی بر XML چنین عنصری ندارند، اما همان PI که به شیوه نامههای خارجی پیوند میدهد نیز میتواند برای اشاره به شیوه نامههایی که در خود سند تعبیه شدهاند استفاده شود. از فوریه 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
PI اکنون نه به یک شیوه نامه
خارجی، بلکه به عنصری از خود سند اشاره می کند. آن عنصر با یک ویژگی
id
که به عنوان هدف پیوند عمل می کند، شناسایی می شود.
(بسته به فرمت خاص XML ویژگی id
ممکن است چیز دیگری
نامیده شود؛ در برخی از قالبها ممکن است اصلاً ویژگی مناسبی وجود
نداشته باشد.)
توصیه W3C "ارتباط Style Sheets با اسناد XML" موردی از شیوه نامه های جاسازی شده را تعریف نمی کند، اگرچه به نظر می رسد یک برون یابی منطقی برای اجازه دادن به قطعات URL (با "#" شروع می شود). در این زمان، اوایل سال 2006، هنوز مشکلات حل نشده وجود دارد و هیچ مشخصات منتشر شده ای وجود ندارد. مشکلات به شرح زیر است:
type
در این مورد مورد نیاز است. تعریف نشده است
اگر ویژگی حذف شود چه اتفاقی می افتد: آیا صفحه سبک نادیده گرفته می
شود؟ آیا فرض می شود که CSS باشد؟ آیا الگوریتمی برای تعیین زبان وجود
دارد؟
<ARTICLE>
شروع می شود، CSS درستی نیست، بنابراین به
نظر می رسد باید یک قانون اضافی وجود داشته باشد که شناسه قطعه مورد
استفاده در یک شیوه نامه PI به محتوای یک عنصر اشاره کند، نه به خود
عنصر.
type
فقط نوع یکی از این دو را می دهد و
بنابراین مرورگر نمی تواند بداند که آیا می تواند از شیوه نامه
استفاده کند یا خیر. حتی مشخص نشده است که ویژگیهای type
نوع سند خارجی را نشان میدهد یا شیوه نامه تعبیهشده در آن.
xml:id
وجود
دارد و اگر سند حاوی ویژگی هایی از آن نام باشد، به احتمال زیاد قطعه
URL به یکی از آن ها اشاره می کند. اما اگر چنین ویژگیهایی وجود
نداشته باشد، مرورگر باید روشهای دیگری را امتحان کند تا مشخص کند
کدام ویژگیها ID هستند. اگر سند دارای یک DOCTYPE در بالا باشد و
مرورگر بتواند DTD را که به آن اشاره می کند بازیابی کند، آن DTD
ویژگی را مشخص می کند. اما ممکن است مرورگرها نتوانند DTD ها را
بخوانند یا ممکن است DOCTYPE وجود نداشته باشد.
HTML همچنین به سبک ها اجازه می دهد تا مستقیماً با استفاده از ویژگی
سبک
به عناصر جداگانه متصل شوند. اکثر قالبهای سند مبتنی
بر XML چنین ویژگی را ندارند، اگرچه برخی ممکن است اجازه دهند ویژگیها
(ماژولهای) از HTML در داخل سند استفاده شوند.
نکته: آن را در مرورگر خود امتحان کنید
ویژگی کلاس
که به شما امکان می دهد زیر کلاس های عناصر را در
HTML ایجاد کنید، در اکثر فرمت های سند مبتنی بر XML نیز وجود ندارد.
البته، CSS به شما امکان میدهد عناصر را بر اساس هر ویژگی، نه فقط
کلاس
انتخاب کنید، اما سینتکس راحتتر است.
به عنوان مثال. اگر یک ویژگی کلاس
وجود داشته باشد و
فرمت سند مشخص کند که مانند HTML کار می کند، می توانیم از نماد با
نقطه استفاده کنیم. (بنابراین، این مثال خاص کار نخواهد کرد، زیرا
<doc> قالبی نیست که مرورگرها آن را به عنوان چیزی که دارای
) کلاس
) است بشناسند)
<?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>
اگر فرمت سند مشخص نمی کند که کلاس
یک زیر کلاس ایجاد
می کند، باید از انتخابگرهای طولانی تر با "[ ]" استفاده کنید:
<?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>
اگر ویژگی کلاس
وجود نداشته باشد، اما چیز دیگری وجود
دارد که می توانیم استفاده کنیم، انتخابگرهای ویژگی "[ ]" همچنان اعمال
می شوند:
آن را در مرورگر خود امتحان کنید
<?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>
ایجاد شده در 29 فوریه 2000;
اخرین به روز رسانی یکشنبه ۱۶ فوریه ۲۵،
۰۵:۴۱:۰۹