Я должен выяснить, смотрю ли я на href id впервые или нет.
У меня есть следующие ссылки:
<a href="some_fn_1">link1</a>
<a href="some_fn_2">link2</a>
<a href="some_fn_1">link1</a>
Давайте просто скажем Значение атрибута href является идентификатором
. Я должен преобразовать эти ссылки в следующие, используя xsl:
<fn id="some_fn_1">
link1
</fn>
<fn href="some_fn_2">
link2
</fn>
<xref href="some_fn_1"/>
Итак, что мне нужно сделать, так это перебрать все узлы 'a' с помощью Перейдите по документу и вспомните, встречал ли я когда-нибудь ссылку на конкретный идентификатор. Создайте узел для первого href, и если другой href указывает на тот же Id, я должен сгенерировать xref. Так что я должен вспомнить ранее посещенные href id. Я пробовал следующее:
<xsl:param name="processed-footnotes"/>
<xsl:template match="//a[contains(@href, '_fn_')]">
<xsl:param name="processed-footnotes" select="concat($processed-footnotes, concat(concat('~', substring-after(@href,'/')), '~'))"/>
<xsl:variable name="fn-href">
<xsl:value-of select="@href"/>
</xsl:variable>
<xsl:variable name="fn-id">
<xsl:value-of select="substring-after($fn-href,'/')"/>
</xsl:variable>
<xsl:call-template name="process-footnotes">
<xsl:with-param name="fn-href" select="$fn-href"/>
<xsl:with-param name="fn-id" select="$fn-id"/>
</xsl:call-template>
</xsl:template>
Я намеревался использовать $ Обработанные сноски в качестве глобального параметра, который я могу обновлять для каждого href, который я нахожу, но переназначение или обновление значения для параметра или переменной не возможно в xsl.
Я не знаю, как добиться этого с помощью xsl сейчас. Пожалуйста, помогите.