У меня есть следующий шаблон XSL:XSLT XSL: копирование и XSL: для-каждый по атрибутам
<xsl:template match="@*|node()" mode="fix-entity-references">
<xsl:copy>
<xsl:for-each select="@*">
<xsl:if test="name() = 'href'">
<xsl:variable name="hrefvar">
<xsl:value-of select="current()"/>
</xsl:variable>
<xsl:attribute name="href">
anything
</xsl:attribute>
</xsl:if>
</xsl:for-each>
<xsl:apply-templates select="@*|node()" mode="fix-entity-references"/>
</xsl:copy>
</xsl:template>
Я хочу использовать этот шаблон, чтобы скопировать текущий узел, но только после обработки всех его атрибутов. Текущий образец очень прост и может быть заменен очень простым блоком. Экспериментальное выражение будет намного сложнее, так как существует N атрибутов для каждого элемента, удовлетворяющего выражению. Вот почему для каждого из них необходимо. Я хочу обрабатывать все эти атрибуты одинаково. Я попытался напечатать значение current(), которое всегда работает нормально. Проблема заключается в обновлении атрибута исходного узла. Установка значения атрибута «href» для «ничего» не будет работать, потому что, по моему мнению, к моменту, когда я его вызываю, он находится внутри каждого блока, что означает, что текущий узел является самим атрибутом.
Как установить атрибут исходного блока изнутри каждого блока, чтобы скопированный узел использовал измененные атрибуты?
Заранее спасибо.
Мне нравится много сэр спасибо! –