与css相比,xsl需要什么?

时间:2010-11-10 18:27:10

标签: css xslt

我碰巧遇到了一些代码片段,并且在使用css完成同样的事情时无法理解xsl的需要。 例如

<?xml-stylesheet type = "text/css" href = "6a.css" ?>
<ENG-COLLEGE>
   <XYZ>
     <USN>145456</USN>
     <NAME>ABC</NAME>
     <COLLEGE>TYUIT</COLLEGE>
     <BRANCH>ISE</BRANCH>
     <YEAR>2003</YEAR>
     <EMAIL>abc@gmail.com</EMAIL>
   </XYZ>
<ENG-COLLEGE>

用于样式化的等效CSS代码

USN{font-family:'sans serif';color:orange;font-size:15pt;}
NAME{font-family:'arial';color:red;font-size:15pt;}
COLLEGE{font-family:'Times New Roman';color:lime;font-size:15pt;}
BRANCH{font-family:'Comic Sans MS';color:gray;font-size:15pt;}
YEAR{font-family:'Century Gothic';color:blue;font-size:15pt;}
EMAIL{font-family:'Georgia';color:green;font-size:15pt;}

虽然使用xsl可以实现相同的样式,但涉及更多行代码

<xsl:stylesheet version = "1.0"
         xmlns:xsl = "http://www.w3.org/1999/XSL/Transform"
         xmlns = "">

 <xsl:template match = "ENG-COLLEGE">

   <html><head><title>Test XSL</title>
    </head><body bgcolor="lightgreen">
   <center><h2>INFORMATION </h2>
    <table border="1">

<tr><td>USN</td><td>NAME</td><td>COLLEGE</td><td>BRANCH</td><td>YEAR</td>    <td>EMAIL</td></tr>

     <xsl:for-each select ="VTU">
     <tr>
       <td> <xsl:value-of select = "USN" /></td>
    <td><xsl:value-of select = "NAME" /></td>
    <td><xsl:value-of select = "COLLEGE" /></td>
    <td> <xsl:value-of select = "BRANCH" /></td>
   <td><xsl:value-of select = "YEAR" /></td>
   <td><xsl:value-of select = "EMAIL" /></td>
      </tr>
      </xsl:for-each>

     </table>

      </center>
      </body></html>

     </xsl:template>
      </xsl:stylesheet>

我在这里错过了一些东西,我的意思是为什么任何人都会使用xsl进行样式,因为css可以让这项工作变得如此简单。

2 个答案:

答案 0 :(得分:6)

CSS应用样式和定位。 XSLT将一个XML文档转换为另一个XML文档。他们根本没做同样的工作。

答案 1 :(得分:1)

  

我碰巧经历了一些事情   代码片段,无法理解   同样的事情需要xsl   可以使用CSS完成。例如

一般来说,面向CSS的示例的真实情况并非如此。 如果您的输入XML包含许多<XYZ>元素:

<ENG-COLLEGE>
   <XYZ>
     <USN>145456</USN>
     <NAME>ABC</NAME>
     <COLLEGE>TYUIT</COLLEGE>
     <BRANCH>ISE</BRANCH>
     <YEAR>2003</YEAR>
     <EMAIL>abc@gmail.com</EMAIL>
   </XYZ>
   <XYZ>
     <USN>145456</USN>
     <NAME>DEF</NAME>
     ...
   </XYZ>
   etc.
</ENG-COLLEGE>

并且您需要生成这些记录的表格,按NAME元素的内容排序,省略YEAR在2000之前的那些记录,其中EMAIL地址被包围一个“mailto”链接......你会如何在CSS中做到这一点?