网络编程
位置:首页>> 网络编程>> XML编程>> 使用 XSLT 解释 XML 文件

使用 XSLT 解释 XML 文件

 来源:快乐笛子的博客 发布时间:2009-03-08 19:06:00 

标签:xslt,xml,文件,浏览器

我们平常用 IE 打开一个普通的本地 xml 文件,其形式通常都是如下图:

默认样式看得多了就不觉得有什么特别。但对于少接触 xml 的人来说,上图还是有很多疑问之处。比如,为什么有加减号?为什么IE会弹出安全警告?为什么标签是这种棕赤色并且数据都是加粗的黑色?
诸如此类的问题,在学习 XSLT 之前,确实不好回答。

XSLT 被定义为 XML 转换器的角色,专门负责把 XML 数据转换为其他形式的数据,最常见的就是转换为 HTML 代码。 这里有 W3C 的 XSLT1.0 详细文档,我就不赘述了,下面是利用 XSLT 的规则,把上面的 XML 文档按照 IE 的默认样式,也来展示一遍。



为了体现与 IE 默认样式的不同,特意画蛇添足地加上勾选框。至于为什么会IE的有安全警告,那是因为需要在本地执行 JavaScript 语句,浏览器不能判定这些脚本是否带来恶意攻击,就默认关闭脚本解释引擎并给出警告。因为上图的加减号我增加了展开与收缩的事件。

因为上例的 XSLT 并不单独针对某个 xml 数据制作,因此把上面的 XSLT 作用与其他 XML 也有同样的效果,即通用的 xml 解释器!(呵呵,言重了,因为该 XSLT 文件并没有解释节点的属性)

由于 XML 可以具有树形结构,因此遍历节点就必须用到递归方法,XSLT 本身是支持递归的,这也是本例的关键之处:

 

<xsl:template name="TreeHTML"> 
<xsl:param name="x" /> 
<li> 
<xsl:choose> 
<xsl:when test="count($x/*)>0"> 
<a href="javascript:void(0)" onclick="switchSubNode(this)">-</a><input type="checkbox" /><em>&lt;</em><span><xsl:value-of select="name($x)"/></span><em>&gt;</em> 
<ul> 
<xsl:for-each select="$x/*"> 
<xsl:call-template name="TreeHTML"> 
<xsl:with-param name="x" select="." /> 
</xsl:call-template> 
</xsl:for-each> 
</ul> 
<em>&lt;</em><span>/<xsl:value-of select="name($x)"/></span><em>&gt;</em> 
</xsl:when> 
<xsl:otherwise> 
<a href="javascript:void(0)" onclick="switchSubNode(this)">-</a> 
<xsl:choose> 
<xsl:when test="string-length($x)>0"> 
<em>&lt;</em><span><xsl:value-of select="name($x)"/></span><em>&gt;</em><strong><xsl:value-of select="$x" /></strong><em>&lt;</em>/<span><xsl:value-of select="name($x)"/></span><em>&gt;</em> 
</xsl:when> 
<xsl:otherwise> 
<em>&lt;</em><span><xsl:value-of select="name($x)"/></span> /<em>&gt;</em> 
</xsl:otherwise> 
</xsl:choose> 
</xsl:otherwise> 
</xsl:choose> 
</li> 
</xsl:template>

例子下载 | 直接访问

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com