In my Sharepoint fldtypes_custom.xsl
file, I have this code, which works perfectly. However, I want to use the same code on three or four similar fields.
Is there a way I can match fields named status1
OR status2
, OR status3
in the same template? Right now I have to have three copies of this block of code where the only difference is the fieldref
name. I would like to consolodate the code.
<xsl:template match="FieldRef[@Name='status1']" mode="body">
<xsl:param name="thisNode" select="."/>
<xsl:variable name="currentValue" select="$thisNode/@status1" />
<xsl:variable name="statusRating1">(1)</xsl:variable>
<xsl:variable name="statusRating2">(2)</xsl:variable>
<xsl:variable name="statusRating3">(3)</xsl:variable>
<xsl:choose>
<xsl:when test="contains($currentValue, $statusRating1)">
<span class="statusRatingX statusRating1"></span>
</xsl:when>
<xsl:when test="contains($currentValue, $statusRating2)">
<span class="statusRatingX statusRating2"></span>
</xsl:when>
<xsl:when test="contains($currentValue, $statusRating3)">
<span class="statusRatingX statusRating3"></span>
</xsl:when>
<xsl:otherwise>
<span class="statusRatingN"></span>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
Use:
However, I see from the provided code, that the strings
"status1"
,"status2"
and"status3"
aren't element names -- they are just possible values of theName
attribute of theFieldRef
element.In this case, your template could be:
In case there are many possible values for the
Name
attribute, one can use the following abbreviation: