Although they do have the virtue of giving me my desired output, can the
following sequence of statements be replaced by a more generalized (shorter
and simpler) XPath statement without the repetitive "when" tests shown
below?
<xsl:choose>
<xsl:when test="@souvenir-sheet">
<xsl:copy-of select="if (../Location/@souvenir-sheet) then
../Location/@souvenir-sheet else if (../Location/@denomination) then
../Location/@denomination else '0' "/>
</xsl:when>
<xsl:when test="@minisheet">
<xsl:copy-of select="if(../Location/@minisheet) then
../Location/@minisheet else if(../Location/@denomination) then
../Location/@denomination else '0'"/>
</xsl:when>
<xsl:when test="@booklet">
<xsl:copy-of select="if(../Location/@booklet) then
../Location/@booklet else if(../Location/@denomination) then
../Location/@denomination else '0'"/>
</xsl:when>
<xsl:when test="@se-tenant">
<xsl:copy-of select="if (../Location/@se-tenant) then
../Location/@se-tenant else if(../Location/@denomination) then
../Location/@denomination else '0'"/>
</xsl:when>
<xsl:when test="@coupon">
<xsl:copy-of select=" if (../Location/@coupon) then
../Location/@coupon else if(../Location/@denomination) then
../Location/@denomination else '0'"/>
</xsl:when>
</xsl:choose>
My XPath is very weak.
I tried:
<xsl:copy-of select="if (../Location[name(@*)=name(@*)]) then
../Location/@* else if(../Location/@denomination) then
../Location/@denomination else '0'"></xsl:copy-of>
but it does not restrict the first "then" to returning the value of only
locations with an attribute of the same name (as shown in the series of
<when> statements).
The current context is a <Formats> element with a single attribute
(@minisheet, etc.). <Location> elements, if they exist, have a one-to-one
relationship with respect to their attribute with their sibling <Formats>
elements, i.e, a <Formats @minisheet> element is paired with exactly one
<Location @minisheet> sibling, or with no <Location> element at all. In that
case substitute value of the single <Locations @denomination> element if it
exists, or provide a value of '0' if it does not.
If there is not enough info here to correct my faulty try at a simpler XPath
statement or to tell me its not going to work no matter what, then I can
provide a brief input and desired output selection.
Thanks,
Mark
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--