我对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]
的所有组合,我可以在任何地方找到它。请帮忙!
答案 0 :(得分:1)
使用以下内容:
<xsl:value-of select="preceding-sibling::day[1]/@id"/>
只是第一个没有任何值,因为没有前兄弟day
。