首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >带有命名空间的xquery

带有命名空间的xquery
EN

Stack Overflow用户
提问于 2013-01-02 17:14:35
回答 3查看 2.6K关注 0票数 1

我编写了一个xquery程序,用于将一个xml文件转换为另一个xml文件。一切都很顺利。但是,如果我在xquery中插入名称空间(直接作为根元素中的属性,或者使用声明默认的元素名称空间“;”),就不会考虑我的FLWOR-状态。然后我收到一个空的结果集。问题出在哪里?我该怎么做才能成为结果呢?谢谢你的回答。

非常感谢你的回答。但这并不能解决我的问题。我试图把这个问题说得更清楚。xquery程序应该将gpx文件转换为kml文件。因此,我关注两个默认名称空间。默认名称空间xmlns="http://www.topografix.com/GPX/1/1“通常位于源文档中,默认名称空间xmlns="http://www.opengis.net/kml/2.2”应该位于结果kml文档中。有谁知道如何用xquery来表述这个问题吗?没有gpx和kml文档中的默认名称空间,程序可以正常工作,但是我的所有gpx-文件都有默认的命名空间集,我也希望在kml文件中有各自的默认名称空间。我该怎么做?非常感谢。

EN

回答 3

Stack Overflow用户

发布于 2013-01-03 20:46:52

您可以忽略输入文档中的默认名称空间,方法是使用与名称空间无关的*:元素测试,如下所示:

代码语言:javascript
运行
复制
/*:gpx/*:trk

此外,名称空间前缀(或没有名称空间前缀)在名称空间比较中并不重要,只有url。这样你就可以匹配`

代码语言:javascript
运行
复制
declare namespace tempfoobar = "http://www.topografix.com/GPX/1/1";
/tempfoobar:gpx

还可以为输出重新定义默认命名空间。喜欢

代码语言:javascript
运行
复制
declare default element namespace "http://www.topografix.com/GPX/1/1";
let $a := /gpx 
return
  <kml xmlns="http://www.opengis.net/kml/2.2">{$a}</kml>
票数 2
EN

Stack Overflow用户

发布于 2013-01-03 13:37:20

检查返回的元素是否具有与根元素中设置的名称空间相同的名称空间。

票数 0
EN

Stack Overflow用户

发布于 2013-01-03 14:27:28

我不认为您应该将名称空间作为属性插入。我不认为xmlns确实是一个属性,不应该被视为属性。尝试提取想要转换的任何值,并在新命名空间中创建一个新元素。

声明名称空间ns1 = "ns1";声明名称空间ns2 = "ns2";

让$doc/ns1:whatever/ns1:node/ns1:your/ns1:translating $source_node :=

让{$source_node/text()} $new_doc :=

然后孩子插入它或者你想用它做的任何事情。或者你可以使用XSLT..。

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

https://stackoverflow.com/questions/14126206

复制
相关文章

相似问题

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