Marklogic cts之间的差异:元件行走和类型开关功能

Marklogic cts之间的差异:元件行走和类型开关功能,marklogic,marklogic-8,marklogic-9,Marklogic,Marklogic 8,Marklogic 9,有人能更好地解释cts:element walk和typeswitch函数吗 我曾试图遵循开发人员API。然而,我对cts:element-walk的实例并不十分满意。如果有人能帮助我了解利弊,我将不胜感激 哪一个对于实现递归调用和数据转换都是有效的,每个递归调用? 如果您需要做的只是遍历XML树并为特定的元素做一些事情,CTS:元素行走会更高效,因为它在C++层上被优化了。 如果你想做一个复杂的转换,涉及很多不同的元素,做很多不同的事情,你仍然可以在cts:element walk中编写代码,

有人能更好地解释cts:element walk和typeswitch函数吗

我曾试图遵循开发人员API。然而,我对cts:element-walk的实例并不十分满意。如果有人能帮助我了解利弊,我将不胜感激


哪一个对于实现递归调用和数据转换都是有效的,每个递归调用?

如果您需要做的只是遍历XML树并为特定的元素做一些事情,CTS:元素行走会更高效,因为它在C++层上被优化了。
如果你想做一个复杂的转换,涉及很多不同的元素,做很多不同的事情,你仍然可以在cts:element walk中编写代码,但是,你可能会失去大部分的效率效益,而你的代码可能复杂得难以理解。

< P>如果你只需要通过一个XML树,为特定的元素做些事情,CTS:元素步行会更有效,因为它在C++层被优化。 如果你想做一个复杂的转换,涉及很多不同的元素,做很多不同的事情,你仍然可以在cts:element walk中编码,但是你可能会失去大部分效率优势,而且你的代码可能很难理解。

是一个“自上而下”的简单转换。与say java stream.map类似,它可以基于元素名称和值进行基本搜索/替换。 CT:xxx是特定于MarkLogic的API

内置于XQuery语言中,是一个计算单个项的表达式,不一定是类似于java“switch”语句的节点或元素

您使用它们的方式非常不同,例如,您不需要对基本cts使用递归算法:元素遍历另一方面,类型开关不仅可以区分元素和元素名称,还可以区分类型值非元素类型、用户定义和模式类型。 但它实际上并没有“做”任何事情,因此必须在更大的上下文中使用它,通常是递归xquery函数

因此,对于类型切换,执行类似操作所需的用户提供的解释代码量要大得多,因此可能会较慢。 但是,cts:element walk在许多情况下都可以使用类型开关-

A如果您可以轻松地使用cts:element walk执行此操作,请执行此操作

B如果不是,就不要。

是一种“自上而下”的单次简单转换。与say java stream.map类似,它可以基于元素名称和值进行基本搜索/替换。 CT:xxx是特定于MarkLogic的API

内置于XQuery语言中,是一个计算单个项的表达式,不一定是类似于java“switch”语句的节点或元素

您使用它们的方式非常不同,例如,您不需要对基本cts使用递归算法:元素遍历另一方面,类型开关不仅可以区分元素和元素名称,还可以区分类型值非元素类型、用户定义和模式类型。 但它实际上并没有“做”任何事情,因此必须在更大的上下文中使用它,通常是递归xquery函数

因此,对于类型切换,执行类似操作所需的用户提供的解释代码量要大得多,因此可能会较慢。 但是,cts:element walk在许多情况下都可以使用类型开关-

A如果您可以轻松地使用cts:element walk执行此操作,请执行此操作


B如果没有,不要。

谢谢你的解释。然而,我有一些需要实现的转变。如果我找到了父元素的匹配项,我必须将多个子元素数据连接在一起,并在父元素内连接为一个元素。由于CTS:element walk可以线性执行,它可以同时接受多个节点吗?谢谢您的解释。然而,我有一些需要实现的转变。如果我找到了父元素的匹配项,我必须将多个子元素数据连接在一起,并在父元素内连接为一个元素。由于CTS:element walk将线性执行,它可以同时接受多个节点吗?CTS:element walk一次只能读取一个节点吗?或者可以同时读取多个节点吗@mholstege假设父元素中有多个子节点,每次当我找到所有可选子元素时,我需要创建一个元素,以相同的顺序替换所有可选子元素及其数据。cts:element walk是否可能?cts:element walk一次只能读取一个节点,还是可以同时读取多个节点@mholstege假设父元素中有多个子节点,每次当我找到所有可选的子元素时,我需要通过替换所有op来创建一个元素 子元素及其数据的顺序相同。cts:元素行走是否可行?