[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

finding next element after

Subject: finding next element after
From: Nathan Shaw <n8_shaw@xxxxxxxxx>
Date: Wed, 2 Oct 2002 08:36:13 -0700 (PDT)
xsl next
Here is my deal. I am trying to associate a caption
with an image. The XML I am parsing will always look
like this:

With a caption and a link:
<p><Link href="http://islswg.hq.nasa.gov/"><img
src="C:\Documents and Settings\nshaw.HQIRMS\My
Documents\genericpics\ISS\transhub.jpg"
height="120.75" width="156.75"/></Link></p>
<Caption>Picture of the ISS TransHAB.</Caption>

OR 

With a caption and no link:
<p><img src="C:\Documents and Settings\nshaw.HQIRMS\My
Documents\genericpics\ISS\transhub.jpg"
height="120.75" width="156.75"/></p>
<Caption>Picture of the ISS TransHAB.</Caption>

OR 
With a link and no caption:
<p><Link href="http://islswg.hq.nasa.gov/"><img
src="C:\Documents and Settings\nshaw.HQIRMS\My
Documents\genericpics\ISS\transhub.jpg"
height="120.75" width="156.75"/></Link></p>

OR

With no link or caption:
<p><img src="C:\Documents and Settings\nshaw.HQIRMS\My
Documents\genericpics\ISS\transhub.jpg"
height="120.75" width="156.75"/></p>

I want my resulting ouput to look like this (of course
there would not be a Link or Caption element if those
did not exist in the original XML):

<Media type="image" id="transhub"
file="http://www.nasa.gov/images/aero.gif" width="157"
height="121" border="" alt="Picture of the ISS
TransHAB." align="left"><Link
url="http://islswg.hq.nasa.gov/"
type="internal"/><Caption align="bottom">Picture of
the ISS TransHAB.</Caption>
</Media>
This is as close as I have gotten in my XSLT. Finding
the next following Caption element is tripping me up
((following-sibling::*[1])[self::Caption])!

<xsl:template match="img">
	<Media>
		<xsl:attribute name="type">
				<xsl:value-of select="'image'" />
		</xsl:attribute>
		<xsl:variable name="fileName">
			<xsl:call-template name="getFileName">
				<xsl:with-param name="FilePath" select="@src" />
			</xsl:call-template>
		</xsl:variable>
		<xsl:variable name="imgID"
select="substring-before($fileName,'.')" />
		<xsl:attribute name="id">
				<xsl:value-of select="$imgID" />
		</xsl:attribute>
		<xsl:attribute name="file">
			<xsl:value-of
select="concat('http://www.nasa.gov/images/',$fileName)"
/>
		</xsl:attribute>
		<xsl:attribute name="width">
				<xsl:value-of select="round(@width)" />
		</xsl:attribute>
		<xsl:attribute name="height">
				<xsl:value-of select="round(@height)" />
		</xsl:attribute>
		<xsl:attribute name="border">
				<xsl:value-of select="@border" />
		</xsl:attribute>
		<xsl:attribute name="alt">
				<xsl:value-of select="/NewsRelease/Body/caption"
/>
		</xsl:attribute>
		<xsl:if test="local-name(parent::node())='Link'">
			<Link>
				<xsl:attribute name="url">
						<xsl:value-of select="../@href" />
				</xsl:attribute>
				<xsl:variable name="nasaURL">
					<xsl:call-template name="LCase">
						<xsl:with-param name="string" select="../@href"
/>
					</xsl:call-template>
				</xsl:variable>
				<xsl:attribute name="type">
					<xsl:choose>
						<xsl:when test="contains($nasaURL,'nasa.gov')">
							<xsl:value-of select="'internal'" />
						</xsl:when>
						<xsl:otherwise>
							<xsl:value-of select="'external'" />
						</xsl:otherwise>
					</xsl:choose>
				</xsl:attribute>
			</Link>
		</xsl:if>
		<xsl:if
test="(following-sibling::*[1])[self::Caption]">
			<Caption>
				<xsl:attribute name="align">
						<xsl:value-of select="'bottom'" />
				</xsl:attribute>
				<xsl:value-of
select="(following-sibling::*[1])[self::Caption]" />
			</Caption>
		</xsl:if>
	</Media>
</xsl:template>

thanks in advance for the help! I have been racking me
brain for hours and hours on this!

--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


Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.