Правильный способ справиться с этим - с помощью Identity Transform и соответствующего переопределения.Обратите внимание, что шаблон переопределения копирует существующие атрибуты существующего элемента и дочерние узлы без изменений;все, что он делает, это добавляет один новый атрибут:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:strip-space elements="*"/>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="*[@class='pic']">
<xsl:copy>
<xsl:apply-templates select="@*"/>
<xsl:attribute name="onclick">
<xsl:text>show_hcard('</xsl:text>
<xsl:value-of select="../span[@class='fn']"/>
<xsl:text>')</xsl:text>
</xsl:attribute>
<xsl:apply-templates select="node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
Соответствующий вывод:
<img class="pic" src="hk.png" onclick="show_hcard('Henry Riedel')">
Первый шаблон копирует большинство элементов без изменений.Второй шаблон обрабатывает только те элементы, которые имеют атрибут класса, значение которого pic
.
Полный ввод:
<html>
<head>
<title>ERKLAERUNG</title>
</head>
<body>
<h1>Erklärung</h1>
<hr/>
<p>
Ich kenne einen Herrn
<span class="vcard">
<span class="fn">Henry Riedel</span>
**<img class="pic" src="hk.png" />**
(<i class="nick">hrick</i>) , der in einer
<span class="org">Hauschuhfirma</span> arbeitet. Seine
Telefonnummer (
<span class="tel">
<i class="type">home</i>) ist:
<span class="value">+4.444.444.4442</span>
</span>
</span>
</p>
</body>
</html>
Полный вывод:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>ERKLAERUNG</title>
</head>
<body>
<h1>Erklärung</h1>
<hr>
<p>
Ich kenne einen Herrn
<span class="vcard"><span class="fn">Henry Riedel</span>
**<img class="pic" src="hk.png" onclick="show_hcard('Henry Riedel')">**
(<i class="nick">hrick</i>) , der in einer
<span class="org">Hauschuhfirma</span> arbeitet. Seine
Telefonnummer (
<span class="tel"><i class="type">home</i>) ist:
<span class="value">+4.444.444.4442</span></span></span></p>
</body>
</html>