<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Vincent.Chan‘s Blog

    常用鏈接

    統計

    積分與排名

    網站

    最新評論

    技巧:組合和替換 xml-stylesheet 處理指令::為不同用戶提供不同視圖

    級別: 中級

    Elliotte Rusty Harold, 副教授, Polytechnic University

    2005 年 8 月 18 日

    在文檔序言中插入多個 xml-stylesheet 處理指令,為不同用戶提供不同的視圖。本文還將說明如何包括偽屬性來調整表示。

    把內容與表示分離是 XML 的一個主要目標,XML 完美地實現了這一目標。一個文檔并不限于只使用一個樣式表,可以針對不同讀者和環境提供多個樣式表。本文將說明如何在 XML 文檔序言中包含多個 xml-stylesheet 處理指令,這些指令分別指向用于不同上下文的不同樣式表。

    xml-stylesheet 處理指令

    多數 XML 開發人員都非常熟悉 xml-stylesheet 處理指令:

    												<?xml-stylesheet type="text/css" href="mystyles.css"?>
    										

    將該指令放在 XML 文檔的序言中,在瀏覽器中打開該文檔時,瀏覽器就會從相對的 URL mystyles.css 中加載樣式表,并用它格式化文檔和顯示。這種功能得到了基本上所有現代 Web 瀏覽器的支持,除了 Lynx 以外。

    但不那么眾所周知的是,并不限定您只使用一個樣式表。序言中可以包括多個 xml-stylesheet 處理指令。如果其中有多個指令指向 CSS,那么可以將每個樣式表中的規則組合在一起。這種行為非常適合模塊化。比如,可以導入一個樣式表來處理文檔中數學方面的樣式,并導入另一個樣式表來設置文檔中的文本樣式:

    												<?xml-stylesheet type="text/css" href="mathstyles.css"?>
    <?xml-stylesheet type="text/css" href="textstyles.css"?>

    如果有兩個(或更多)樣式表中的樣式規則發生了沖突,那么序言中最后出現的那個樣式表將優先考慮。

    使用指向不同 XSLT 樣式表或者同時包含指向 XSLT 樣式表和 CSS 樣式表的 xml-stylesheet 處理指令也是可能的。但是,我不建議這樣做。瀏覽器是不一致的,甚至無法預測會選擇哪一個樣式表,雖然通常不會優先選擇 XSLT 樣式表。





    回頁首


    alternate 偽屬性

    偽屬性

    之所以稱為屬性,是因為處理指令不是元素,只有元素才能有屬性。

    為了更容易理解一些,可使用 alternate 和/或 media 偽屬性。alternate 偽屬性的值可以是 yes 或 no:如果是 yes,那么處理指令引用的替換樣式表只在用戶要求時才會加載;否則處理指令引用的樣式表就是默認加載的基本樣式表。

    比如,下面兩個處理指令規定了默認表示和大字體的替代表示:

    												<?xml-stylesheet type="text/css" href="regular.css"?>
    <?xml-stylesheet type="text/css" href="bigfonts.css"
    alternate="yes"?>

    這樣做的時候還要包括 title 偽屬性,該屬性將告訴用戶如何對樣式表進行區分。比如:

    												<?xml-stylesheet type="text/css" title="Regular fonts" 
    href="regular.css"?>
    <?xml-stylesheet type="text/css" title="Extra large title fonts"
    href="bigfonts.css" alternate="yes"?>

    瀏覽器應該允許用戶選擇使用哪一種樣式表。對于 Mozilla 和 Firefox,可以在 View > Page Style 菜單中找到該選項。Microsoft? Internet Explorer 和 Safari 沒有提供該選項(使用默認樣式表)。





    回頁首


    media 偽屬性

    xml-stylesheet 處理指令還可以使用 media 偽屬性,表明樣式表適用的環境。比如,可以用一個樣式表格式化文檔,在一般的桌面或膝上監視器上顯示文檔,并用另一個樣式表在紙上打印該文檔,第三個樣式表則將文檔投影到面對聽眾的墻上。下面的文檔序言提供了所有這三種樣式選擇:

    												<xml version="1.0"?>
    <?xml-stylesheet type="text/css" media="screen"
    title="Regular fonts" href="regular.css"?>
    <?xml-stylesheet type="text/css" media="projection"
    title="Extra large fonts" href="bigfonts.css" alternate="yes"?>
    <?xml-stylesheet type="text/css" media="print"
    title="Smaller fonts" href="smallfonts.css" alternate="yes"?>

    在這種情況下,瀏覽器應該自動選擇適當的樣式表,不需要更多的用戶干預。

    media 偽屬性定義了 8 個值:

    • screen —— 最常見,現代桌面或膝上計算機的顯示器。
    • tty —— 定寬的終端,如 VT-100s 和 X-terms,適合于 Lynx。
    • tv —— WebTV 或者類似的技術。
    • projection —— 投影到大屏幕上。
    • handheld —— PDA、蜂窩電話和類似的小屏幕設備。
    • print —— 紙張。
    • braille —— 盲文屏幕讀者。
    • aural —— 聲音屏幕讀者。

    media 偽屬性的值之間用逗號分隔。比如,以下 xml-stylesheet 處理指令表示樣式表可用于手持設備和具有更大位圖顯示設備的計算機:

    												<xml-stylesheet type="text/css" media="handheld, screen" 
    href="styles.css"?>

    此外,還可使用 media="all" 表示樣式表適用于所有媒體。(如果沒有出現 media 偽屬性,則該屬性為默認屬性。)當然,瀏覽器可能忽略不能理解的樣式規則。即使 font-size: 14pt 出現在 media="aural" 的樣式表中,屏幕瀏覽器也會忽略它。

    最后,還可以為這個偽屬性定義新的、自定義的值。比如,可使用 three-d 這樣的值來引用一個用于顯示器的樣式表,該顯示器使用兩個嵌套 LCD 面板來表示三維圖像。但是,不是所有瀏覽器都能識別這個值。這一功能吸引的主要是瀏覽器廠商,他們可以定義自定義的值來識別自己使用的擴展,對單個 Web 開發人員來說,這一功能沒有多少用處。





    回頁首


    結束語

    XML 的最初目標之一是將內容與表示分離。它允許對同一文檔應用多個樣式表,從而為不同的用戶提供不同的視圖。在文檔中添加多個 xml-stylesheet 處理指令是實現該任務的一種方法。





    回頁首


    參考資料





    回頁首


    關于作者


    Elliotte Harold 出生在新奧爾良,現在,他還定期回老家喝一碗美味的秋葵湯。不過目前,他與妻子 Beth 定居在紐約臨近布魯克林的 Prospect Heights,與他們住在一起的還有貓咪 Charm(取自夸克)和 Marjorie(按照他岳母的名字)。他是 Polytechnic 大學計算機科學的副教授,講授 Java 技術和面向對象編程。他的 Cafe au Lait 網站是 Internet 上最受歡迎的獨立 Java 站點之一,姊妹站點 Cafe con Leche 是最受歡迎的 XML 站點之一。他的著作包括 Effective XMLProcessing XML with JavaJava Network ProgrammingThe XML 1.1 Bible 。他目前正在研究處理 XML 的 XOM API 和 Jaxen XPath 引擎。

    posted on 2006-03-21 23:27 Vincent.Chen 閱讀(196) 評論(0)  編輯  收藏 所屬分類: XML

    主站蜘蛛池模板: 成人免费乱码大片A毛片| 亚洲日韩一中文字暮| 亚洲日产2021三区在线| 亚洲午夜国产精品| 亚洲AV永久无码精品放毛片| 一级特黄录像免费播放中文版| 中国一级特黄高清免费的大片中国一级黄色片| 黄色免费在线网站| 日韩毛片免费无码无毒视频观看 | 日本三级2019在线观看免费| 好爽又高潮了毛片免费下载| 亚洲av日韩片在线观看| 亚洲国产精品va在线播放| 亚洲免费中文字幕| 曰批全过程免费视频观看免费软件| baoyu116.永久免费视频| 无码区日韩特区永久免费系列 | 国产成人免费高清激情明星| 日韩免费观看视频| 国产亚洲精品xxx| 亚洲国产日韩精品| av成人免费电影| 黄在线观看www免费看| 亚洲AV无码专区日韩| 亚洲精品线在线观看| 亚洲AV成人无码久久WWW| 最新久久免费视频| 18禁成年无码免费网站无遮挡| 亚洲欧洲精品成人久久奇米网| 亚洲精品在线播放| 日本特黄特色AAA大片免费| 2015日韩永久免费视频播放| 亚洲成a人片在线观看久| 亚洲精品视频专区| 无码 免费 国产在线观看91| 国产高清不卡免费在线| 相泽亚洲一区中文字幕| 日韩亚洲国产综合高清| 国产免费无码一区二区| 日本免费人成黄页网观看视频| 亚洲综合久久综合激情久久|