Re: [basex-talk] getting the type of an arbitrary node
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
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
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
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
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
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