黑马程序员技术交流社区

标题: XSLT的使用 [打印本页]

作者: 黑马_黄开潮    时间: 2012-12-2 20:54
标题: XSLT的使用
本帖最后由 黑马_黄开潮 于 2012-12-2 20:56 编辑

使用XSL对XML进行样式控制和格式化XML文档,首先需要创建一个XML文档,这里XML文档代码如下所示。
<?xml version="1.0" encoding="utf-8" ?>
<Root>
    <ShopInformation area="Asia">
        <Shop place="Shanghai" value="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文档.

创建XSLT文件后,系统会自动生成代码,示例代码如下所示。
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl">
    <xsl: output method="xml" indent="yes"/>
    <xsl:template match="@* | node()">
        <xsl:copy>
            <xsl:apply-templates select="@* | node()"/>
        </xsl:copy>
    </xsl:template>
</xsl:stylesheet>
上述代码将XSLT文件的输出方法设置为XML,为了能够方便对XML页面进行样式控制,可以将输出方法设置为HTML,XSLT文件示例代码如下所示。
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl">
    <xsl: output method="html" indent="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 version="1.0" encoding="utf-8"?>
同样XSLT也需要进行声明,示例代码如下所示。
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl"
>
声明XSLT文件后,则可以编写XSLT文件的输出属性,创建时默认为XML,如果需要通过XSLT文件进行XML样式控制,则需要更改为HTML,示例代码如下所示。
    <xsl: output method="html" indent="yes"/>
编写XSLT文件的输出属性后,就可以编写XSL的模板,模板可以自定义标签也可以使用HTML标签。在编写模板时,需要指定模板规则的作用点,通过配置match属性可以配置模板规则的作用点,示例代码如下所示。
    <xsl:template match="/Root/ShopInformation">
从XML文件可以看出,根节点为Root,根节点Root下有一个ShopInformation节点,为了显示Shop节点的数据,则需要在模板规则的作用点的match属性设置路径。模板中,在需要呈现XML文档中相应节点的值可以使用<xsl:value-of>元素进行呈现,<xsl:value-of>元素将拷贝XML文档中相应的节点的值到该元素,并替换后呈现给浏览器,示例代码如下所示。
                <xsl:value-of select="Shop"/>
上述代码首先会通过模板路径找到相应节点,在这里使用select属性声明所要找到的节点名称,如<xsl:value-of select="Shop"/>,找到Shop节点后会将Shop节点的值替换<xsl:value-of select="Shop"/>,呈现给浏览器。在XML文档中,需要声明外部XSLT文件才能在访问XML页面时正确的解释标签,示例代码如下所示。
<?xml-stylesheet type="text/xsl" href="XSLTFile1.xslt"?>
直接在浏览器中浏览XSLT文件,则可以看到XSLT的结构树,如图14-7所示。XSLT文件制作了XML页面呈现时所需要的样式,从另一个角度来说,当用户在XML页面中定义了标签后,浏览器并不能解释这个标签,而可以通过XSLT文件告知浏览器如何解释自定义标签并呈现到页面.

作者: 许庭洲    时间: 2012-12-2 22:19
值得学习ing!
作者: 快乐之恋    时间: 2012-12-3 17:47
值得学习




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2