2017-04-13 42 views
0

我有一个问题(我在本网站上实际询问的第一个问题)。我的xquery声明有问题。我想要做的是将一个变量名称放入一个xml标签的声明中(例如,在XML标记的声明中插入变量名称

我不知道这是否可以实现,我一直在尝试很多语法,但那是什么我走到这一步:

let $test:= ("1", "2", "3") 
return 
<ROOT> 
{ 
    for $x in $test return 
    <TEST{$x}>foo</TEST{$x}> 
} 
</ROOT> 

而这正是我希望有一个结果:

<TEST1>foo</TEST1> 
<TEST3>foo</TEST2> 
<TEST3>foo</TEST3> 

我知道这是不是一个xml应该怎么做,这将是更好的有什么东西如:

<BAR> 
    <TEST>foo</TEST> 
    <ID>1</ID> 
</BAR>><BAR> 
    <TEST>foo</TEST> 
    <ID>2</ID> 
</BAR> 

但我不负责输入中的这部分xml。客户端... 当然,我写的xquery是一个非常简单的从一个更大的一个,我只是孤立了我得到的问题。

有没有办法做到这一点?

+0

作为感兴趣的事情,当你“尝试了很多语法”你这样做纯粹是通过试验和错误,还是你去某种参考文档,它告诉你是什​​么XQuery的实际语法是?因为用任何语言编程通过反复试验都不会是一个非常有效的过程... –

+0

[XQuery:使用给定名称创建新元素?]的可能重复(http://stackoverflow.com/questions/2542235/xquery-create-a-new-element-with-a-given-name) –

+0

@MichaelKay:我知道但我不知道xquery很好。我不是那个负责这个部分的工程师,而是那个正在度假的人。我必须找到一种方法来做到这一点,我没有时间去查看文档和xquery的理论。我知道这不是应该如何做,但我只需要一些提示如何去做,因为我真的不知道从哪里开始寻找 – Cucunimbus

回答

0

我找到了解决办法:

let $test:= ("1", "2", "3") 

return 
<ROOT> 
{ 
    for $x in $test return 
    element {concat('TEST', $x)} {'foo'} 
} 
</ROOT>