xsl-list
[Top] [All Lists]

Re: [xsl] Re: "if-condition-return something" idiom : is it possible in XSLT 1 ?

2014-06-16 12:40:58
One doesn't need to use conditional XSLT instructions -- even in XSLT
1.0. Templates are our friend.

You may want to look at a recent thread about the minimal "kernel" of
necessary instructions in XSLT.

On Mon, Jun 16, 2014 at 5:19 AM, Kerry, Richard 
richard(_dot_)kerry(_at_)atos(_dot_)net
<xsl-list-service(_at_)lists(_dot_)mulberrytech(_dot_)com> wrote:
And just to be clear, I am asking about XSLT1.
(I am doing DocBook transformations and am trying to parse dates as strings)

________________________________________

In C/C++ programming the following idiom is quite common:

if (condition1)
  return value1;

if (condition2)
  return value2;

if (condition3)
  return value3;

return value4;

In other words each of these will test a condition and if it is satisfied 
execution will stop and some value will be returned to the caller.  The run 
stops with the first condition that succeeds.

I've tried to do something similar in XSLT and am getting somewhat 
contradictory indications of whether or not it is working.  Please can 
someone advise whether this should work, or if there is a similar form that I 
can use.

What I have is like the following template, to be called by name.

<xsl:template name="test.1">
  <xsl:param name="string" select="''"/>

   <xsl:if test="$check.1 = 0">
     <xsl:value-of select="$value.1" />
   </xsl:if>

   <xsl:if test="$check.2 = 0">
     <xsl:value-of select="$value.2" />
   </xsl:if>

   <xsl:if test="$check.3 = 0">
     <xsl:value-of select="$value.3" />
   </xsl:if>

  <xsl:value-of select="$value.4" />
</xsl:template>

My theory of why it might work is based on knowing that the following will 
work:

<xsl:template name="test.2">
  <xsl:param name="string" select="''"/>

  <xsl:value-of select="$value.4" />
</xsl:template>

I say "will work" in the sense that if the above template is called (by name) 
it will return the value from value.4.  What I'm not sure of is whether that 
should work if the "returning" value-of is a level down, in an xsl:if, as in 
the other template (test.1).
It is only a theory of why it might work.  Practice may indicate otherwise, 
and somewhere in the spec might be a reason.

Can someone please advise whether I can do this, or how to get broadly 
equivalent behaviour ?

Regards,
Richard.



Richard Kerry
BNCS Engineer, SI SOL Telco & Media Vertical Practice
T: +44 (0)20 3618 2669
M: +44 (0)7812 325518
G300, Stadium House, Wood Lane, London, W12 7TA
richard(_dot_)kerry(_at_)atos(_dot_)net


This e-mail and the documents attached are confidential and intended solely 
for the addressee; it may also be privileged. If you receive this e-mail in 
error, please notify the sender immediately and destroy it. As its integrity 
cannot be secured on the Internet, the Atos group liability cannot be 
triggered for the message content. Although the sender endeavours to maintain 
a computer virus-free network, the sender does not warrant that this 
transmission is virus-free and will not be liable for any damages resulting 
from any virus transmitted.




-- 
Cheers,
Dimitre Novatchev
---------------------------------------
Truly great madness cannot be achieved without significant intelligence.
---------------------------------------
To invent, you need a good imagination and a pile of junk
-------------------------------------
Never fight an inanimate object
-------------------------------------
To avoid situations in which you might make mistakes may be the
biggest mistake of all
------------------------------------
Quality means doing it right when no one is looking.
-------------------------------------
You've achieved success in your field when you don't know whether what
you're doing is work or play
-------------------------------------
To achieve the impossible dream, try going to sleep.
-------------------------------------
Facts do not cease to exist because they are ignored.
-------------------------------------
Typing monkeys will write all Shakespeare's works in 200yrs.Will they
write all patents, too? :)
-------------------------------------
I finally figured out the only reason to be alive is to enjoy it.
--~----------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
EasyUnsubscribe: http://lists.mulberrytech.com/unsub/xsl-list/1167547
or by email: xsl-list-unsub(_at_)lists(_dot_)mulberrytech(_dot_)com
--~--

<Prev in Thread] Current Thread [Next in Thread>