首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XQuery:为什么这个转换要修改源文档?

XQuery:为什么这个转换要修改源文档?
EN

Stack Overflow用户
提问于 2012-04-17 19:22:23
回答 1查看 201关注 0票数 1

我正在使用这个非常简单的XML文档(我从教程中借用了它),book-mod.xml:

代码语言:javascript
复制
<?xml version="1.0" encoding="ISO-8859-1"?>

<bookstore>

<book category="COOKING">
  <title lang="en">Everyday Italian</title>
  <author>Giada De Laurentiis</author>
  <year>2005</year>
  <price>30.00</price>
</book>

<book category="CHILDREN">
  <title lang="en">Harry Potter</title>
  <author>J K. Rowling</author>
  <year>2005</year>
  <price>29.99</price>
</book>

<book category="WEB">
  <title lang="en">XQuery Kick Start</title>
  <author>James McGovern</author>
  <author>Per Bothner</author>
  <author>Kurt Cagle</author>
  <author>James Linn</author>
  <author>Vaidyanathan Nagarajan</author>
  <year>2003</year>
  <price>49.99</price>
</book>

<book category="WEB">
  <title lang="en">Learning XML</title>
  <author>Erik T. Ray</author>
  <year>2003</year>
  <price>39.95</price>
</book>

</bookstore>

并使用此查询:

代码语言:javascript
复制
copy $d := doc("books-mod.xml")
modify (
  for $t in $d//title
  return replace value of node $t with concat($t, " in bed")
)
return $d

该查询运行并执行我所期望的(即在每个书名中附加文本“in bed”)。然而,令人惊讶的是,它也修改了源文档..。我认为使用此转换的copy的全部目的是修改文档的副本。

我在这里错过了什么?

我使用xqilla-u来执行查询。

EN

回答 1

Stack Overflow用户

发布于 2012-04-17 19:54:38

你说得对,这绝对是个错误。转换表达式是显式的更新表达式

转换表达式是一个简单的表达式,因为它不修改任何现有节点的值。

您使用的是哪个版本的XQilla?版本2.2.2的更改日志提到了一些相关的内容:

  • 将转换表达式修正为复制文档节点,而不是解散它们。

所以可能已经修好了。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10197736

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档