Skip to content

Instantly share code, notes, and snippets.

@ryanjdew
ryanjdew / memory-operations.xqy
Created March 30, 2012 17:20
XQuery In Memory XML Operations
xquery version "1.0-ml";
(:~
Copyright (c) 2012 Ryan Dew
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"),
to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
@ryanjdew
ryanjdew / fn-has-children.xqy
Last active October 19, 2018 21:01
XQuery 3.0 functions in XQuery 1.0
xquery version "1.0-ml";
declare namespace html = "http://www.w3.org/1999/xhtml";
declare function local:has-children($node as node()?) as xs:boolean {
fn:exists($node/child::node())
};
let $doc := document {
element html:html {
element html:head {
@ryanjdew
ryanjdew / word-query-wo-synonym.xqy
Created June 8, 2012 13:12
Example cts:word-query without synonym option
element results {
for $i in cts:search(/content,
cts:word-query(('Jesus Christ','Christ','Messiah','Savior','Redeemer','Lord'),('case-sensitive'))
)
[1 to 10]/(element title { attribute score {cts:score(.)}, string(title)})
order by $i/@score descending, $i ascending
return $i
}
(: =>
<results>
@ryanjdew
ryanjdew / word-query-w-synonym.xqy
Created June 8, 2012 13:15
Example cts:word-query with synonym option
element results {
for $i in cts:search(/content,
cts:word-query(('Jesus Christ','Christ','Messiah','Savior','Redeemer','Lord'),('case-sensitive','synonym'))
)
[1 to 10]/(element title { attribute score {cts:score(.)}, string(title)})
order by $i/@score descending, $i ascending
return $i
}
(: =>
<results>
@ryanjdew
ryanjdew / transform-example-1.xqy
Created June 14, 2012 13:28
In Memory Advanced Transform Statements, Example 1
(:
copy $c := fn:root($file)
modifiy (replace nodes $c/(: path where $file was :)/title with element title {"my new title"},
insert nodes attribute new-attribute {"my new attribute"} as last into
$c/(: path where $file was :))
return $c
=>
:)
(mem:queue(),
mem:replace($file/title, element title {"my new title"}),
@ryanjdew
ryanjdew / advanced-transform-2.xqy
Created June 14, 2012 13:30
In Memory Advanced Transform Statements, Example 2
(:
let $oldx := /a/b/x
return
copy $newx := $oldx
modify (rename node $newx as "newx",
replace value of node $newx with $newx * 2)
return ($oldx, $newx)
=>
:)
let $oldx := /a/b/x
@ryanjdew
ryanjdew / new-node-xpath-l.xqy
Created June 23, 2012 13:25
XPath returning new nodes
let $root := element root {
element _1 {50},
element _2 {40},
element _3 {30},
element _4 {20},
element _5 {10}
}
return $root/*/text {node-name(.)}
(: =>
@ryanjdew
ryanjdew / new-node-xpath-2.xqy
Created June 23, 2012 13:40
XPath returning new nodes 2
let $root := element root {
element _1 {50},
element _2 {40},
element _3 {30},
element _4 {20},
element _5 {10}
}
return unordered { $root/*/text {node-name(.)} }
(: =>
@ryanjdew
ryanjdew / new-node-xpath-3.xqy
Created June 23, 2012 13:51
XPath returning new nodes 3
xquery version "1.0-ml";
declare function local:sleep($node as node()) {
(xdmp:sleep(xs:integer($node)),
text {node-name($node)})
};
let $root := element root {
element _1 {50},
element _2 {40},
@ryanjdew
ryanjdew / static-check.xqy
Created July 19, 2012 13:08
Static Checking XQuery Main Modules
for $main-module in xdmp:eval("cts:uri-match('*.xqm')",
<options xmlns="xdmp:eval">
<database>{xdmp:modules-database()}</database>
</options>)
return xdmp:invoke($main-module, (),
<options xmlns="xdmp:eval">
<static-check>true</static-check>
</options>)