Ross Ken wrote:
Try
xsl:template match="/album/photos/photo/caption[text()!='']"
This works very well :-)
The only problem is, some of the non-empty text nodes are nothing but
whitespace.
to fix the problem I did this.
xsl:template match="photo/*[text()!=''][count(*)=0]"
That's because all the text nodes I want to capture don't have any other
sub-elements (ie. it's plain text, not markup).
I tried using <xsl:strip-space elements="*" />
but it seemed to have no effect on the sablotron processor.
and
<xsl:template match="/album/photos/photo/*[text()!='']">
<tr valign="top">
<td class="label" align="right"><xsl:value-of select="name()"/>:</td>
<td class="caption"><xsl:value-of select="." /></td>
</tr>
</xsl:template>
This works a treat :-)
Thanks. Most helpfull indeed.
I've made several modifications based on a similar thing.
<xsl:template match="photo/*[text()!=''][count(*)=0]">
<tr valign="top">
<td class="label" align="right"><xsl:value-of
select="name()"/>:</td>
<td class="{name()}"><xsl:value-of select="." /></td>
</tr>
</xsl:template>
<xsl:template match="photo/*[(_at_)name!='']">
<tr valign="top">
<td class="label" align="right"><xsl:value-of
select="name()"/>:</td>
<td class="{name()}"><xsl:value-of select="@name" /></td>
</tr>
</xsl:template>
<xsl:template match="photo/*[(_at_)year!='']">
<tr valign="top">
<td class="label" align="right"><xsl:value-of
select="name()"/>:</td>
<td class="{name()}">
<xsl:value-of select="@day" />/<xsl:value-of
select="@month" />/<xsl:value-of select="@year" /> -
<xsl:value-of select="@hour" />:<xsl:value-of
select="@min" />
</td>
</tr>
</xsl:template>
This has reduced the size of my sheet signifigantly and there is less
modification in the event of a schema change.
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list