xsl-list
[Top] [All Lists]

Re: [xsl] Boolean Value of a Sequence of Booleans

2014-12-05 15:11:31
I think you could just use:

   boolean($vSeq[.][1])

In XPath 3.0 one could use:

 fold-right($seq, true(), function(x as xs:boolean, y as xs:boolean)
as xs:boolean {x and y})



and in XSLT 2.0 one could use the FXSL function f:foldr() and f:and()
in a similar way:

     
http://fxsl.cvs.sourceforge.net/viewvc/fxsl/fxsl-xslt2/f/func-foldr.xsl?view=markup


And even in XSLT 1.0 one can use the FXSL function f:some-true() :
    
http://fxsl.cvs.sourceforge.net/viewvc/fxsl/fxsl-xslt2/f/someTrue.xsl?revision=1.1&view=markup

I believe that (at least in Haskell) foldr() is defined in such a way
that it will short-circuit.


Cheers,
Dimitre

On Fri, Dec 5, 2014 at 12:39 PM, Eliot Kimber ekimber(_at_)contrext(_dot_)com
<xsl-list-service(_at_)lists(_dot_)mulberrytech(_dot_)com> wrote:
I think I must be forgetting something fundamental, but I'm not figuring
out how to do something that should be fundamental, I think.

Using XSLT2, I'm examining all the items in a key() map to see if any
entries in the map have more than 1 item. I'm doing this by iterating over
the keys. I'm then producing a boolean for each iteration and capturing
the sequence of booleans in a variable.

My thinking was that I could then just AND the sequence to determine if
any of the items had more than 1 item. But I see that boolean() and not()
don't operate on sequences of booleans. Hmph.

I realize thinking about it now that I can only put true() items in my
sequence and then just check the first one.

But my question still remains: is there a built-in way to apply boolean
operators to a sequence of booleans or would I need to write my own
function? Obviously, if I was writing my own function I'd just use
recursion to walk the sequence, which would allow early termination for
and() and or().

Have I missed something obvious or not so obvious? I am I just thinking
about this particular problem the wrong way?

Thanks,

Eliot

—————
Eliot Kimber, Owner
Contrext, LLC
http://contrext.com


--~----------------------------------------------------------------
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>