I am working with XML files that are generated by a digital video camera. The camera allows the user to save all of the camera’s settngs to an SD card so that the settings can be recalled or loaded into another camera. The XSL stylesheet I am writing will allow users to view the camera’s settings, as saved to the SD card in a web browser.
While most of the values in the XML file — as formatted by my stylesheet — make sense to humans, some do not. What I would like to do is have the stylesheet display text that is based on the value in the XML file but more easily understood by humans.
My sample XML file may be viewed here: http://josephthomas.info/Alexa/Setup_120511_140322.xml
A few lines down the page you will see:
Color GAMMA-SxS Rec_Log
While “Rec_Log” is a value that the cameras understand, it is not a value that the camera’s users will understand. What I would like for the stylesheet to do is to display “LogC” instead.
In the XML file this value is defined thusly:
<DteLut lowerLimit="0" upperLimit="2">Rec_Log</DteLut>
The XSL formatting the sample page for this value is:
<tr>
<td class="title_column">Color GAMMA-SxS</td><td><xsl:value-of select="Settings/Groups/Recording/DteLut"/>
</td>
</tr>
So what I hope to do is have “LogC” displayed on the page rather than Rec_Log.
It seems to me that the “when” conditional statement is the correct approach, but I am not familiar enough with the syntax to cause this to happen. There are other values in the XML file that want replacing but the above is a good example of my mission.
What you could do is make use of make use of template matching, to match the exceptions to what you want to change. Firstly, add the following template to your XSL
Then, instead of the following line
Do the following line
When the value of*DteLut* is “Rec_Log”, then the custom template will be matched to output “LogC” instead. When there is not a match, the default behaviour will kick in which will be to just output the text value as-is.