preceding轴--前驱轴,following轴--后继轴。
preceding轴是参照物是上下文节点,另外,前驱是指完全处在上下文节点前面的节点。这里的完全意思是end-tag处在上下文之前的节点。
<people>
<person>
<name>joe</name>
<age>21</age>
</person>
<person>
<name>mark</name>
<age>25</age>
</person>
</people>
XSTL文件:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<xsl:apply-templates select="people/person[name='mark']/age"/>
</xsl:template>
<xsl:template match="age">
<xsl:for-each select="preceding::*">
<xsl:text> </xsl:text>
<xsl:value-of select="name()"/>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
输出结果是什么呢?是不是people person name age person name呢?当然不是,正确的结果应该是:person name age name。对于上下文节点age[.=25]来说,虽然people和第二个person都在它的前面,但是它们的end-tag并不处在age[.=25]之后,所以它们不是age[.25]的前驱轴上的节点。我们还可以得出前驱轴和祖先节点是没有交集这样一个结论。
同理,后继轴following也是要求轴上的节点完全的处在它之后。