Вот другой подход, который делает далеко за необходимости XSL: выбрать элемент. Вместо этого вы можете воспользоваться шаблонами соответствия, чтобы иметь конкретные шаблоны для случаев атрибутов, имена которых вы хотите переопределить, и общий шаблон для другого случая.
Чтобы избежать повторений кода, вы можете также сделать общий шаблон именованного шаблон с параметром для переопределяет имя
<xsl:template match="@*" name="attribute">
<xsl:param name="label" select="local-name()" />
Таким образом, по умолчанию для большинства атрибутов будет использовать имя атрибута, но конкретный шаблон для @FullName мог бы назвать это с другим именем.
<xsl:template match="@FullName">
<xsl:call-template name="attribute">
<xsl:with-param name="label" select="'Full Name'" />
</xsl:call-template>
</xsl:template>
Вот полный XSLT:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" indent="yes"/>
<xsl:template match="*">
<div class="{local-name()}">
<div> Title: </div>
<xsl:apply-templates select="@*"/>
</div>
</xsl:template>
<xsl:template match="@FullName">
<xsl:call-template name="attribute">
<xsl:with-param name="label" select="'Full Name'" />
</xsl:call-template>
</xsl:template>
<xsl:template match="@*" name="attribute">
<xsl:param name="label" select="local-name()" />
<span class="label">
<xsl:value-of select="concat($label, ' : ')"/>
</span>
<span class="value">
<xsl:value-of select="."/>
</span>
<br/>
</xsl:template>
</xsl:stylesheet>
При нанесении на следующий XML:
<Member TextRank="unknown" ID="12" FullName="My Name" Dob="01/01/1970" />
Ниже выход:
<div class="Member">
<div> Title: </div>
<span class="label">TextRank : </span>
<span class="value">unknown</span>
<br>
<span class="label">ID : </span>
<span class="value">12</span>
<br>
<span class="label">Full Name : </span>
<span class="value">My Name</span>
<br>
<span class="label">Dob : </span>
<span class="value">01/01/1970</span>
<br>
</div>
Чтобы сохранить свой код понятнее , вы должны написать свои элементы/атрибуты непосредственно вместо usi ng 'xsl: element' и' xsl: attribute'. –