Avatar of Molko
Molko asked on

XSLT- Trying to negate a String() function

I have attached some XSLT code, the code is fairly repetitive in that a a template i have replaced with the comment   <!--DO STUFF1() --> is called in two places.

I think I could improve the code by using a negating my NOT condition, but I cant seem to make it work properly.

I want to try and say <xsl:when test="
string(substring-after(substring-after($path, '\'), '\')) ">  OR'ed with <xsl:when test="string(substring-after($path, '\')) ">


And help would be greatly received.

Even if its a complete restructure of the code.

Thanks



<xsl:choose>
		<xsl:when test="starts-with($path,'\')"> <!-- Starts with \ - e.g \abc\def\ghi -->
			<xsl:choose>
				<xsl:when test="not (string(substring-after(substring-after($path, '\'), '\'))) ">
					<!--DO STUFF1() -->
				</xsl:when>
				<xsl:otherwise>
					<xsl:call-template name="xxx">
						<xsl:with-param name="$path" select="substring-after(substring-after($path, '\'), '\')"/>
					</xsl:call-template>
				</xsl:otherwise>
			</xsl:choose>
		</xsl:when>
		<xsl:otherwise> <!-- Doesn't start with \ - e.g abc\def\ghi-->
			<xsl:choose>
				<xsl:when test="not (string(substring-after($path, '\'))) ">
					<!--DO STUFF1() -->
				</xsl:when>
				<xsl:otherwise>
					<xsl:call-template name="xxx">
						<xsl:with-param name="$path" select="substring-after($path, '\')"/>
					</xsl:call-template>
				</xsl:otherwise>
			</xsl:choose>
		</xsl:otherwise>
	</xsl:choose>

Open in new window

Web Languages and StandardsXML

Avatar of undefined
Last Comment
Gertone (Geert Bormans)

8/22/2022 - Mon
ASKER CERTIFIED SOLUTION
Gertone (Geert Bormans)

Log in or sign up to see answer
Become an EE member today7-DAY FREE TRIAL
Members can start a 7-Day Free trial then enjoy unlimited access to the platform
Sign up - Free for 7 days
or
Learn why we charge membership fees
We get it - no one likes a content blocker. Take one extra minute and find out why we block content.
See how we're fighting big data
Not exactly the question you had in mind?
Sign up for an EE membership and get your own personalized solution. With an EE membership, you can ask unlimited troubleshooting, research, or opinion questions.
ask a question
ASKER
Molko

I'll take a look at that. The 'path' can be like :

c:\window\temp or

\server\temp

hence the conditional processing
Gertone (Geert Bormans)

I realized that would be the case,
I saw that once you are sure that the possible leading "\" is gone, the processing is exactly the same
you process the bit after the first "\" if it is there, not counting the leading one
so you could first drop that
ASKER
Molko

Yes that quite correct, I also call that function recursively, so that i can iterate over the whole path. So i guess that means i will be assigning a value to $path2 every time - I suppose i can move the variable outside the function call ?

This is the best money I have ever spent. I cannot not tell you how many times these folks have saved my bacon. I learn so much from the contributors.
rwheeler23
Gertone (Geert Bormans)

yes, move it outside the function call
ASKER
Molko

Thanks
Gertone (Geert Bormans)

welcome
Get an unlimited membership to EE for less than $4 a week.
Unlimited question asking, solutions, articles and more.