[XSL-LIST Mailing List Archive Home]
[By Thread]
[By Date]
Hi Nathan,
it should work in your example too, because there is a text node as child of the <Link>, so the test is passed.
Only one comment:
The above passes the test because of spaces and line breaks between <p> and <Link> or between <Link> and </Link>. To avoid this you can test on nodes, which don't consist of only whitespaces characters. Use normalize-space() for this (http://www.w3.org/TR/xpath#function-normalize-space):
<xsl:when test="descendant::node()[normalize-space()][not(self::Link or self::Media)]">
<p><xsl:apply-templates/></p>
</xsl:when>
=> If a descendant node exists, that consists not only of whitespace characters, that is not <Link> or <Media>, wrap it in <p>.
Regards,
Joerg
Nathan Shaw wrote:
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Re: [xsl] testing element's contents
Subject: Re: [xsl] testing element's contents From: Joerg Heinicke <joerg.heinicke@xxxxxx> Date: Thu, 03 Oct 2002 18:56:04 +0200 |
Hi Nathan,
it should work in your example too, because there is a text node as child of the <Link>, so the test is passed.
Only one comment:
<p> <Link>
</Link> </p>
The above passes the test because of spaces and line breaks between <p> and <Link> or between <Link> and </Link>. To avoid this you can test on nodes, which don't consist of only whitespaces characters. Use normalize-space() for this (http://www.w3.org/TR/xpath#function-normalize-space):
<xsl:when test="descendant::node()[normalize-space()][not(self::Link or self::Media)]">
<p><xsl:apply-templates/></p>
</xsl:when>
=> If a descendant node exists, that consists not only of whitespace characters, that is not <Link> or <Media>, wrap it in <p>.
Regards,
Joerg
Nathan Shaw wrote:
Excellent Joerg! The only place this would not work is if I have a paragraph element with only a Link element in it, such as:
<p><Link href="blah.html">This is a link</Link></p>
I need those to pass through the test and be wrapped in a p tag. Otherwise, it catches everything else I need!
Thank you! That gives me great direction...
--nate
--- Joerg Heinicke <joerg.heinicke@xxxxxx> wrote:
(descendant::*[1])[self::Media]"><xsl:apply-templates<xsl:when test="descendant::node()[not(self::Link or self::Media)]"> <p><xsl:apply-templates/></p> </xsl:when>
If there is any descendant node (including elements,
comments, PIs, text), which is not element Link or element Media,
create <p> in output tree.
Regards,
Joerg
Nathan Shaw wrote:
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
/></xsl:when> <xsl:otherwise><p><xsl:apply-templates /></p></xsl:otherwise> </xsl:choose> </xsl:template>
Thoughts? Ideas? Criticisms?
--nate
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] testing element's content, Nathan Shaw | Thread | Re: [xsl] testing element's content, Nathan Shaw |
Re: [xsl] testing element's content, Nathan Shaw | Date | Re: [xsl] testing element's content, Nathan Shaw |
Month |