本帖最后由 黑马_黄开潮 于 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文件告知浏览器如何解释自定义标签并呈现到页面.
|