新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   XML论坛     W3CHINA.ORG讨论区     计算机科学论坛     SOAChina论坛     Blog     开放翻译计划     新浪微博  
 
  • 首页
  • 登录
  • 注册
  • 软件下载
  • 资料下载
  • 核心成员
  • 帮助
  •   Add to Google

    >> 本版讨论XSL,XSLT,XSL-FO,CSS等技术
    [返回] 中文XML论坛 - 专业的XML技术讨论区XML.ORG.CN讨论区 - XML技术『 XSL/XSLT/XSL-FO/CSS 』 → 技巧:组合和替换 xml-stylesheet 处理指令(转) 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 1749 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: 技巧:组合和替换 xml-stylesheet 处理指令(转) 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     菜籽 帅哥哟,离线,有人找我吗?双鱼座1981-2-28
      
      
      威望:5
      头衔:软件民工
      等级:研二(Sowa的知识表示写得真好!)
      文章:875
      积分:5655
      门派:XML.ORG.CN
      注册:2004/7/25

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给菜籽发送一个短消息 把菜籽加入好友 查看菜籽的个人资料 搜索菜籽在『 XSL/XSLT/XSL-FO/CSS 』的所有贴子 点击这里发送电邮给菜籽 引用回复这个贴子 回复这个贴子 查看菜籽的博客楼主
    发贴心情 技巧:组合和替换 xml-stylesheet 处理指令(转)

    在文档序言中插入多个 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&reg; 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 处理指令是实现该任务的一种方法。


       收藏   分享  
    顶(0)
      




    ----------------------------------------------
    重拾英语...

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2005/8/23 20:09:00
     
     GoogleAdSense双鱼座1981-2-28
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 XSL/XSLT/XSL-FO/CSS 』的所有贴子 点击这里发送电邮给Google AdSense 访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2026/3/29 8:56:12

    本主题贴数1,分页: [1]

    管理选项修改tag | 锁定 | 解锁 | 提升 | 删除 | 移动 | 固顶 | 总固顶 | 奖励 | 惩罚 | 发布公告
    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) 旗 下 站 点
    苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    78.125ms