[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>
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>
相关文章推荐
- Flex 如何获得Tree 拖动节点的起始位置
- 2D游戏获得子节点的最小最大位置
- 统计一个二叉树的每一层 节点个数(队列,递归)
- Tomcat 优化技巧,大大提升开发效率, 引用任意位置项目,
- vc获得控件相对窗体的位置
- 淘宝笔试题:一颗完全二叉树,要求给所有节点加上一个pNext指针,指向同一层的相邻节点;如果当前节点已经是该层的最后一个节点,则将pNext指针指向NULL
- UGUI之动态设置某个节点在其兄弟节点中的位置
- SpriteBuilder中节点位置类型为百分比时不能定位的解决
- ImageCache 源码分析_技巧获得
- Android 在 SElinux下 如何获得对一个内核节点的访问权限
- 通过js获得鼠标和控件位置
- SQL 遍历父子关系表(二叉树)获得所有子节点 所有父节点
- 【算法分析】如何理解快慢指针?判断linked list中是否有环、找到环的起始节点位置。以Leetcode 141. Linked List Cycle, 142. Linked List Cycle II 为例Python实现
- 获得textView的光标位置
- 面试题--完全二叉树的的最后一层的最右节点
- iphone 反向地理解析 从坐标获得用户的具体位置信息
- jQuery获得页面元素的绝对/相对位置 分类: JavaScript 2010-08-09 15:53 868人阅读 评论(0) 收藏
- 八个简单PS设计技巧,让你的图片获得新生
- unity 获得父子节点
- http://acm.hdu.edu.cn/showproblem.php?pid=1540 更新节点,询问节点所在的位置有多少连续的区间