Say У меня есть следующий XML:Показать заголовок только один раз в течение каждого-
<a>
<b>1</b>
<b>2</b>
<b>3</b>
</a>
... и требуют:
Header
1
2
3
... но как XSLT:
<xsl:template match = "/" >
<xsl:variable name="headed" select="false()"/>
<xsl:for-each select = "a/*" >
<xsl:if test="not($headed)">
<xsl:text>Header</xsl:text>
<!--
this next line causes a problem due to
the attempted reassignment of $headed
-->
<xsl:variable name="headed" select="true()"/>
</xsl:if>
<xsl:value-of select="." />
<xsl:value-of select="'
'"/>
</xsl:for-each>
</xsl:template>
недействителен, может ли кто-нибудь рекомендовать краткое и понятное решение? и, возможно, хорошая книга, чтобы узнать функциональное мышление от :)
Приветствия
Simon
----------------------- ------- добавление --------------------------
После размышления над ответами, которые мне были представлены, я понял Я потерял некоторые из ключевых компонентов проблемы, которую я пытался решить.
мои данные больше похожи:
<address>
<line1>street</line1>
<line2>town</line2>
<line3>city</line3>
<country>uk</country>
</address>
и мой желаемый результат больше похож:
<table>
<tr><td rowspan="6" valign="top">Address</td><td>street</td></tr>
<tr><td>town</td></tr>
<tr><td>city</td></tr>
<tr><td>uk</td></tr>
</table>
любая дополнительная помощь будет высоко оценена.
@Simon Нанн: Пожалуйста, попробуйте отпустить. Большую часть времени вы захотите на своем месте - ваш XSL будет почти автоматически становиться более структурированным и более понятным в этом смысле. –
Tomalak