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 <christian.gruen@gmail.com> 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 (<a/>, <!-- x -->)
  return local:node-type($node)

Cheers,
Christian




On Fri, Nov 9, 2018 at 7:17 PM Graydon Saunders <graydonish@gmail.com> 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 <bdysonsmith@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 <graydonish@gmail.com> 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
>>>
>>>