我在下面显示了示例Xml数据,如果title lang ="it"那么我想得到类别属性值?
<book category="CLASSICS">
<title lang="it">Purgatorio</title>
<author>Dante Alighieri</author>
<year>1308</year>
<price>30.00</price>
</book>
Run Code Online (Sandbox Code Playgroud) 如何使用XQuery删除xml中的处理指令标签?
XML 示例:
<a>
<text><?test id="1" loc="start"?><b type="bold">1. </b>
Security or protection <?test id="1" loc=="end"?><?test id="1" loc="start"?><b type="bold">2.
</b> Analyse.
<?test id="1" loc="end"?></text>
</a>
Run Code Online (Sandbox Code Playgroud)
预期输出:
<a>
<text><b type="bold">1. </b> Security or protection <b type="bold">2.
</b> Analyse.</text>
</a>
Run Code Online (Sandbox Code Playgroud)
请帮助删除 PI 标记。
嗨,我在MarkLogic中使用了cts搜索和XPath查询,并且还使用了多个参数。我需要同时捕获大写字母和小写字母(在XML搜索中)。
样本XML
<PP uri="/2000_4_174.xml">
<P name="jur" value="ht"/>
<P name="sitting" value="17 AUGUST"/>
<P name="startpage" value="174"/>
</PP>
Run Code Online (Sandbox Code Playgroud)
我的XQuery
let $attr1 := "JUR"
let $attr2 := "startpage"
let $value1 := "ht"
let $value2 := "174"
let $uri := //PP[P[@name=$attr1 and @value=$value1] and P[@name=$attr2 and @value=$value2]]/@uri
return $uri
Run Code Online (Sandbox Code Playgroud)
当$ attr1值为jur时,查询成功运行,但是我想提供大写或小写形式的值。请让我知道任何选择。
注意:更改归类cts后,搜索可以同时使用大写和小写字母,但XPath查询不起作用。
我已经发布了示例 XML 和预期的输出有助于获得结果。
示例 XML
<root>
<A id="1">
<B id="2"/>
<C id="2"/>
</A>
</root>
Run Code Online (Sandbox Code Playgroud)
预期输出:
<A id="1"/>
Run Code Online (Sandbox Code Playgroud) 您能否提供查询以启用收集词典.
我使用过这种编码,但我遇到了同样的问题.
xquery版本"1.0-ml";
import module namespace admin = "http://marklogic.com/xdmp/admin"
at "/MarkLogic/admin.xqy";
let $config := admin:get-configuration()
return
admin:database-set-collection-lexicon($config,
xdmp:database("myDatabase"), fn:true())
Run Code Online (Sandbox Code Playgroud)
谢谢!
我正在使用mem:node-replace来替换内容。但它花费了太多时间。我遇到了超时错误。有什么替代方法吗?
找到示例 Xquery:
xquery version "1.0-ml";
declare namespace html = "http://www.w3.org/1999/xhtml";
import module namespace mem = "http://xqdev.com/in-mem-update"
at '/MarkLogic/appservices/utils/in-mem-update.xqy';
let $uri := cts:uri-match((concat('*',$id ,'*')),(),cts:collection-query($collection))
let $data := doc($uri)
let $final := mem:node-replace($data//title[@id='2'],doc($uri1)//title[@id='2'])
return (
xdmp:document-insert('/test/sample.xml',$final)
)
Run Code Online (Sandbox Code Playgroud) 我尝试过下面提到的 XQuery 。
declare variable $path as xs:string :="D:\Mongo\";
let $uri :="/MJ/1932/Vol1/Part1/387.xml"
let $x := fn:normalize-space(fn:replace($uri,"/"," "))
for $i in fn:tokenize($x, " ")
let $j := fn:concat($path,$i)
return($j)
Run Code Online (Sandbox Code Playgroud)
实际产量
D:\Mongo\MJ
D:\Mongo\1932
D:\Mongo\Vol1
D:\Mongo\Part1
D:\Mongo\387.xml
Run Code Online (Sandbox Code Playgroud)
预期产出
D:\Mongo\MJ
D:\Mongo\MJ\1932
D:\Mongo\MJ\1932\Vol1
D:\Mongo\MJ\1932\Vol1\Part1
D:\Mongo\MJ\1932\Vol1\Part1\387.xml
Run Code Online (Sandbox Code Playgroud)
请建议我如何更改动态变量值。
查询:
let $collection := "sampledata"
for $uri1 in cts:uris((),(),(
cts:element-query(xs:QName("root"),
cts:and-query((
cts:element-attribute-value-query(xs:QName("root"),xs:QName($value1),$value2),
cts:element-attribute-value-query(xs:QName("root"),xs:QName($value3),$value4),
cts:element-value-query(xs:QName("year"),$value5),
cts:element-value-query(xs:QName("month"),$value6),
cts:element-attribute-value-query(xs:QName("num"),xs:QName("value"),$value7)
)))) )
return $uri1
Run Code Online (Sandbox Code Playgroud)
如何在上面提到的xquery中添加集合名称.
我正在使用,fn:distinct-values
但是遇到了区分大小写的问题。
我需要删除MarkLogic db中的重复值。
Run Code Online (Sandbox Code Playgroud)Result : Antony antony
但我想得到一个结果,且没有任何重复:
安东尼或安东尼。
如何删除新行字符.
Sample Code.
let $b := <root><title>Fees • Levies<?brk type="line"?>
Other file</title></root>
return replace($b//title/text(),'\n','')
Expected Output :
Fees • Levies Other file
Run Code Online (Sandbox Code Playgroud)