RE: [xsl] Alternate syntax

Subject: RE: [xsl] Alternate syntax
From: "Bjorndahl, Brad" <brad.bjorndahl@xxxxxxxxxxxxxxxx>
Date: Fri, 18 May 2007 15:39:15 -0400
Hi,

I don't know, but your 'warning' named template references
$warning/level, and that element is not defined in your 'warning'
variable or parameter, so you won't always get what you want anyway.

Also, I don't think that test="number($warning/level) = $warning/level"
gives you what you expect either. Are you trying to compare the
warning.asp node value to the passed value?

Brad


-----Original Message-----
From: Steve [mailto:subsume@xxxxxxxxx]
Sent: May 18, 2007 3:05 PM
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Subject: [xsl] Alternate syntax

Hey list,

Keep in mind, I'm open to the smallest suggestions on anything below,
even if unrelated.

Anyway, I have the following snippet:

<xsl:variable name="warning">
	<warning>New contacts may only be added to active
consumers.</warning> </xsl:variable> <xsl:call-template name="warning">
	<xsl:with-param name="warning" select="$warning" />
        <xsl:with-param name="level">3</xsl:with-param>
</xsl:call-template>

I don't like it. I'd rather do it in one fell swoop, a la:

<xsl:call-template name="warning">
	<xsl:with-param name="warning">
        	<warning>New contacts may only be added to active
consumers.</warning>
       </xsl:with-param>
        <xsl:with-param name="level">3</xsl:with-param>
</xsl:call-template>

But my template complains: Reference to variable or parameter 'warning'
must evaluate to a node list.

Template below.
	<xsl:template name="warning">
		<xsl:param name="warning"
select="document(concat($root,'/warning.asp?userID=',$userID))/Records/R
ecord"
/>
		<xsl:param name="level" >
			<xsl:choose>
				<xsl:when test="number($warning/level) =
$warning/level">
					<xsl:value-of
select="$warning/level" />
				</xsl:when>
				<xsl:otherwise>2</xsl:otherwise>
			</xsl:choose>
		</xsl:param>
		<xsl:if test="$warning">
			<span class="screen">
				<fieldset class="warning{$level}">
					<ul>
						<xsl:for-each
select="$warning/warning">
							<li><xsl:copy-of
select="." /></li>
						</xsl:for-each>
					</ul>
				</fieldset>
			</span>
		</xsl:if>
	</xsl:template>

Also, I'm all about syntax efficiency. Are there any other shortcuts I
could take besides the one I'm looking for?

-Steve

Current Thread