[xquery-talk] Q: computed element and namespace

William Candillon wcandillon at gmail.com
Fri Jan 31 01:43:31 PST 2014


Oups indeed, thank you!

On Fri, Jan 31, 2014 at 10:41 AM, Hermann Stamm-Wilbrandt
<STAMMW at de.ibm.com> wrote:
> Thanks William!
> That does not return what was requested, but changing "pre" to "urn:u" two
> times does:
> http://try.zorba.io/queries/xquery/BwMzU0SPVdY9X7f5DO42g15Gt94%3D
>
>
> Mit besten Gruessen / Best wishes,
>
> Hermann Stamm-Wilbrandt
> Level 3 support for XML Compiler team and Fixpack team lead
> WebSphere DataPower SOA Appliances
> https://www.ibm.com/developerworks/mydeveloperworks/blogs/HermannSW/
> https://twitter.com/HermannSW/
> http://stamm-wilbrandt.de/GraphvizFiddle/
> ----------------------------------------------------------------------
> IBM Deutschland Research & Development GmbH
> Vorsitzende des Aufsichtsrats: Martina Koederitz
> Geschaeftsfuehrung: Dirk Wittkopp
> Sitz der Gesellschaft: Boeblingen
> Registergericht: Amtsgericht Stuttgart, HRB 243294
>
>
>
>   From:       William Candillon <wcandillon at gmail.com>
>
>   To:         Michael Kay <mike at saxonica.com>,
>
>   Cc:         Hermann Stamm-Wilbrandt/Germany/IBM at IBMDE, "talk at x-query.com Talk" <talk at x-query.com>
>
>   Date:       01/31/2014 10:17 AM
>
>   Subject:    Re: [xquery-talk] Q: computed element and namespace
>
>
>
>
>
>
> In XQuery 3.0 you could write the following:
> element {"a"}{
>   (
>     namespace pre { "urn:u" },
>     element {fn:QName("pre", "pre:b")}{},
>     element {fn:QName("pre", "pre:c")}{}
>   )
> }
> http://try.zorba.io/queries/xquery/OEkkPFKllu7moQ5l6eCBTQ1fiBY%3D
>
> On Fri, Jan 31, 2014 at 9:51 AM, Michael Kay <mike at saxonica.com> wrote:
>>
>> On 31 Jan 2014, at 08:12, Hermann Stamm-Wilbrandt <STAMMW at de.ibm.com>
> wrote:
>>
>>>
>>> From (1):
>>> In XPath Version 2.0, the namespace axis is deprecated and need not be
>>> supported by a host language. A host language that does not support the
>>> namespace axis need not represent namespace bindings in the form of
> nodes.
>>>
>>> XQuery (eg. Zorba or DataPower) does not support the namespace axis.
>>>
>>>
>>> <a><pre:b xmlns:pre="urn:u"/><pre:c xmlns:pre="urn:u"/></a>
>>>
>>> can be created by computed element constructors (2) by this:
>>>
>>> element {"a"}{
>>>  (
>>>    element {fn:QName("urn:u", "pre:b")}{},
>>>    element {fn:QName("urn:u", "pre:c")}{}
>>>  )
>>> }
>>>
>>> Is it true, that "equivalent" (not sure whether right term) XML
>>> <a xmlns:pre="urn:u"><pre:b/><pre:c/></a>
>>>
>>> cannot be created by computed element constructors in XQuery?
>>
>> If we're talking about XQuery 1.0, then yes, I believe that there is no
> way you can create an element with a namespace that is (a) unused on that
> element, and (b) not known statically.
>>
>> (I might be wrong; I seem to recall David Carlisle coming up with a
> devious workaround, but it was so devious I don't recall how it works).
>>
>> Query 3.0 introduces dynamic namespace node constructors to solve this
> problem. This leaves the language in the rather absurd situation that there
> is a construct to create namespace nodes, but no construct to retrieve
> them.
>>
>> The XQuery WG was very reluctant to support the namespace axis because
> many vendors claimed that it was impossible to support it efficiently. Some
> of those vendors, when told to look at open source implementations like xt
> and Saxon that had efficient implementations, said that their company
> policy did not allow them to read open source code. Shame.
>>
>> Michael Kay
>> Saxonica
>>
>>>
>>>
>>> It can be created by XSLT 1.0+EXSLT stylesheet:
>>>
>>> $ java -jar ~/Desktop/saxon6-5-5/saxon.jar dummy.xml compel.xsl ; echo
>>> <a xmlns:pre="urn:u"><pre:b/><pre:c/></a>
>>> $
>>> $ cat compel.xsl
>>> <xsl:stylesheet version="1.0"
>>>  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
>>>  xmlns:exslt = "http://exslt.org/common"
>>>>
>>>  <xsl:output omit-xml-declaration="yes" />
>>>
>>>  <xsl:template match="/">
>>>    <xsl:variable name="tmp">
>>>      <xsl:element name="a">
>>>        <xsl:attribute name="pre:ʎɯɯnp" xmlns:pre="urn:u"/>
>>>        <xsl:element name="pre:b" xmlns:pre="urn:u"/>
>>>        <xsl:element name="pre:c" xmlns:pre="urn:u"/>
>>>      </xsl:element>
>>>    </xsl:variable>
>>>
>>>    <xsl:apply-templates select="exslt:node-set($tmp)/*"/>
>>>  </xsl:template>
>>>
>>>  <xsl:template match="*">
>>>    <xsl:copy>
>>>      <xsl:copy-of select="namespace::*|attribute::*[local-name
>>> ()!='ʎɯɯnp']"/>
>>>      <xsl:apply-templates select="*"/>
>>>    </xsl:copy>
>>>  </xsl:template>
>>>
>>> </xsl:stylesheet>
>>> $
>>>
>>>
>>> (1) http://www.w3.org/TR/xpath20/#dt-in-scope-namespaces
>>> (2) http://www.w3.org/TR/xquery/#id-computedElements
>>>
>>> Mit besten Gruessen / Best wishes,
>>>
>>> Hermann Stamm-Wilbrandt
>>> Level 3 support for XML Compiler team and Fixpack team lead
>>> WebSphere DataPower SOA Appliances
>>> https://www.ibm.com/developerworks/mydeveloperworks/blogs/HermannSW/
>>> https://twitter.com/HermannSW/
>>> http://stamm-wilbrandt.de/GraphvizFiddle/
>>> ----------------------------------------------------------------------
>>> IBM Deutschland Research & Development GmbH
>>> Vorsitzende des Aufsichtsrats: Martina Koederitz
>>> Geschaeftsfuehrung: Dirk Wittkopp
>>> Sitz der Gesellschaft: Boeblingen
>>> Registergericht: Amtsgericht Stuttgart, HRB 243294
>>>
>>> _______________________________________________
>>> talk at x-query.com
>>> http://x-query.com/mailman/listinfo/talk
>>
>>
>> _______________________________________________
>> talk at x-query.com
>> http://x-query.com/mailman/listinfo/talk
>
>



More information about the talk mailing list