选择父母兄弟姐妹的ID

时间:2015-01-26 18:31:53

标签: xml xslt xpath

我对XSLT比较陌生,找到前兄弟::非常痛苦。

使用一个非常简单的示例XML:

<month>
    <day id="1">Day one was a lovely day</day>
    <day id="2">Day two was balls</day>
    <day id="3">Day three was Wednesday</day>
</month>

一些基本的XSLT(我想每天输出到一个新文件:没问题):

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
    <xsl:template match="/month">
       <xsl:for-each select="day">
           <xsl:result-document href="output/day-{@id}/index.html">
               <xsl:call-template name="page" />
           </xsl:result-document>
       </xsl:for-each>
    </xsl:template>


    <xsl:template name="page">
        <html>
            <head>
                <title>This is <xsl:value-of select="id" /></title>
            </head>
            <body>
                <h1>Day of new <xsl:value-of select="@id" /></h1>
                <p><xsl:value-of select="." /></p>

                <!--PROBLEM HERE:: -->
                Previous: <xsl:value-of select="" />

            </body>
        </html>
    </xsl:template>    
</xsl:stylesheet> 

我遇到的问题是最后一点(我在这里写了问题)。我想要获得前一天的身份证。我似乎无法获得正确的select值。我已经尝试了ancestor::../preceding-sibling::day[1]的所有组合,我可以在任何地方找到它。请帮忙!

1 个答案:

答案 0 :(得分:1)

使用以下内容:

<xsl:value-of select="preceding-sibling::day[1]/@id"/>

只是第一个没有任何值,因为没有前兄弟day