您的位置:首页 > 其它

[XSL技巧]获得上一层节点(父节点)的位置

2006-08-13 14:58 183 查看
通常,我们可以用position()函数来返回当前节点在同层节点中的位置,但是当因为某些需求的情况下,假如要获得上层节点(父节点)的位置,position()就施展不开了,此时则需要一点技巧来解决这个问题。下面就是一个如何获得上层节点的例子。

XML:

<?xml version="1.0" encoding="gb2312"?>
<?xml-stylesheet type="text/xsl" href="xsl.xsl"?>
<root>
<item>a
<itemc/>
</item>
<item>b
<itemc/>
</item>
<item>c
<itemc/>
</item>
<item>d
<itemc/>
</item>
<item>e
<itemc/>
</item>
</root>

xsl.xsl:

<?xml version="1.0" encoding="gb2312"?>
<!DOCTYPE xsl:stylesheet [
<!ENTITY nbsp " ">
<!ENTITY copy "©">
<!ENTITY reg "®">
<!ENTITY trade "™">
<!ENTITY mdash "—">
<!ENTITY ldquo "“">
<!ENTITY rdquo "”">
<!ENTITY pound "£">
<!ENTITY yen "¥">
<!ENTITY euro "€">
]>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" encoding="gb2312"/>
<xsl:template match="/">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="root">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="item">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="itemc">
<xsl:call-template name="getFatherPosition"/>
<br />
</xsl:template>

<xsl:template name="getFatherPosition">
<xsl:variable name="Name" select="name(..)"/>
<xsl:variable name="Position" select="count(../preceding-sibling::*[name()=$Name])+1"/>
<xsl:value-of select="$Position"/>
</xsl:template>
</xsl:stylesheet>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