标签: marklogic

为什么不在元素声明中看到变量?

以下代码给出了错误:

[1.0-ml] XDMP-UNDVAR: (err:XPST0008) Undefined variable $ename
Run Code Online (Sandbox Code Playgroud)

但是,如果我更改xsl:element<xsl:element name="yyyXXX">它,则表明它在值中看到$ ename,即

<yyyXXX>zzz</yyyXXX>

下面的样式表在Saxonica 9.x中运行得很好

谢谢.


xquery version "1.0-ml";

xdmp:xslt-eval(
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
   xmlns:xdmp="http://marklogic.com/xdmp"        
   extension-element-prefixes="xdmp"
    version="2.0">     

 <xsl:template match="/">
  <xsl:variable name="ename" select="'zzz'"/>
  <xsl:element name="yyy{$ename}">       
   <xsl:value-of select="$ename"/>
  </xsl:element>
 </xsl:template>
</xsl:stylesheet>
,document{ <doc/> })
Run Code Online (Sandbox Code Playgroud)

xslt marklogic

1
推荐指数
1
解决办法
587
查看次数

Xquery - 这里有什么问题

我希望节点替换为$ person变量.我需要改变什么?

以下代码应将序列中人员的名称更改为X.

declare function local:ChangeName($person)
{
  xdmp:node-replace($person//Name/text, text { "X" } )

  <p>{$person}</p>
};

let $b := <Person>
      <Name>B</Name>
      <IsAnnoying>No</IsAnnoying>
  </Person>

let $j := <Person>
      <Name>J</Name>
      <IsAnnoying>No</IsAnnoying>
  </Person>

let $people := ($b, $j)

return $people ! local:ChangeName(.)
Run Code Online (Sandbox Code Playgroud)

xquery sequence marklogic

1
推荐指数
1
解决办法
82
查看次数

MarkLogic:使用xquery获取元素的xpath

我试图找到xml中每个元素的xpath并将其作为元素值.我的源文件看起来像:

<root>
<parent1>
  <child1></child1>
  <child2></child2>
</parent1>

<parent2>
  <child1></child1>
</parent2>
</root>
Run Code Online (Sandbox Code Playgroud)

我想要一个输出像:

<root>
<parent1>
  <child1> /root/parent1/child1 </child1>
  <child2> /root/parent1/child2 </child2>
</parent1>

<parent2>
  <child1> /root/parent2/child1 </child1>
</parent2>
</root>
Run Code Online (Sandbox Code Playgroud)

我目前得到的输出为:

<root>
<parent1>
 <child1> /root/parent1/child1 </child1>
 <child2> /root/parent1/child2 </child2>
 </parent1>"

 <parent2>
 <child1> /root/parent1/parent2/child1 </child1>
 </parent2>
 </root>
Run Code Online (Sandbox Code Playgroud)

我无法正确遍历以找到xpath.任何输入都是有价值的.

xml xpath xquery marklogic

1
推荐指数
1
解决办法
559
查看次数

如何整理Marklogic中的处理指令

我的内容在我的旧数据库中既不是有效的HTML也不是XML.考虑到这个事实,很难清理遗留问题,我想在MarkLogic中使用xdmp:tidy来整理它.我目前正在使用ML-8.

<sub>
   <p>
      <???&dagger;?>
   </p>
</sub>
Run Code Online (Sandbox Code Playgroud)

我正在通过某种方式将此内容传递给整洁的功能:

declare variable $xml as node() := 
       <content>
           <![CDATA[<p><???&dagger;?></p>]]>
       </content>;

xdmp:tidy(xdmp:quote($xml//text()),
   <options xmlns="xdmp:tidy">
    <assume-xml-procins>yes</assume-xml-procins>
    <quiet>yes</quiet>
    <tidy-mark>no</tidy-mark>
    <enclose-text>yes</enclose-text>
    <indent>yes</indent>
  </options>)
Run Code Online (Sandbox Code Playgroud)

结果它返回:

<p>
<?  ?&dagger;?>
</p>
Run Code Online (Sandbox Code Playgroud)

现在这个结果不是有效的xml格式(我通过XML验证器检查过),因为当我尝试将这个XML插入MarkLogic时,它会抛出一个错误,说'MALFORMED BODY | 无效的处理指令名称'.

我对PI进行了一些调查,但没有太多运气.我本可以尝试在没有PI的情况下保存内容,但这也不是一个有效的PI.

xquery tidy htmltidy marklogic marklogic-8

1
推荐指数
1
解决办法
167
查看次数

xdmp:完整网址的目录

是否存在类似于xdmp:directory的目录,用于遍历具有不以"/"开头的uris的文档,即" http://something.other.com/documents/ "?或者是否有某种方法可以获取文档uri与正则表达式匹配的所有文档?

例如,我想拉文件:

marklogic marklogic-8

1
推荐指数
1
解决办法
244
查看次数

如何在MarkLogic中查找XML文档大小

我试图在部分性能中计算MarkLogic中XML的doc大小.有人可以帮我解决任何内置函数或任何查询,我可以计算我的文档的准确大小?我有一个像这样的公式:

{string-length(string(data($doc))) idiv 2}
Run Code Online (Sandbox Code Playgroud)

xquery marklogic nosql xquery-3.0 marklogic-8

1
推荐指数
2
解决办法
1205
查看次数

Marklogic,Xquery

我正在使用MarkLogic查询控制台.我的XQuery文件无法正常工作,我遇到此错误MarkLogic Xquery请求错误:

XDMP-UNEXPECTED :(错误:XPST0003)意外的令牌语法错误,意外的Dollar_"

这是我正在执行的代码:

declare function fill:getA() as node()* { 
  for $projectId in /cf:Project/@Id/string() 
    $s := fill:getS($projectId)    
    $t := fill:getT($projectId) 
Run Code Online (Sandbox Code Playgroud)

xquery marklogic

1
推荐指数
1
解决办法
251
查看次数

MarkLogic - 获得不同的价值观

我有一个包含XML文档的数据库,大致如此:

<document>
  <question_item>
    <question>What is your name?</question>
  </question_item>
  <question_item>
    <question>What is your address?</question>
  </question_item>
...
</document>
Run Code Online (Sandbox Code Playgroud)

我希望能够获取一个搜索词,然后返回一个明确的问题列表,其中找到该术语,例如使用上面的数据搜索"name",将返回一个结果,"你的名字是什么?".

我已经成功实现了这一点fn:distinct-values,但显然效率不高.

我想用CTS实现这个.我尝试过以下方法:

for $question in cts:element-values(
  xs:QName('question'),(),(), 
  cts:element-word-query(xs:QName("question"), "name"))
return $question
Run Code Online (Sandbox Code Playgroud)

然而,这会导致问题在问题文本中没有"名称".例如,在上面的例子中,返回了两个问题.我认为这是因为我正在使用的查询未经过滤传递,因此如果该片段存在匹配,它将从片段返回任何问题.

这个假设是否正确?

我能做些什么才能实现我想做的事 - 有效率?

谢谢!

marklogic

1
推荐指数
1
解决办法
335
查看次数

Marklogic未定义函数fn:string-pad()

我试着用fn:string-pad()xquery函数抛出错误的未定义函数,使用Marklogic版本9

https://docs.marklogic.com/fn:string-pad

xquery marklogic marklogic-9

1
推荐指数
1
解决办法
67
查看次数

如何从MarkLogic中的文档URI获取文档目录?

我有一个包含不同目录的URI列表.它是从MarkLogic中的URI获取所有不同目录的方法吗?

xdmp:directory 用于不同的目的.

Example- 
let $uri := "/test/abc/somepath/abc.xml"
Output should be- "/test/abc/somepath/"
Run Code Online (Sandbox Code Playgroud)

有什么建议 ??

xquery marklogic

1
推荐指数
1
解决办法
50
查看次数

标签 统计

marklogic ×10

xquery ×7

marklogic-8 ×3

htmltidy ×1

marklogic-9 ×1

nosql ×1

sequence ×1

tidy ×1

xml ×1

xpath ×1

xquery-3.0 ×1

xslt ×1