Conditional xeme expressions

Conditional xeme expressions return a boolean as the value of their outgoing workitem. They are cataloged as 'xeme expressions' as they care about evaluating XML fragments (often emitted by regular xeme expressions).

is-null

Will return 'true' if the content of the expression evaluates to null.


    <sequence>
        <if>
            <is-null>
                <participant ref="alpha" />
            </is-null>

            <!-- then -->
            <participant ref="bravo" />

            <!-- else -->
            <participant ref="charly" />
        </if>
    <sequence>

In this example, the flow will certainly go to 'bravo' as the participant expression making up the content of 'is-null' is not supposed to yield any value for the field '__result__'. Of course, if the participant 'alpha' had set the field '__result__' to something, the flow would have gone to 'charly'.

is-list

Another name for this expression would perhaps have been 'is-xml' or 'is-xml-fragment'.


    <sequence>

        <!--
            all the 'print' expressions in this example will echo
            'true' to the stdout of the engine
        -->

        <set variable="v0">
            <list>a, b, c, d</list>
        </set>

        <set variable="v1">
            <list>
                a
                <list>1, 2, 3</list>
                c
            </list>
        </set>

        <print><is-list>${v1}</is-list></print>
        <print><is-list><v>v1</v></is-list></print>

        <set variable="v2">
            <q>
                a
                <list>1, 2, 3</list>
                c
            </q>
        </set>

        <print><is-list>${v2}</is-list></print>

        <set field="f1">
            <a>
                <list>
                    <string>nada</string>
                    <int>2</int>
                </list>
            </a>
        </set>

        <print><is-list><f>f1</f></is-list></print>
        <print><is-list>${field:f1}</is-list></print>

    </sequence>

is-atom

Will return true if its content is not a list or an XML fragment.



is-empty

This expression will return true if its content is not a list (not an XML fragment) or if the XML fragment it contains has no children element.