Я пытаюсь сделать следующее:XSLT нумерация - группировка?
<body>
<div>
<p> text<note/>texttext<note/>text </p>
<p> text<note/>text </p>
</div>
<div>
text<note/>texttext<note/>text
</div>
</body>
должно привести к
<body>
<div>
<p> text<note n="1"/>texttext<note n="2"/>text </p>
<p> text<note n="3"/>text </p>
</div>
<div>
text<note n="1"/>texttext<note n="2"/>text
</div>
</body>
Как вы можете видеть, я хочу, чтобы пронумеровать все заметки под DIV независимо от родительского узла. Таким образом, заметки могут быть структурированы под div любым способом. Однако я не могу найти решение, используя xsl: number. Любая помощь будет оценена по достоинству.
Редактировать: Большое спасибо DRCB за его решение. Я адаптировал его так, чтобы его можно было также использовать для сложной вложенности, используя шаблон идентификации.
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="div//note">
<note>
<xsl:attribute name="n">
<xsl:value-of select="count(preceding::note) - count(preceding::div//note) + 1"/>
</xsl:attribute>
<xsl:value-of select="."/>
</note>
</xsl:template>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
tranforms:
<body>
<any>
<div>
<p>
<p> text<note/>texttext<note/>text </p>
</p>
<p> text<note/>text </p>
</div>
</any>
<div> text<note/>texttext<note/>text </div>
</body>
к:
<body>
<any>
<div>
<p>
<p> text<note n="1"/>texttext<note n="2"/>text </p>
</p>
<p> text<note n="3"/>text </p>
</div>
</any>
<div> text<note n="1"/>texttext<note n="2"/>text </div>
</body>
Я считаю, что может быть лучшим решением, однако это работает для меня.
Попробуйте решения здесь: [переменная приращения XSLT] [1] [1]: http://stackoverflow.com/questions/3770951/xslt-increment-variable – vassilo
Вы должны опубликовать свое решение как ответ на ваш собственный вопрос. Не редактируйте его в самом вопросе. – DanMan
Я должен подождать 24 часа, прежде чем ответить на свой вопрос. Вот почему я редактировал сообщение. – Chris