如何向节点的所有特定子节点添加属性

2024-03-24

我有以下节点,我想在其中向所有节点添加属性add nodes.

<test>
  <add>x1</add>
  <c><add>x2</add></c>
  <b att1="x">x</b>
</test>

I tried

functx:add-attributes($test, xs:QName('att1'), 1)

它可以将属性添加到test节点。但

当我尝试时

functx:add-attributes($test/add, xs:QName('att1'), 1)

它将属性添加到第一个添加节点,但仅返回具有添加属性的添加节点。然后当我尝试使用$test//add它会抛出错误。

当我尝试时

for $add in $test//add 
   return functx:add-attributes($add, xs:QName('att1'), 1)

它分别返回两个添加节点。现在,如何重构原始节点以仅将属性添加到指定节点。


首先,我要指出的是,仅在内存中使用与更新数据库内容的实现方式有所不同。对于后者,你可以这样做:

for $add in $test//add
return
  xdmp:node-insert-child(
    $add, 
    attribute atta1 { 1 }
  )

要在内存中更改它(这就是 functx 所做的),您将制作原始副本的副本,并在构建副本时对其进行更改。这称为递归下降,是一种非常常见的模式。我不久前写了一篇博文显示如何实现递归下降 https://developer.marklogic.com/blog/xquery-recursive-descent,但本质上您将执行一个类型切换,当它遇到“add”元素时,会创建新属性。您可以使用 functx 函数来实现这一点。沿着这些思路(未经测试):

declare function local:change($node) 
{ 
  typeswitch($node) 
    case element(add) return 
      functx:add-attributes($node, xs:QName('att1'), 1)
    case element() return 
      element { fn:node-name($node) } { 
        $node/@*, 
        $node/node() ! local:change(.)
      } 
    default return $node 
};

