xquery 的let的有关问题
xquery 的let的问题test.xml内容如下XML code?xml version1.0 encodingUTF-8?rootstudentid
xquery 的let的问题
test.xml内容如下
XML code<?xml version="1.0" encoding="UTF-8"?><root> <student> <id>1</id> <name>Jim</name> <age>23</age> <sex>boy</sex> </student> <student> <id>2</id> <name>Jack</name> <age>22</age> <sex>boy</sex> </student></root>
xquery语句:let $var := <COOL>{ doc("test.xml") }</COOL>return $var/COOL
返回空结果
1.请问当前变量var指向那一层节点?
我使用$var/COOL 为什么出错
如果使用$var/.没问题
[解决办法]<COOL>{ doc("test.xml") }</COOL> 这句执行下来的结果就是一个字符串,所以不存在COOL节点。
如果你想返回节点,参考如下语句:
let $var := doc("test.xml") return $var/root
[解决办法]let $var := <COOL>{ doc("c:\test.xml") }</COOL>
return $var
如果要求能够正确解释上面的问题,你必须深入了解XQuery、Xml。
>>>请问当前变量var指向那一层节点?
$var变量是节点<COOL>, 它的类型是Element类型的节点。node-name() = COOL
>>> 我使用$var/COOL 为什么出错
$var是COOL节点,它没有COOL子节点。
>>> 如果使用$var/.没问题
$var/. 返回当前节点,当然没有问题了。
<?xml version="1.0" encoding="UTF-8"?>
<root>
<student>
<id>1</id>
<name>Jim</name>
<age>23</age>
<sex>boy</sex>
</student>
<student>
<id>2</id>
<name>Jack</name>
<age>22</age>
<sex>boy</sex>
</student>
</root>
<!-- comment -->