Thank you Mike And Ghislain

may be  xPath/xQuery 3.2 will have the possibility of different default 
namespaces for input and output elements ;-)
and also the possibility to bind a prefix to the null namespace (“”) ...

Always
Leo



> On 01 Jun 2016, at 13:15, Michael Kay <[email protected]> wrote:
> 
> If the input and output are both in a namespace, and you want the output to 
> be in a namespace but with no namespace prefix, then I think your options are:
> 
> (a) Use *:name in path expressions (which may over-select)
> 
> (b) Bind a prefix p to the input namespace and use p:name in path expressions 
> (which is tedious)
> 
> (c) Use Q{}name in path expressions (which is 3.0 only, and tedious)
> 
> (d) Use computed element constructors, and binding the default namespace to 
> the input namespace
> 
> (e) Use XSLT 2.0 with the default-xpath-namespace attribute.
> 
> Sadly, I remember trying to persuade the XQuery WG to allow different default 
> namespaces for input and output element names, and the general reaction was 
> "Mike, why do you keep trying to make namespaces even more complicated than 
> they are already?". So XQuery repeated the mistake of XSLT 1.0, only in a 
> slightly different form.
> 
> Handling input documents with a default namespace remains by a good measure 
> the #1 xpath usability problem, a new StackOverflow user falls into the trap 
> nearly every day.
> 
> Michael Kay
> Saxonica
> 
> 
> 
> 
>> On 1 Jun 2016, at 10:44, Ghislain Fourny <[email protected] <mailto:[email protected]>> 
>> wrote:
>> 
>> Hi Leo,
>> 
>> I'm glad!
>> 
>> Should this happen, I guess you could add a filter using an XPath function 
>> to test for the namespace of the name of the selected element.
>> 
>> https://www.w3.org/XML/Group/qtspecs/specifications/xpath-functions-30/html/Overview.html#func-node-name
>>  
>> <https://www.w3.org/XML/Group/qtspecs/specifications/xpath-functions-30/html/Overview.html#func-node-name>
>> and
>> https://www.w3.org/XML/Group/qtspecs/specifications/xpath-functions-30/html/Overview.html#func-namespace-uri-from-QName
>>  
>> <https://www.w3.org/XML/Group/qtspecs/specifications/xpath-functions-30/html/Overview.html#func-namespace-uri-from-QName>
>> 
>> You can test for the absence of namespace easily.
>> 
>> There may be even shorter tricks, I wouldn't be surprised if Mike got 
>> something out of his magic hat :-)
>> 
>> Kind regards,
>> Ghislain
>> 
>> 
>> On Wed, Jun 1, 2016 at 11:38 AM, Leo Studer <[email protected] 
>> <mailto:[email protected]>> wrote:
>> Hi Ghislain
>> 
>> thank you for your input, which solves my problem.
>> 
>> However, if I have the same element name in two different namespaces, then 
>> the use of a wildcard namespace makes problems ;-).
>> 
>> Always
>> Leo
>> 
>>> On 01 Jun 2016, at 11:06, Ghislain Fourny <[email protected] <mailto:[email protected]>> 
>>> wrote:
>>> 
>>> Hi Leo,
>>> 
>>> If the input has no namespace, then I think you can declare the default 
>>> namespace according to your output (if it is important to you that your 
>>> output uses it as a default namespace).
>>> 
>>> Then there is a workaround to navigate the input with /*:foo/*:bar 
>>> expressions, where the joker prefix should catch the absence of namespace.
>>> 
>>> I hope it helps?
>>> 
>>> Kind regards,
>>> Ghislain
>>>  
>>> 
>>> On Wed, Jun 1, 2016 at 10:20 AM, Leo Studer <[email protected] 
>>> <mailto:[email protected]>> wrote:
>>> Hi Michael
>>> 
>>> >
>>> >
>>> > The main difference from the XSLT xpath-default-namespace is that this 
>>> > default applies both to names in path expressions and to names in element 
>>> > constructors, which is inconvenient when the input and output documents 
>>> > are in different namespaces.
>>> >
>>> > Michael Kay
>>> > Saxonica
>>> 
>>> this is exactly my problem. The XML file has no namespace and the output 
>>> has a namespace.
>>> 
>>> Fist I tried
>>> 
>>>         declare namespace null=“”;
>>> 
>>> and in the query I wrote something like
>>> 
>>>         null:elementName
>>> 
>>> Then I get the error that namespace null is not declared….
>>> 
>>> The only solution I found is to put a namespace in the XML file (which is 
>>> not really what I want).
>>> 
>>> Is there another way?
>>> 
>>> Cheers
>>> Leo
>>> _______________________________________________
>>> [email protected] <mailto:[email protected]>
>>> http://x-query.com/mailman/listinfo/talk 
>>> <http://x-query.com/mailman/listinfo/talk>
>>> _______________________________________________
>>> [email protected] <mailto:[email protected]>
>>> http://x-query.com/mailman/listinfo/talk 
>>> <http://x-query.com/mailman/listinfo/talk>
>> 
>> _______________________________________________
>> [email protected] <mailto:[email protected]>
>> http://x-query.com/mailman/listinfo/talk 
>> <http://x-query.com/mailman/listinfo/talk>
>> 
>> _______________________________________________
>> [email protected] <mailto:[email protected]>
>> http://x-query.com/mailman/listinfo/talk
> 
> _______________________________________________
> [email protected]
> http://x-query.com/mailman/listinfo/talk

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

Reply via email to