Couldn't you just count the number of child nodes (including text()) and
then test for img/a?
something like:
<xsl:choose>
<xsl:when test="count(child::node()) = 1 and (child::img or
child::a)">
<xsl:copy-of select="child::*"/>
</xsl:when>
<xsl:otherwise>
<xsl:copy-of select="."/>
</xsl:otherwise>
</xsl:choose>
cheers
andrew
-----Original Message-----
From: Nathan Shaw [mailto:n8_shaw(_at_)yahoo(_dot_)com]
Sent: 03 October 2002 16:08
To: XSL-List(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: [xsl] testing element's contents
hi all,
Thanks to everyone who gave me advice on my previous
post about images and captions. Now, I have another
tricky lil' xslt problem. If a paragraph element
contains ONLY a media element OR a media element
surrounded by a link element and nothing more (read,
no other nodes, be they text or not), such as:
<p><img
src="http://www.mylocal.gov/images/nasausa.gif"
height="255" width="432"/></p>
I need to strip the p tags out of resulting output.
However, if it does contain other nodes, such as:
<p><img
src="http://www.mylocal.gov/images/nasausa.gif"
height="255" width="432"/>This is my news release. The
authors will be typing the news release content in
here! I am not sure what this news release is even
about, but lets see how it comes out in XML, shall we?
As I see it coming out as:</p>
I need to leave it alone.
Here is what I have so far. It only looks to see if a
media element or a media element wrapped by a link
element exists, but does not consider if there is a
text node after a media or link element.
<xsl:template match="p">
<xsl:choose>
<xsl:when test="((descendant::*[1])[self::Link] and
(descendant::*[2])[self::Media]) or
(descendant::*[1])[self::Media]"><xsl:apply-templates
/></xsl:when>
<xsl:otherwise><p><xsl:apply-templates
/></p></xsl:otherwise>
</xsl:choose>
</xsl:template>
Thoughts? Ideas? Criticisms?
--nate
__________________________________________________
Do you Yahoo!?
New DSL Internet Access from SBC & Yahoo!
http://sbc.yahoo.com
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
---
Incoming mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.393 / Virus Database: 223 - Release Date: 30/09/2002
---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.393 / Virus Database: 223 - Release Date: 30/09/2002
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list