comment()

Wednesday, 7 August 2019 · 5 messages · last reply 8 Aug 2019
M
Marc7 Aug 2019 18:52 #

Hi, I want to write a comment in the xml I produce with my XQuery. I try to use the comment() function, but each time I want to put something inside the () i have a syntax error.

for example :

<test>
{comment("test"),
   let $r := random:integer(100) + 1
for $j in (/*)[$r]
return (
   $r,$j)
}
</test>

or (who is more what I want to do)

<test>
{
   let $r := random:integer(100) + 1
for $j in (/*)[$r]
return (comment("$r"),$j)
}
</test>

I don't find any example on how to use the comment function. Anyone have example about that use?

Thanks

Marc

MH
Martin Honnen7 Aug 2019 19:03 #
Quoted text · Marc · 4 lines
On 07.08.2019 18:52, Marc wrote: > I want to write a comment in the xml I produce with my XQuery. > I try to use the comment() function, but each time I want to put > something inside the () i have a syntax error.

If you want to create a comment node computed by an expression use comment { expression }

see https://www.w3.org/TR/xquery-31/#doc-xquery31-CompCommentConstructor

So comment { $r } seems to be what you want to do.

MS
Majewski, Steven Dennis (sdm7g)7 Aug 2019 19:22 #

Also literal <!— XML comments —> work just like other literal XML, as there is a different syntax for (: XQuery comments :)

XQuery: <comments> <!-- more comments... --> { collection()[1]//comment() } { comment { " last comment " } }</comments> (: XQuery Comment :)

Produced output:

<comments>
  <!-- more comments... -->
  <!-- xmlns="http://www.tei-c.org/ns/1.0"  namespace removed and root element TEI => TEI.2 to conform to DTD based TEI stylesheets -->
  <!-- Real PID: <idno type="uva-pid" >uva-lib:2826790</idno>  Fake PID: -->
  <!-- FIXME: figure on p116 & 117: no image and table missing from transcription -->
  <!-- FIXME: figure on p116 & 117: no image and table missing from transcription -->
  <!-- last comment -->
</comments>

"comment()" is the XPath syntax to match a comment node, not a function that creates comments.

— Steve M.

Quoted text · Martin Honnen · 16 lines
> On Aug 7, 2019, at 1:03 PM, Martin Honnen <martin.honnen at gmx.de> wrote: > > On 07.08.2019 18:52, Marc wrote: > >> I want to write a comment in the xml I produce with my XQuery. >> I try to use the comment() function, but each time I want to put >> something inside the () i have a syntax error. > > If you want to create a comment node computed by an expression use > comment { expression } > > see https://www.w3.org/TR/xquery-31/#doc-xquery31-CompCommentConstructor > > So > comment { $r } > seems to be what you want to do.
M
Marc8 Aug 2019 08:46 #

Thanks you very much. I use very often the comment() with XSLT, and I confuse it with the "comment" literal of XQuery ! Marc

Quoted text · Steven Dennis (sdm7g) · 42 lines
Le 07/08/2019 à 19:22, Majewski, Steven Dennis (sdm7g) a écrit : > > > Also literal <!— XML comments —> work just like other literal XML, as there is a different syntax for (: XQuery comments :) > > XQuery: <comments> <!-- more comments... --> { collection()[1]//comment() } { comment { " last comment " } }</comments> (: XQuery Comment :) > > Produced output: > > <comments> > <!-- more comments... --> > <!-- xmlns="http://www.tei-c.org/ns/1.0" namespace removed and root element TEI => TEI.2 to conform to DTD based TEI stylesheets --> > <!-- Real PID: <idno type="uva-pid" >uva-lib:2826790</idno> Fake PID: --> > <!-- FIXME: figure on p116 & 117: no image and table missing from transcription --> > <!-- FIXME: figure on p116 & 117: no image and table missing from transcription --> > <!-- last comment --> > </comments> > > > "comment()" is the XPath syntax to match a comment node, not a function that creates comments. > > — Steve M. > > > >> On Aug 7, 2019, at 1:03 PM, Martin Honnen <martin.honnen at gmx.de> wrote: >> >> On 07.08.2019 18:52, Marc wrote: >> >>> I want to write a comment in the xml I produce with my XQuery. >>> I try to use the comment() function, but each time I want to put >>> something inside the () i have a syntax error. >> >> If you want to create a comment node computed by an expression use >> comment { expression } >> >> see https://www.w3.org/TR/xquery-31/#doc-xquery31-CompCommentConstructor >> >> So >> comment { $r } >> seems to be what you want to do. >
MH
Martin Honnen8 Aug 2019 12:53 #
Quoted text · Marc · 3 lines
Am 08.08.2019 um 08:46 schrieb Marc: > I use very often the comment() with XSLT, and I confuse it with the > "comment" literal of XQuery !

But even in XSLT the use of "comment()" is only for selecting/matching comment nodes (or for declaring a type), not for creating/constructing them. In XSLT you use the xsl:comment instruction to construct a comment node.


⚡Generated with XQuery