此代码假设 add 元素内部不会有 add 元素;如果你愿意,那么你会想要对第一种情况做类似第二种情况的事情。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何向节点的所有特定子节点添加属性 的相关文章

  • XML 在多行上分割属性值

    我有包含长属性值的 XML 数据 该值不包含空格字符 我想通过分割 XML 文本来格式化 XML 以提高可读性 以便行不超过最大列数 有什么办法可以实现这一点吗 是否可以在行的每一端放置任何换行符 以便 XML 解析器不会将其视为空格 如
  • XSLT 是 Web 框架的好选择吗?

    我一直认为 XML 以及之前的 SGML 数据是魔鬼的格式 我是旧数据库和平面文件学校的 尽管如此 我们正在开发一款商用网络产品 其框架基于在链中翻译 转换 XML 数据 当我们面试职位以及与潜在客户交谈时 他们喜欢它将做什么的概念 但厌倦
  • 将 XML 转换为 JSON 时保留 json:Array 属性

    我有一段 XML 看起来像
  • Android:如何按下软键盘上方的按钮

    我有一个 保存 按钮 我想将其与软键盘一起按下 因此 当用户单击布局中的 EditText 时 按钮必须保持在键盘上方 现在该按钮隐藏在键盘下方 你怎么做到这一点 提前致谢 您需要将键盘的输入模式设置为adjustResize 您可以通过将
  • 显示具有相同节点值的多个 XML 数据条目

    我有一个 XML 文档 其中包含课程信息 如下所示
  • 使用 JMS Serializer 将 XML 反序列化为具有嵌套节点的实体

    我想使用 JMS Serializer 将 XML 文件反序列化为实体 它对于直接属性非常有效 但是当涉及到嵌套属性时 如果不创建相关实体 我就无法使其工作 例如
  • 使用 PHP simpleXML 查找一个我知道名称但不知道其所在位置的节点

    如果我知道要查找的节点的名称 但我可能不一定知道该节点的路径 我需要在 PHP 中查询 XML 字符串 我想我可以使用 xpath 做到这一点 但我无法弄清楚如何设置相对路径来查看文档中的任何位置 有人可以指出我正确的方向吗 我目前正在尝试
  • 将 XML 转换为 Java 对象 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Android - 使用 HttpURLConnection 来 POST XML 数据

    我遇到了一些死胡同 需要一些帮助 请 我对 Android 开发 以及一般编码 非常陌生 基本上我需要使用 HttpURLConnection 将 XML 数据发布到 URL 但无法让它工作 我的应用程序从 GET 请求读取并传递 XML
  • 使用 TinyXml2 提取子树 XML 字符串

    我想做和里面那个人完全相同的事情这个问题 https stackoverflow com questions 11935689 how to convert an xmlelement to string in tinyxml2 我想将 X
  • 使用 XSLT(即 XML Transformer)时防止 DTD 下载

    我必须在 Java 中处理具有 DTD 和 XSLT 的 XML 文件 DTD 确实是必要的 因为它包含我使用的实体的定义 旁白 是的 将实体用于可以使用 unicode 的东西是一个坏主意 当我运行转换时 它每次都会从外部源下载 DTD
  • 将 xml 转换为 python 字典

    我正在尝试创建一个 dict 类来处理 xml 但陷入困境 我真的没有想法了 如果有人可以指导这个主题 那就太好了 到目前为止开发的代码 class XMLResponse dict def init self xml self resul
  • 能否使用 jQuery 的 $(responseXML) 语法可靠地解析 XML?

    我目前正在寻找一种使用 JavaScript 从服务器 XML 响应中提取信息的简单方法 jQuery 似乎是一个很好的候选者 当谈到使用 jQuery 解析 XML 时 我不断遇到类似于以下代码片段的代码示例 function parse
  • 为什么我收到此错误“未绑定 XML 命名空间前缀”

    我几乎完成了一个简单的 Android 应用程序的编写 它似乎运行良好 但是 当我运行代码分析时 我收到大约 100 个有关 xml 文件的警告 我收到的错误是 未绑定 XML 命名空间前缀 和 命名空间未绑定 这是我的一个 xml 文件中
  • 如何在 R 中抓取受保护的页面(https 链接)(使用 XML 包中的 readHTMLTable)?

    关于如何使用 XML 包中的 readHTMLTable 有很好的答案 我使用常规 http 页面做到了这一点 但是我无法解决 https 页面的问题 我正在尝试阅读该网站上的表格 网址字符串 library RTidyHTML libra
  • 无法在 PowerShell 中完全解析 XML

    我有一个 XML 文件 我想解析该文件并检索特定信息 为了便于理解 下面是 XML 文件的屏幕截图 我想解析 XML 并为每个Item节点 检索屏幕截图中指示的字段 检索到的每个值都需要针对每个项目节点进行格式化 最后 我希望能够指定一个要
  • jQuery:评估 ajax 响应中的脚本

    来自我的 web 应用程序的 XML 响应既有要添加到页面的 HTML 也有要运行的脚本 我正在尝试从我的网络应用程序发回 XML 例如
  • PHP DOMDocument 中 XML 内 HTML 表的 Xpath 查询

    我有一个具有以下树结构的 XML 文件
  • XSLT 分组/合并子项(使用密钥)

    我试图了解如何使用我已经编写的代码推导出解决方案 为了简化起见 我将首先解释我想要做什么以及到目前为止我得到了什么 假设我在 XSLT 中有一个 XML 变量 其中包含几个具有相同标题属性的节点 Using Dimitre Novatche
  • 如何在sql中查询xml列

    我在 SQL Server 2008 上有一个表 T1 其中包含一个 XML 列 EventXML 我想查询某个节点包含特定值的所有行 更好的是 我想检索不同节点中的值 表T1 T1 EventID int EventTime dateti

