I have an XML file that contains identical data in two elements. One element "HTMLDesc" is intended to be used on the web and includes HTML characters, like bullets. The other "Fulldesc" is intended for print purposes. We'd like to use the HTML element in all cases when both elements contain data. BUT, when the HTML element is missing or empty, I want to use the print-based element. I know this is an IF/ELSE function, but how do you write the XSLT to choose the second element when the first is empty or missing?
Here is a sample of the XML:
<dataroot>
<CaseStudies>
<H3>New Patient</H3>
<Fulldesc>Office or other outpatient visit.</Fulldesc>
<HTMLdesc><b>Office or other outpatient visit</b></HTMLdesc>
</CaseStudies>
<CaseStudies>
<H3>Old Patient</H3>
<Fulldesc>Office or other outpatient visit.</Fulldesc>
</CaseStudies>
<CaseStudies>
<H3>Young Patient</H3>
<Fulldesc>Office or other outpatient visit.</Fulldesc>
<HTMLdesc><b>Office or other outpatient visit</b></HTMLdesc>
</CaseStudies>
<CaseStudies>
<category>1</category>
<GroupNo>2</GroupNo>
<H3>Female Patient</H3>
<Fulldesc>Office or other outpatient visit.</Fulldesc>
<HTMLdesc />
</CaseStudies>
</dataroot>
Here is the basic XSLT:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:strip-space elements="*"/>
<xsl:output method="xml"/>
<xsl:template match="/">
<dataroot>
<xsl:apply-templates select="dataroot"/>
</dataroot>
</xsl:template>
<xsl:template match="CaseStudies">
<CaseStudies>
<xsl:apply-templates select="H3"/>
<xsl:apply-templates select="HTMLdesc"/>
</CaseStudies>
</xsl:template>
<H3><xsl:value-of select="."/></H3></xsl:template>
<xsl:template match="HTMLdesc">
<HTMLdesc><xsl:value-of select="."/></HTMLdesc></xsl:template>
</xsl:stylesheet>
<xsl:template match="H3">? DoesFullldescalways precedeHTMLdesc?