XSL概述(一)

来源:互联网 发布:护士资格考试题库软件 编辑:程序博客网 时间:2024/06/04 19:30

XSL,EXtensible Stylesheet Language,可扩展样式语言。

你说他是样式吧,他说他是语言,因为他支持表达式和执行逻辑;

你说他是语言吧,他还真能实现类似把一个word文件变成pdf的功能。

下面是一个简单的XSL文件:

<?xml version="1.0" encoding="utf-8"?>

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

  <xsl:template match="/">

<html><head><title></title></head><body/></html>

  </xsl:template>

</xsl:stylesheet>

从上文xsl范例中可以发现:

xsl一是个xml文件,第一行就是一个标准的xml声明;

w3c对xsl有个国际标准,一般来说,这个名称空间的alias为xsl;

相应的,还有一些transform的标准,比如微软自己的xml解析器支持的:xmlns:msxsl="urn:schemas-microsoft-com:xslt"

在java里,那就更开放了,凡是所有的静态方法,全部可以在xsl里使用,例如定义一个名称空间 xmlns:yizi="java.net.URLEncoder",然后我们就可以在xsl主体中写 <xsl:value-of select="yizi:encode('http://www.baidu.com')"/>

问题一:用上文提到的java名称空间定义范例,写了一个xsl文件,在IE浏览器中解析的效果是什么?为什么会出现这种效果?

 

<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="sample.xsl"?>
<html xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="D:/gz_wap.xsd">
        <head>
            <title/>
        </head>
    <body>
        <a href="http://forum.csdn.net/BList/Enterprise" id="a1">企业开发大论坛</a>
    </body>
</html>

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" xmlns:yizi="java.net.URLEncoder">
    <xsl:output method="html"/>
  <xsl:template match="/">
        <html>
            <body>
                title==<xsl:value-of select="//a/text()"/><br/>
                href==<xsl:value-of select="//a/@href"/><br/>
                urlencode==<xsl:value-of select="yizi:encode(//a@href)"/>
            </body>
        </html>
  </xsl:template>
</xsl:stylesheet>

最常用的结点

范例xml:

<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="sample.xsl"?>
<html>
        <head>
            <title/>
        </head>
    <body>
        <a href="http://forum.csdn.net/BList/Enterprise" id="a1">企业开发大论坛</a>
        <a href="" id="a2">空连接</a>
        <a href="http://www.baidu.com" id="a3">baidu</a>
    </body>
</html>

<xsl:for-each>

 

<xsl:if>

  如果<a>的href属性为空,则不显示

显示格式为:title==企业开发大论坛, href==http://forum.csdn.net/BList/Enterprise

<xsl:choose>

显示所有有href属性的<a>标签的href和text(),没有href属性的显示text(),并注明其href为空

显示格式为:title==企业开发大论坛, href==http://forum.csdn.net/BList/Enterprise

                 title==baidu, href==空

原创粉丝点击