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

    >> 关于 XML 的一般性技术讨论,提供 XML入门资料 和 XML教程
    [返回] 中文XML论坛 - 专业的XML技术讨论区XML.ORG.CN讨论区 - XML技术『 XML基础 』 → CSS与XSL简述(各自用途与优缺点)(转) 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 9741 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: CSS与XSL简述(各自用途与优缺点)(转) 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     diegor 帅哥哟,离线,有人找我吗?白羊座1979-4-10
      
      
      威望:4
      等级:大二(研究C++)|大二(研究汇编)
      文章:266
      积分:806
      门派:XML.ORG.CN
      注册:2004/3/3

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给diegor发送一个短消息 把diegor加入好友 查看diegor的个人资料 搜索diegor在『 XML基础 』的所有贴子 引用回复这个贴子 回复这个贴子 查看diegor的博客楼主
    发贴心情 CSS与XSL简述(各自用途与优缺点)(转)

    我们非常清楚的是在XML中内容与表现形式是分开的。这就使得不同的用户可以根据他们自己的需要来定义数据的表现形式。在一个XML的源文件中并没有关于它表现形式的信息。这一点我们可以从下面例子中看出。

    例一:在HTML中的一段代码

    <H1>Car Register</H1>

    <H2>Make: Saab 9000 </H2>

    <H2>Model: 1995</H2>

    <H2>Owner:</H2>

    <p>Kalle Karlsson

      G?tgatan 1

    11111 Stockholm

    </p>

    这是一段典型的HTML代码。在每一个tag(标签)中都含有表现形式的信息,而关于tag之间联系和结构信息却没有了。这事实上约束了HTML的发展。

    例二:在XML中的一段代码

    <Car Register>

    <Car>

    <Registration Number>ABC123 </Registration Number>

    <Make>Saab 9000</Make>

    <Model>1995 </Model>

    <Owner>

    <Name>Kalle Karlsson </Name>

    <Address>G?tgatan 1 </Address>

    <Zip code>11111 </Zip code>

    <City>Stockholm </City>

    </Owner>

    </Car>

    </Car Register>

    在XML文件之中tag中的信息是非常纯的。它没有表现部分。所以说有人称XML为传输知识的语言。

    那么XML文件是怎样表现的呢?

    XML文件的所有表现信息多发放在了stylesheet(样式表)文件当中。stylesheet文件全权负责XML源文件的表现形式。所以说如果一个XML源文件对应不同的stylesheet文件它就会有不同的表现形式. 有了stylesheet文件我们可以对文件表现型始终的大小,颜色,空白作特定的规定。

    在这篇文章中我们要来讨论的CSS(Cascading Style Sheets 层叠样式表)和XSL(XML Style Language 可扩展类型语言)就是两种stylesheet(样式表)语言。大家会想为什么会同时有两种语言。这不是重复了吗?其实它们是互相补充,各有特色的。CSS可以展现HTML 和XML文件,而XSL可以展现XML和Transformation(转型语言)。由此可见它们各有所长。

    我们还是来看看例子吧:

    例三:一段CSS代码

    H1 {

    font-size: 12pt;

    font-weight: bold;

    color: blue;

    }

    它规定了H1元素的字体大小,种类和颜色。当然CSS能做到的远不只这些。还有比如行距,空白大小等等。

    下面我们来看一个CSS结合XML源文件的例子。

    例四:一段XML源文件

    <?XML:stylesheet type="text/css" href="bach.css"?>

    ARTICLE

    <HEADLINE>Fredrick the Great meets Bach</HEADLINE>

    <AUTHOR>Johann Nikolaus Forke</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>

    例五:一段XSL代码,名为bach.css

    INSTRUMENT {display: inline}

    ARTICLE, HEADLINE, AUTHOR, PARA {display: block}

    HEADLINE {font-size: 1.3em}

    AUTHOR {font-style: italic}

    ARTICLE, HEADLINE, AUTHOR, PARA {margin: 0.5em}

    CSS中头两行规定了INSTRUMENT元素是实体的,而ARTICLE, HEADLINE, AUTHOR, PARA元素是虚体的。第三至第五行规定了HEADLINE元素的字体大小,AUTHOR元素是意大利字体,ARTICLE, HEADLINE, AUTHOR, PARA元素间空白有0.5em宽 在例四第一行,XML文件指明了它的stylesheet文件的类型与位置。这样CSS结合到了XML源文件上。

    但CSS与XSL相比,它有着一些不足。CSS适用于那些元素顺序不变的文件。对于那些需要经常按不同元素排序的文件,我们还是要用XSL。

    XSL是怎样工作的呢?

    XSL处理器把XML源文件通过XSL检验后产生一个HTML表现文件。这样XML源文件就在网络浏览器上有了表现。其实最终的目标并不只是产生HTML文件,而是可以各种各样的文件,比如Txt, Rtf. XML源文件中也有类似例四中的一行,

    比如是<?xml-stylesheet type="text/xsl" href="www.book.com/s1.xsl">用以指明了它的stylesheet文件的类型与位置。每一个XSL文件都包含了template rules(匹配模板规则)的集合。template rules包含有两个部分:Patterns和Actions。

    Patterns用以指出这个规则适用于那一个元素,Actions指出这个元素以及它的子元素要怎样展现。这样一来XML源文件中的结构树就被转换成了一个flow objects(流程产物)树。

    让我们再来看一个例子吧。

    例六:一段XSL代码。

    <?xml version="1.0">

    <HTML xmlns:xsl="http://www.w3.org/TR/WD-xsl">

    <BODY STYLE="font-family:Arial, helvetica, sans-serif; font-size:9.5pt;background-color:#FEEEEE">

    <xsl:for-each select="portfolio/stock">

    <DIV STYLE="background-color:teal; color:white; padding:4px">

    <SPAN STYLE="font-weight:bold; color:white">

    <xsl:value-of select="name"/></SPAN>

    -<xsl:value-of select="price"/>

    </DIV>

    <DIV STYLE="margin-left:10px; margin-bottom:1em; font-size:9pt">

    <xsl:value-of select="description"/>

    <SPAN STYLE="font-style:italic">

    (change:<xsl:value-of select="change"/>

    </SPAN>

    </DIV>

    </xsl:for-each>

    </BODY>

    </HTML>

    第二行是指明文件中标识的集合,又叫做Namespace(名域)。这可以使得同名标识不会冲突。

    值得一体的是,文件中还用到了选择语句(for-each select)在XML树结构中进行选择。

    相信大家读它不会遇到什么困难。


       收藏   分享  
    顶(0)
      




    ----------------------------------------------
    坚决支持XML!

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2004/4/6 13:45:00
     
     GoogleAdSense白羊座1979-4-10
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 XML基础 』的所有贴子 访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2025/3/16 5:23:34

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

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