[xsl] Assigning new attribute value

Subject: [xsl] Assigning new attribute value
From: "Mark Wilson pubs@xxxxxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Tue, 20 Dec 2016 20:11:17 -0000
I am doing an identity transformation that has presented me with a problem. The element <Location> in the original XML must have one and only one of seven possible attributes. Whichever attribute is present, I must keep its name but change its value. I have created a brute-force template that I assume will work. It ascertains the attribute's name and assigns it a new value. This is so ugly I am hanging my head in shame. There must be a more elegant method
Mark


xsl:template match="Location">
<xsl:param name="placement-index"/>
<Location>
<xsl:choose>
<xsl:when test="@minisheet">
<xsl:attribute name="minisheet" select="$placement-index"/>
</xsl:when>
<xsl:when test="@souvenir-sheet">
<xsl:attribute name="souvenir-sheet" select="$placement-index"/>
</xsl:when>
<xsl:when test="@gutter">
<xsl:attribute name="gutter" select="$placement-index"/>
</xsl:when>
</xsl:choose>


<!-- There are more attribute names, but you get the idea -->

         </Location>
  </xsl:template>

Current Thread