<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 閱讀(195) 評論(0)  編輯  收藏 所屬分類: XML

    主站蜘蛛池模板: 一级女性全黄久久生活片免费 | 国产色爽免费无码视频| 免费观看国产精品| 老牛精品亚洲成av人片| 亚洲高清无码在线观看| 美女黄色免费网站| 亚洲国产主播精品极品网红| 人人鲁免费播放视频人人香蕉| 亚洲男人的天堂一区二区| 有色视频在线观看免费高清在线直播 | 亚洲av日韩av无码| 十九岁在线观看免费完整版电影| 亚洲AV福利天堂一区二区三| 91人成网站色www免费下载| 亚洲综合久久一本伊伊区| 免费看香港一级毛片| 免费中文字幕视频| 国产亚洲无线码一区二区| 在免费jizzjizz在线播| 亚洲一卡2卡3卡4卡5卡6卡| 国产做床爱无遮挡免费视频| 精品国产污污免费网站入口在线 | 亚洲第一永久在线观看| 动漫黄网站免费永久在线观看| 亚洲日韩看片无码电影| 亚洲JIZZJIZZ中国少妇中文| 免费播放在线日本感人片| 亚洲国产人成在线观看| 日韩在线a视频免费播放| 久久www免费人成看国产片| 亚洲综合视频在线| 国产精品国产自线拍免费软件| 国产成人无码免费看片软件| 亚洲色偷偷av男人的天堂| 暖暖免费高清日本一区二区三区| 成人网站免费大全日韩国产| 亚洲精品伊人久久久久| 精品国产亚洲男女在线线电影| 69式互添免费视频| 一级一片免费视频播放| 亚洲av永久综合在线观看尤物|