[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

RE: [xsl] Problem with xsl:if


Subject: RE: [xsl] Problem with xsl:if
From: "Josh Canfield" <Josh.Canfield@xxxxxxxxxxxx>
Date: Wed, 21 Apr 2004 09:37:50 -0700

I would start by outputting the variable you are creating with xsl:copy to see what you are getting.

from the xsl you provided I would guess that it's always empty, considering that there are no 'jkuPeBeschSAP22SLART' attr-name attributes....

You are also using // which is short for /descendant-or-self::node()/, which starts its search from the beginning of the document, and would return all nodes in the document that matched your criteria. Try something like:

<xsl:variable name="slabs" select="../add-attr[@attr-name='jkuSLABS']"/>

Josh

-----Original Message-----
From: Gerald Fingerlos [mailto:gerald@xxxxxxxxxxxx]
Sent: Wednesday, April 21, 2004 9:05 AM
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Subject: [xsl] Problem with xsl:if


I have the following XML Document:

<?xml version="1.0" encoding="UTF-8"?>
   <input>
      <add class-name="User">
         <add-attr attr-name="jkuSLABS">
            <value>90</value>
         </add-attr>
         <add-attr attr-name="jkuSLART">
            <value>50</value>
         </add-attr>
         <add-attr attr-name="jkuPeHabd">
            <value type="string">7777-33-11</value>
         </add-attr>
      </add>
   </input>


What Id like to to is the get an output document which should contain
the 
         <add-attr attr-name="jkuPeHabd">
            <value type="string">7777-33-11</value>
         </add-attr>
only, if the jkuSLABS=90 AND jkuSLART=50. Otherwise the 3 lines should
be omitted.

I thought of the following, but I think I am misunderstanding
something:

	<xsl:template match="node()|@*">
		<xsl:copy>
			<xsl:apply-templates select="@*|node()"/>
		</xsl:copy>
	</xsl:template>
	<xsl:template match="*[@attr-name='jkuPeHabd']">
		<xsl:variable name="slart"
select="//*[@attr-name='jkuPeBeschSAP22SLART']//value"/>
		<xsl:variable name="slabs"
select="//*[@attr-name='jkuPeBeschSAP22SLABS']//value"/>

		<xsl:if test="($slart!='50')   or   ($slabs!='90')">
		</xsl:if>
	</xsl:template>

As far as I can see the if never gets true, but still if it would be
true, I would need some "else" operation. Maybe you can give me a hint
how to solve this.

Thank you in advance,
Gerald


Current Thread
Keywords