Suresh
Suresh

Reputation: 1091

xslt - programming techniques

A question on Oliver Beckers efficient methods on xslt programming at this link.

We know that using this code, we can eliminate verbose xsl choose method

concat(
substring(Str1,1 div Cond),
substring(Str2,1 div not(Cond))
)

However what can we specify in 'condition', just to check for presence or absence of nodes?

we cannot specify

concat(
substring(Str1,1 div test="/node"),
substring(Str2,1 div not(test="/node"))
)

which will throw syntax errors.

Upvotes: 0

Views: 777

Answers (1)

Tim C
Tim C

Reputation: 70598

Try this expression (where node is the name of the node you want to test):

<xsl:value-of select="concat(
   substring('Yes', 1 div not(not(/root/node))), 
   substring('No', 1 div not(/root/node)))"/>

Or better still

<xsl:value-of select="concat(
   substring('Yes', 1 div boolean(/root/node)), 
   substring('No', 1 div not(/root/node)))"/>

When applied to this XML, then Yes is output

<root>
   <node>Test</node>
</root>

But when applied to this XML, the No is output

<root>
   <othernode>Test</othernode>
</root>

Upvotes: 2

Related Questions