Hello Joe.

> Did you see xqx:unionOp?

The xqx:unionOp for (a | b) as XQueryX:

<xqx:unionOp>
  <xqx:firstOperand>
    <xqx:pathExpr>
      <xqx:stepExpr>
        <xqx:xpathAxis>child</xqx:xpathAxis>
        <xqx:nameTest>a</xqx:nameTest>
      </xqx:stepExpr>
    </xqx:pathExpr>
  </xqx:firstOperand>
  <xqx:secondOperand>
    <xqx:pathExpr>
      <xqx:stepExpr>
        <xqx:xpathAxis>child</xqx:xpathAxis>
        <xqx:nameTest>b</xqx:nameTest>
      </xqx:stepExpr>
    </xqx:pathExpr>
  </xqx:secondOperand>
</xqx:unionOp>

gives me:

(child::a union child::b)

when transformed to XQuery using the supplied XSLT transform(s).

union is part of intersect and except group of instructions, and that's not the 
same as the pipe operator in a path expression, and it's that that I'm trying 
to serialise as an XPath (XQuery) expression.


> There is an XQueryX translator here:
> http://www.w3.org/2007/01/applets/xqueryApplet.html

I cannot get the applet to run in any of my browsers on my Mac. Despite some 
hacking around I cannot get the permissions to allow the Applet to run.


Thanks for the response.

Regards

Philip


On 11 Nov 2014, at 17:37, Josh Spiegel 
<[email protected]<mailto:[email protected]>>
 wrote:

Did you see xqx:unionOp?

There is an XQueryX translator here:
http://www.w3.org/2007/01/applets/xqueryApplet.html

You can use it to convert "(a | b | c)” to XQueryX.

Josh

On Nov 11, 2014, at 6:53 AM, Philip Fennell 
<[email protected]<mailto:[email protected]>> wrote:

Hello,

I'm doing some work with XQueryX and it's not obvious how you create a union of 
path expressions. Given the example of:

(a | b | c)

which generates the following parse tree, using the java XQuery parser app,:

|QueryList
|   Module
|      MainModule
|         Prolog
|         QueryBody
|            Expr
|               PathExpr
|                  ParenthesizedExpr
|                     Expr
|                        UnionExpr |
|                           UnionExpr |
|                              PathExpr
|                                 StepExpr
|                                    AbbrevForwardStep
|                                       NodeTest
|                                          NameTest
|                                             QName a
|                              PathExpr
|                                 StepExpr
|                                    AbbrevForwardStep
|                                       NodeTest
|                                          NameTest
|                                             QName b
|                           PathExpr
|                              StepExpr
|                                 AbbrevForwardStep
|                                    NodeTest
|                                       NameTest
|                                          QName c

there doesn't seem to be anything in XQueryX that actually allows you to 
construct a UnionExpr.

I've taken to extending XQueryX with a xqx:unionExpr element but seeing the way 
the parse's output (see above) appears to treat it like a binaryOperatorExpr, 
with first and second operands, I thought I'd do the following:

<xqx:unionExpr>
  <xqx:firstOperand>
    <xqx:unionExpr>
      <xqx:firstOperand>
        <xqx:pathExpr>
          <xqx:stepExpr>
            <xqx:xpathAxis>child</xqx:xpathAxis>
            <xqx:nameTest>a</xqx:nameTest>
          </xqx:stepExpr>
        </xqx:pathExpr>
      </xqx:firstOperand>
      <xqx:secondOperand>
        <xqx:pathExpr>
          <xqx:stepExpr>
            <xqx:xpathAxis>child</xqx:xpathAxis>
            <xqx:nameTest>b</xqx:nameTest>
          </xqx:stepExpr>
        </xqx:pathExpr>
      </xqx:secondOperand>
    </xqx:unionExpr>
  </xqx:firstOperand>
  <xqx:secondOperand>
    <xqx:pathExpr>
      <xqx:stepExpr>
        <xqx:xpathAxis>child</xqx:xpathAxis>
        <xqx:nameTest>c</xqx:nameTest>
      </xqx:stepExpr>
    </xqx:pathExpr>
  </xqx:secondOperand>
</xqx:unionExpr>

which, with a tweak to the XQueryX to XQuery transform gives me this:

child::a | child::b | child::c


Would those who have a more intimate knowledge of the XQuery syntax tree and 
how you would go about implementing this let me know if what I've done is any 
good.

All feedback, good or bad, would be much appreciated.


Many thanks in advance.


Philip






_______________________________________________
[email protected]<mailto:[email protected]>
http://x-query.com/mailman/listinfo/talk


_______________________________________________
[email protected]
http://x-query.com/mailman/listinfo/talk

Reply via email to