# 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: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>  Web Languages and StandardsXML 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 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. 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. 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