我對XSLT比較陌生,並且發現前兄弟姐妹::很痛苦。選擇父母的前兄弟姐妹的ID
用一個非常簡單的示例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>
問題我有最後一點(我在這裏寫過問題)。我正在嘗試獲取前一天的ID。我似乎無法獲得正確的select
值。我試過ancestor::
和../preceding-sibling::day[1]
的所有組合,我可以在任何地方找到。請幫忙!
我還沒有檢查過這個代碼中是否有前一個節點,但是至少假設它在第2天和第3天都有效。 – user2672537 2015-01-26 18:33:03
您不需要在本月進行匹配,因爲您正在處理的所有內容都是兒童,XSLT內置的模板規則會自動執行此操作。取消每天的for-each和模板匹配,而不是。此外,如果我是你,我會將被調用的模板放到日期模板中,以便清楚地知道該代碼的執行位置,並且不必知道它從何處被調用。現在可能很容易,但如果你有更大的樣式表則不會。 –
2015-01-26 20:35:46