Xquery 特定属性节点替换
如何在MarkLogic中为特定属性替换节点?例如:Xquery 特定属性节点替换,xquery,marklogic,Xquery,Marklogic,如何在MarkLogic中为特定属性替换节点?例如: <chapters> <title id="primary">first primary content</title> <title id="primary">second primary content</title> <title id="secondary">this is amy middle content</title> <title id
<chapters>
<title id="primary">first primary content</title>
<title id="primary">second primary content</title>
<title id="secondary">this is amy middle content</title>
<title id="terciary">this is amy last content</title>
</chapters>
<chapters>
<title id="primary">third primary content</title>
<title id="secondary">this is amy middle content</title>
<title id="terciary">this is amy last content</title>
</chapters>
<chaptermetadata>
<chapters>
<title id="primary">common content</title>
<title id="secondary">This is middle content</title>
<title id="terciary">This is last content</title>
</chapters>
<chapters>
<title id="primary">common content</title>
<title id="secondary">This is new content</title>
<title id="terciary">This is old content</title>
</chapters>
<chaptermetadata>
现在,我想替换所有元素title
中的一个节点,该元素在所有章节中都包含属性@id='primary'
,如下所示:
<chapters>
<title id="primary">first primary content</title>
<title id="primary">second primary content</title>
<title id="secondary">this is amy middle content</title>
<title id="terciary">this is amy last content</title>
</chapters>
<chapters>
<title id="primary">third primary content</title>
<title id="secondary">this is amy middle content</title>
<title id="terciary">this is amy last content</title>
</chapters>
<chaptermetadata>
<chapters>
<title id="primary">common content</title>
<title id="secondary">This is middle content</title>
<title id="terciary">This is last content</title>
</chapters>
<chapters>
<title id="primary">common content</title>
<title id="secondary">This is new content</title>
<title id="terciary">This is old content</title>
</chapters>
<chaptermetadata>
共同内容
这是中间内容
这是最后的内容
共同内容
这是新内容
这是旧内容
如果您刚刚开始使用XQuery和MarkLogic,可能会有所帮助
修改元素和属性的最佳方式取决于您尚未提供的上下文。我想第一个问题是“如何按属性选择节点?”一个简单的XPath就可以做到这一点。对于数据库中的所有章节:
/chapters/title[@id eq $id]
…或相对于先前选择的元素序列(第章)*
如果这是一个数据库文档,您可以使用和函数从中获取它。如果节点仅在内存中,请参阅以获取有关使用XQuery类型开关或XSLT的指南和示例。现在有更多的typeswitch和XSLT的示例和比较。根据您提供的示例,您似乎希望将
text()
替换为具有@id='primary'的第一个title
元素,并将其他title元素替换为@id='primary'`
下面将使用和方法实现这一点
考虑到两个代码块之间的差异,很难理解您请求的是什么转换