Re: [basex-talk] getting the type of an arbitrary node

2018-11-09 Thread Graydon Saunders
Hi Christian --

Thank you!  That will be useful.  (and might have been what dim memory was
trying to recall, too.)

-- Graydon

On Fri, Nov 9, 2018 at 1:37 PM Christian Grün 
wrote:

> Hi Graydon,
>
> Bridger has already given you a perfect reference.
>
> The XQuery Working Group decided it’s a cleaner solution to do node
> tests with typeswitch. If you want to do different things based on the
> node type, it should be a good alternative to the string-based
> approach:
>
>   declare function local:node-type(
> $node as node()
>   ) as xs:string {
> typeswitch($node)
>   case element() return 'element'
>   case comment() return 'comment'
>   case attribute() return 'attribute'
>   case text() return 'text'
>   case document-node() return 'document-node'
>   case processing-instruction() return 'processing-instruction'
>   default return error()
>   };
>   for $node in (, )
>   return local:node-type($node)
>
> Cheers,
> Christian
>
>
>
>
> On Fri, Nov 9, 2018 at 7:17 PM Graydon Saunders 
> wrote:
> >
> > Hi Bridger --
> >
> > Those are helpful, thanks!
> >
> > I was hoping for a built-in (extenstion!) function on the (possibly
> mistaken) supposition that BaseX just knows that things are in the internal
> representation and would nigh-certainly be quicker to have something that
> returns that value directly.
> >
> > -- Graydon
> >
> > On Fri, Nov 9, 2018 at 1:10 PM Bridger Dyson-Smith <
> bdysonsm...@gmail.com> wrote:
> >>
> >> HI Graydon -
> >>
> >> it isn't a builtin function, but maybe the functx:node-kind() and
> functx:sequence-type() functions are what you want[1,2]?
> >> Hope that helps.
> >>
> >> Best,
> >> Bridger
> >> [1] http://www.xqueryfunctions.com/xq/functx_node-kind.html
> >> [2] http://www.xqueryfunctions.com/xq/functx_sequence-type.html
> >>
> >> On Fri, Nov 9, 2018 at 12:40 PM Graydon Saunders 
> wrote:
> >>>
> >>> Hi!
> >>>
> >>> I am overcome with the cabbage-nature today, because I can't find this
> in the docs.
> >>>
> >>> I am convinced there's a way to go:
> >>>
> >>> (//some-element/node()) ! fn:node-type(.)
> >>>
> >>> and get a sequence of "element(),element(),text()..."  but do not know
> what the actual function is called. (it's not node-type()!)
> >>>
> >>> How ought I to be approaching this?
> >>>
> >>> Thanks!
> >>> Graydon
> >>>
> >>>
>


Re: [basex-talk] getting the type of an arbitrary node

2018-11-09 Thread Bridger Dyson-Smith
Graydon -

That makes sense. Maybe parsing the output of index:facets() would work? If
I'm understanding correctly, it will only work from the database level.

Bridger

On Fri, Nov 9, 2018 at 1:37 PM Christian Grün 
wrote:

> Hi Graydon,
>
> Bridger has already given you a perfect reference.
>
> The XQuery Working Group decided it’s a cleaner solution to do node
> tests with typeswitch. If you want to do different things based on the
> node type, it should be a good alternative to the string-based
> approach:
>
>   declare function local:node-type(
> $node as node()
>   ) as xs:string {
> typeswitch($node)
>   case element() return 'element'
>   case comment() return 'comment'
>   case attribute() return 'attribute'
>   case text() return 'text'
>   case document-node() return 'document-node'
>   case processing-instruction() return 'processing-instruction'
>   default return error()
>   };
>   for $node in (, )
>   return local:node-type($node)
>
> Cheers,
> Christian
>
>
>
>
> On Fri, Nov 9, 2018 at 7:17 PM Graydon Saunders 
> wrote:
> >
> > Hi Bridger --
> >
> > Those are helpful, thanks!
> >
> > I was hoping for a built-in (extenstion!) function on the (possibly
> mistaken) supposition that BaseX just knows that things are in the internal
> representation and would nigh-certainly be quicker to have something that
> returns that value directly.
> >
> > -- Graydon
> >
> > On Fri, Nov 9, 2018 at 1:10 PM Bridger Dyson-Smith <
> bdysonsm...@gmail.com> wrote:
> >>
> >> HI Graydon -
> >>
> >> it isn't a builtin function, but maybe the functx:node-kind() and
> functx:sequence-type() functions are what you want[1,2]?
> >> Hope that helps.
> >>
> >> Best,
> >> Bridger
> >> [1] http://www.xqueryfunctions.com/xq/functx_node-kind.html
> >> [2] http://www.xqueryfunctions.com/xq/functx_sequence-type.html
> >>
> >> On Fri, Nov 9, 2018 at 12:40 PM Graydon Saunders 
> wrote:
> >>>
> >>> Hi!
> >>>
> >>> I am overcome with the cabbage-nature today, because I can't find this
> in the docs.
> >>>
> >>> I am convinced there's a way to go:
> >>>
> >>> (//some-element/node()) ! fn:node-type(.)
> >>>
> >>> and get a sequence of "element(),element(),text()..."  but do not know
> what the actual function is called. (it's not node-type()!)
> >>>
> >>> How ought I to be approaching this?
> >>>
> >>> Thanks!
> >>> Graydon
> >>>
> >>>
>


Re: [basex-talk] getting the type of an arbitrary node

2018-11-09 Thread Christian Grün
Hi Graydon,

Bridger has already given you a perfect reference.

The XQuery Working Group decided it’s a cleaner solution to do node
tests with typeswitch. If you want to do different things based on the
node type, it should be a good alternative to the string-based
approach:

  declare function local:node-type(
$node as node()
  ) as xs:string {
typeswitch($node)
  case element() return 'element'
  case comment() return 'comment'
  case attribute() return 'attribute'
  case text() return 'text'
  case document-node() return 'document-node'
  case processing-instruction() return 'processing-instruction'
  default return error()
  };
  for $node in (, )
  return local:node-type($node)

Cheers,
Christian




On Fri, Nov 9, 2018 at 7:17 PM Graydon Saunders  wrote:
>
> Hi Bridger --
>
> Those are helpful, thanks!
>
> I was hoping for a built-in (extenstion!) function on the (possibly mistaken) 
> supposition that BaseX just knows that things are in the internal 
> representation and would nigh-certainly be quicker to have something that 
> returns that value directly.
>
> -- Graydon
>
> On Fri, Nov 9, 2018 at 1:10 PM Bridger Dyson-Smith  
> wrote:
>>
>> HI Graydon -
>>
>> it isn't a builtin function, but maybe the functx:node-kind() and 
>> functx:sequence-type() functions are what you want[1,2]?
>> Hope that helps.
>>
>> Best,
>> Bridger
>> [1] http://www.xqueryfunctions.com/xq/functx_node-kind.html
>> [2] http://www.xqueryfunctions.com/xq/functx_sequence-type.html
>>
>> On Fri, Nov 9, 2018 at 12:40 PM Graydon Saunders  
>> wrote:
>>>
>>> Hi!
>>>
>>> I am overcome with the cabbage-nature today, because I can't find this in 
>>> the docs.
>>>
>>> I am convinced there's a way to go:
>>>
>>> (//some-element/node()) ! fn:node-type(.)
>>>
>>> and get a sequence of "element(),element(),text()..."  but do not know what 
>>> the actual function is called. (it's not node-type()!)
>>>
>>> How ought I to be approaching this?
>>>
>>> Thanks!
>>> Graydon
>>>
>>>


Re: [basex-talk] getting the type of an arbitrary node

2018-11-09 Thread Graydon Saunders
Hi Bridger --

Those are helpful, thanks!

I was hoping for a built-in (extenstion!) function on the (possibly
mistaken) supposition that BaseX just knows that things are in the internal
representation and would nigh-certainly be quicker to have something that
returns that value directly.

-- Graydon

On Fri, Nov 9, 2018 at 1:10 PM Bridger Dyson-Smith 
wrote:

> HI Graydon -
>
> it isn't a builtin function, but maybe the functx:node-kind() and
> functx:sequence-type() functions are what you want[1,2]?
> Hope that helps.
>
> Best,
> Bridger
> [1] http://www.xqueryfunctions.com/xq/functx_node-kind.html
> [2] http://www.xqueryfunctions.com/xq/functx_sequence-type.html
>
> On Fri, Nov 9, 2018 at 12:40 PM Graydon Saunders 
> wrote:
>
>> Hi!
>>
>> I am overcome with the cabbage-nature today, because I can't find this in
>> the docs.
>>
>> I am convinced there's a way to go:
>>
>> (//some-element/node()) ! fn:node-type(.)
>>
>> and get a sequence of "element(),element(),text()..."  but do not know
>> what the actual function is called. (it's not node-type()!)
>>
>> How ought I to be approaching this?
>>
>> Thanks!
>> Graydon
>>
>>
>>


Re: [basex-talk] getting the type of an arbitrary node

2018-11-09 Thread Bridger Dyson-Smith
HI Graydon -

it isn't a builtin function, but maybe the functx:node-kind() and
functx:sequence-type() functions are what you want[1,2]?
Hope that helps.

Best,
Bridger
[1] http://www.xqueryfunctions.com/xq/functx_node-kind.html
[2] http://www.xqueryfunctions.com/xq/functx_sequence-type.html

On Fri, Nov 9, 2018 at 12:40 PM Graydon Saunders 
wrote:

> Hi!
>
> I am overcome with the cabbage-nature today, because I can't find this in
> the docs.
>
> I am convinced there's a way to go:
>
> (//some-element/node()) ! fn:node-type(.)
>
> and get a sequence of "element(),element(),text()..."  but do not know
> what the actual function is called. (it's not node-type()!)
>
> How ought I to be approaching this?
>
> Thanks!
> Graydon
>
>
>


[basex-talk] getting the type of an arbitrary node

2018-11-09 Thread Graydon Saunders
Hi!

I am overcome with the cabbage-nature today, because I can't find this in
the docs.

I am convinced there's a way to go:

(//some-element/node()) ! fn:node-type(.)

and get a sequence of "element(),element(),text()..."  but do not know what
the actual function is called. (it's not node-type()!)

How ought I to be approaching this?

Thanks!
Graydon