14.4 XML样式表XSL

  XSL是XML的样式表语言,这种定义很像HTML中的CSS。XSL转换就是XSLT,XSLT是XSL标准中的重要组成部分,它可以把一个XML文档的数据以不同结构或格式转换为另一个文档,通过使用XSL能够将XML进行格式化输出。

14.4.1 XSL简介
  与HTML样式相比,XML样式要更加复杂,HTML中标记的含义都是固定的,而XML允许开发人员能够自行创建标签,所以用样式控制XML会比在HTML控制更加复杂。
1.XSL与HTML
  HTML样式控制通常是使用CSS层叠样式表进行控制,而XML中的样式控制通常使用XSL文档进行控制,HTML中的CSS和XML中的XSL有以下特征:
1)CSS:用于HTML样式控制,由于HTML标签事先是规定好的,所以浏览器知道如何显示HTML样式,如在HTML文档中,<table></table>标签能够以表格的形式呈现在客户端浏览器。
2)XSL:用于XML样式控制,由于XML的标签不是事先规定好的,所以XML文档中的标记并不能被浏览器理解,如XML文档中的<table></table>并不会被浏览器解释成表格。
相比于CSS而言,XSL能够作为XML文件的样式表而存在,而XSL又不仅仅需要提供样式控制,还需要提供XML文档的方法等,XSL包括3部分,这3部分分别为:
3)转换XML文档的方法。
4)定义XML部分和模式的方法。
5)格式化XML文档的方法。
2.XSLT
  XSLT翻译为可扩展样式语言转换,XSL包含三种语言,其中最重要的是XSLT。XSL转换实际上就是XSLT,在Visual Studio 2008中,可以直接创建XSLT文件对XML文件进行样式控制,定义部分和模板方法。
  XSLT可以将一个XML文档的数据以不同的结构或格式转换为另一个文档格式,如HTML。为了让XML文件能够格式化输出到浏览器并能够进行样式控制,XSLT能够对XML进行样式控制,通过编写模板,以及简易的编程控制就能够读取XML中节点的数据并重新组织,当用户访问XML文件时,能够同HTML一样被浏览器解释并呈现到客户端浏览器。
3.XSLT与XSL
  XSLT是XSL中最重要的语言,也是XSL中最重要的组成部分,简而言之,XSL通过XSLT将一个XML源中的数据重新组织并呈现成另一种XML样式。

14.4.2 使用XSLT
  使用XSL对XML进行样式控制和格式化XML文档,首先需要创建一个XML文档,这里XML文档代码如下所示。
+展开
-XML
<?xml version="1.0" encoding="utf-8" ?>
<Root>
    <ShopInformation area="Asia">
        <Shop place="Shanghaivalue="Wuhan">
            <Name>上海电脑</Name>
            <Phone>123456789</Phone>
            <Seller>J.Dan</Seller>
            <Seller>Bill Gates</Seller>
        </Shop>
        <Shop place="Wuhan">
            <Name>广埠屯</Name>
            <Phone>123456789</Phone>
            <Seller>Bill Gates</Seller>
        </Shop>
    </ShopInformation>
</Root>

创建完成XML文档后则需要创建XSL文档,如图14-6所示。
创建XSLT文件
图14-6 创建XSLT文件
  创建XSLT文件后,系统会自动生成代码,示例代码如下所示。
+展开
-XML
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:msxsl="urn:schemas-microsoft-com:xsltexclude-result-prefixes="msxsl">

    <xsl:output method="xmlindent="yes"/>
    <xsl:template match="@* | node()">
        <xsl:copy>
            <xsl:apply-templates select="@* | node()"/>
        </xsl:copy>
    </xsl:template>
</xsl:stylesheet>

  上述代码将XSLT文件的输出方法设置为XML,为了能够方便对XML页面进行样式控制,可以将输出方法设置为HTML,XSLT文件示例代码如下所示。
+展开
-XML
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:msxsl="urn:schemas-microsoft-com:xsltexclude-result-prefixes="msxsl">

    <xsl:output method="htmlindent="yes"/>
    <xsl:template match="/Root/ShopInformation">
        <head>
            <title>
                一个XSLT样例
            </title>
        </head>
        <body>
            <div style="border:1px solid #ccc; padding:5px 5px 5px 5px;font-size;14px;">一个XSLT样例</div>
            <div style="padding:5px 5px 5px 5px;font-size;12px;">
                <xsl:value-of select="Shop"/>
            </div>
        </body>
    </xsl:template>
</xsl:stylesheet>

  上述代码使用了XSLT文件对XML文件进行样式控制,首先需要声明XSLT文件,因为XSLT文件同样是基于XML的,所以在文件头部必须进行声明,示例代码如下所示。
+展开
-XML
<?xml version="1.0" encoding="utf-8"?>

  同样XSLT也需要进行声明,示例代码如下所示。
+展开
-XML
<xsl:stylesheet version="1.0xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:msxsl="urn:schemas-microsoft-com:xsltexclude-result-prefixes="msxsl">

  声明XSLT文件后,则可以编写XSLT文件的输出属性,创建时默认为XML,如果需要通过XSLT文件进行XML样式控制,则需要更改为HTML,示例代码如下所示。
+展开
-XML
    <xsl:output method="htmlindent="yes"/>

  编写XSLT文件的输出属性后,就可以编写XSL的模板,模板可以自定义标签也可以使用HTML标签。在编写模板时,需要指定模板规则的作用点,通过配置match属性可以配置模板规则的作用点,示例代码如下所示。
+展开
-XML
    <xsl:template match="/Root/ShopInformation">

  从XML文件可以看出,根节点为Root,根节点Root下有一个ShopInformation节点,为了显示Shop节点的数据,则需要在模板规则的作用点的match属性设置路径。模板中,在需要呈现XML文档中相应节点的值可以使用<xsl:value-of>元素进行呈现,<xsl:value-of>元素将拷贝XML文档中相应的节点的值到该元素,并替换后呈现给浏览器,示例代码如下所示。
+展开
-XML
 <xsl:value-of select="Shop"/>

  上述代码首先会通过模板路径找到相应节点,在这里使用select属性声明所要找到的节点名称,如<xsl:value-of select="Shop"/>,找到Shop节点后会将Shop节点的值替换<xsl:value-of select="Shop"/>,呈现给浏览器。在XML文档中,需要声明外部XSLT文件才能在访问XML页面时正确的解释标签,示例代码如下所示。
+展开
-XML
<?xml-stylesheet type="text/xsl" href="XSLTFile1.xslt"?>

  直接在浏览器中浏览XSLT文件,则可以看到XSLT的结构树,如图14-7所示。XSLT文件制作了XML页面呈现时所需要的样式,从另一个角度来说,当用户在XML页面中定义了标签后,浏览器并不能解释这个标签,而可以通过XSLT文件告知浏览器如何解释自定义标签并呈现到页面,XML文件在浏览器中运行结果如图14-8所示。
XSLT结构树
图14-7 XSLT结构树
XML文件格式化输出
图14-8 XML文件格式化输出
  注意:IE 5.0以下版本的浏览器很可能无法浏览结构树,如果需要在浏览器中直接浏览XSLT文件或XML文件,需要IE 5.0以上版本。

加支付宝好友偷能量挖...


评论(0)网络
阅读(192)喜欢(0)Asp.Net/C#/WCF