随机推荐

  • 强制 OleDbConnection 释放文件句柄

    相关问题 https stackoverflow com questions 2862009 accessing an excel file throws oledbexception but keeps handle on file 即使
  • FPDF 中 MultiCell 的换行问题

    我正在使用 FPDF 的 Java 端口 我遇到以下错误 当我调用 multicell 两次时 每次文本都会打印在新行上 MultiCell 0 1 abcd currentBorders Alignment LEFT false prin
  • 从虚拟 PC 访问本地 Azure 应用程序以进行跨浏览器测试

    我使用的是 Windows Azure SDK 1 6 版 据我了解 模拟的负载均衡器侦听 127 0 0 1 并且 Web 应用程序的实例是在 127 255 0 0 1 创建的 我需要在开发时进行跨浏览器测试 因此我通过 Virtual
  • 如何使用 CSS 将多个内联块元素居中?

    我想在容器块元素内水平居中两个 或可能更多 内联块元素 它应该看起来像这样 foo bar 然而 根据我损坏的代码 它目前看起来像这样 foo bar
  • Babel Transpiler 无法与 Nodemon 一起运行

    Issue 无法将 Babel Transpiler 与 Nodemon 一起使用 Details 在 package json 我有 scripts start nodemon exec babel node presets es2015
  • 隐藏特定用户组的表单选项卡

    需要隐藏表单上某些用户组的某些选项卡 问题是 隐藏选项卡中的所有字段似乎不起作用 任何想法表示赞赏 使用 AX 2009 如果有人需要用视觉来回答这个问题 在 AX 中 您可以通过属性表为选项卡分配安全密钥 Then you can eit
  • 根据因子水平对 ggplot2 背景进行着色[重复]

    这个问题在这里已经有答案了 我有一个数据集 其中包含随时间 日期 变化的两个变量 Tb 和 Ta 看起来像这样 Date Tb Ta Light 1 2015 02 15 01 13 00 36 103 22 751 nightime 2
  • 如何让 Google 表单检索电子表格数据并将其显示在 Google 网站上?

    期望的结果 能够在 Google 表单 可能但不一定 可以是标准网页中的表单 中输入搜索词 并从 Google Sheet 检索相关数据并显示在 Google Site Web 应用程序中 我在这个问题中学习了如何从参数化 URL 检索数据
  • Chrome默认按钮样式

    是否可以在 CSS 中获取默认的 Chrome 按钮样式 当然很多人会说用http pastebin com zjkW2cJe http pastebin com zjkW2cJe or http pastebin com xKGBZFPg
  • 使用多重继承调用父类 __init__ ,正确的方法是什么?

    假设我有一个多重继承场景 class A object code for A here class B object code for B here class C A B def init self What s the right co
  • 如何创建一个做某事的计时器?

    我对 XNA C 很陌生 我想知道如何在 XNA C 中创建一个在几秒钟后执行某些操作的计时器 我见过Flash 教程 http www republicofcode com tutorials flash as3timer 这满足了我的需
  • 将 SQLite-NET 与 UWP 结合使用

    我从 NuGet 下载了该包 但仍然没有将 SQLite cs 和 SQLiteAsync cs 添加到项目中 如果 SQLite NET 仍然不支持 VS 2015 RTM 有任何可能的替代方案吗 请注意 我尝试了 SQLite NET
  • 如何使用内联CSS更改标签的字体大小?

    无法更改以下代码的标签字体大小 td valign top width 620 strong a href images pub pub1 pdf target self Factsheet of the OSCE Border Manag
  • Rust 中结构的生命周期界限如何工作?

    昨天IRC里对此有一些讨论 让我感到隐隐约约的不满 问题是 如何在结构上定义生命周期以将其内容限制为 只有与 自身 一样长寿的事物 i e a self那类的东西 我最初的反应是 你不能 如果你创建一个结构体Foo lt a gt 与其关联
  • Laragon 和 Laravel - sendmail 不工作

    我使用 Windows 10 Laragon 和 Laravel 框架 我通过调用设置默认身份验证php artisan make auth 问题是当我尝试使用 忘记密码 组件时 sendmail 不起作用 我点击后Send Passwor
  • 在首次反应应用程序初始化之前显示加载图标

    在浏览器下载所有 js 文件并加载 React 应用程序之前显示加载程序图标的标准方式是什么 我可以在不破坏任何东西的情况下做这样的事情吗 div class app Loading div Yes 一旦你的 JavaScript 加载完毕
  • 在 Visual Studio 中使用不同的编译器

    这可能是一个初学者问题 但在互联网上找不到正确的答案 我很好奇我可以使用吗其他Visual Studio 10 中的编译器 我喜欢 从 Visual Studio 2010 开始 概念上可以集成另一个编译器 在书里 在 Microsoft
  • 是否可以使用flyway管理oracle数据库?

    我真的很难理解如何使用 Flyway 来管理 Oracle 数据库 相关数据库有 3 个模式 如果我在我的 gradle 文件中的 Flyway 插件定义中规定了 3 个模式 我如何管理用户本身的创建以及他们使用的表空间 任何提示或建议将非
  • Jquery Mobile 面板随内容滚动

    使用 Jquery Mobile 我有一个面板 div 来创建导航系统并将其高度设置为浏览器的 100 如果内容超出面板的高度 则 css Overflow y 属性可让用户滚动查看隐藏的内容 很简单吧 现在我遇到了一些麻烦 虽然 css
  • 如何向节点的所有特定子节点添加属性

    我有以下节点 我想在其中向所有节点添加属性add nodes