【发布时间】:2015-12-01 15:38:30
【问题描述】:
我有以下 xml:
<subjects>
<subject id="5" name="Maths"/>
<subject id="10" name="English" points="5"/>
<subject id="15" name="Science" points="10" cats="15"/>
</subjects>
我有以下代码:
for $subject in $subjects/subject
return
<subject id="{$subject/@id}">
<foo/>
</subject>
哪个输出
<subject id="5"><foo/></subject>
<subject id="10"><foo/></subject>
<subject id="15"><foo/></subject>
但是上面的代码并没有显示出主题的所有属性。只有id。当然,我可以继续硬编码更多属性,但如果我不知道属性名称是什么,这将无济于事。
我想要的是这样的:
<subject id="5" name="Maths"><foo/></subject>
<subject id="10" name="English" points="5"><foo/></subject>
<subject id="15" name="Science" points="10" cats="15"><foo/></subject>
我相信解决方案是这样的:
for $subject in $subjects/subject
return
insert-child( <foo/>, $subject)
我该怎么做?
【问题讨论】:
-
XPath 根本不支持插入;您正在做的是 XQuery,而不是 XPath。
-
我还强烈建议阅读 XQUF(XQuery 更新工具)的文档。
-
@Charles Duffy 此功能是否仅适用于 Saxon EE saxonica.com/html/documentation/using-xquery/update.html 因为我使用的是免费社区版 (CE)
-
我对 Saxon 不是很熟悉——我首选的 XQuery 实现是 BaseX——所以我不能一概而论。
标签: xml xquery saxon xquery-3.0