[Bug 4728] [FT] editorial: 4.3.1.1 Semantics of FTContainsExpr

http://www.w3.org/Bugs/Public/show_bug.cgi?id=4728





------- Comment #4 from holstege@mathling.com  2007-11-05 17:14 -------
As we discussed, I think at this point it would be best to remove the 
2nd-orderness of the "without content" modifier, which is in keeping with what
the semantics says, modify the sentence as suggested, and make the
corresponding
adjustments to section 3.  Sample queries:

Then this query would be an error (no context item):

let $x =
    <example>
        <div>
            a
            <div>
                b
            </div>
            c
        </div>
    </example>
return $x//div ftcontains "b" without content .//div


This query would return false, because we're excluding all the divs:

let $x =
    <example>
        <div>
            a
            <div>
                b
            </div>
            c
        </div>
    </example>
return $x//div ftcontains "b" without content $x//div

To get the alternative interpretation (removing just the divs under the
search item), we could write:

let $x =
    <example>
        <div>
            a
            <div>
                b
            </div>
            c
        </div>
    </example>
return fn:exists($x//div[. ftcontains "b" without content .//div])

I propose that we lose the second-orderness of the ignored nodes expression.
Then this query would be an error (no context item):

let $x =
    <example>
        <div>
            a
            <div>
                b
            </div>
            c
        </div>
    </example>
return $x//div ftcontains "b" without content .//div


This query would return false, because we're excluding all the divs:

let $x =
    <example>
        <div>
            a
            <div>
                b
            </div>
            c
        </div>
    </example>
return $x//div ftcontains "b" without content $x//div

To get the alternative interpretation (removing just the divs under the
search item), we could write:

let $x =
    <example>
        <div>
            a
            <div>
                b
            </div>
            c
        </div>
    </example>
return fn:exists($x//div[. ftcontains "b" without content .//div])

I believe these makes the ftcontains expressions easier to understand, because
the "without content" expression then follows the same rules as other
expressions in XQuery.

Received on Monday, 5 November 2007 17:14:42 UTC