Xml 正在选择父级的前一个同级的ID

Xml 正在选择父级的前一个同级的ID,xml,xslt,xpath,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比较陌生,发现前面的兄弟::非常痛苦

使用一个非常简单的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> 
我的问题是我在这里写的问题的最后一部分。我想知道前一天的身份。我似乎无法获得正确的选择值。我已经尝试过祖先::和../previous sibling::day[1]的所有组合,我可以在任何地方找到提到的。请帮忙

使用以下命令:

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

只是第一个节点没有任何值,因为没有前一个同级日。

我没有检查此代码中是否有前一个节点,但假设它至少能在第2天和第3天工作,您不需要在月份进行匹配,因为您所做的只是处理它的子项,XSLT的内置模板规则将自动完成这项工作。删除for each on day和模板匹配on day,即。另外,如果我是你,我会将调用的模板提升到day模板中,这样就可以清楚地知道代码是在哪里执行的,而不必弄清楚它是从哪里调用的。现在可能很容易,但如果你有一个更大的样式表,就不会了。谢谢。。。出于某种原因,我的工作假设这是在当时的背景下。。。而不是在该节点本身上操作。@user2672537如果它解决了您的问题,请不要忘记。谢谢