Я пытаюсь сделать следующее:
<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.Буду признателен за любую помощь.
edit: Большое спасибо 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>
преобразовывает:
<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>
Я полагаю, что может быть лучшее решение, но это работает для меня.