我在从xquery生成.xml文件时遇到问题。这是我的代码:
document {
<?xml version="1.0" encoding=UTF-8" href="C:\Users\User\Desktop\UDBXML-lab\artist.xml"?>,
<ARTISTS>
{
for $a in doc("Artists.xml")//ARTIST
return <ARTIST ID="{$a/@ID}">
{$a/*}
{
for $b in doc("Groups.xml")//GROUP
where $a/@ID = $b/@ID
return $b
}
{
for $b in doc("DJ.xml")//DJ
where $a/@ID = $b/@ID
return $b
}
{
for $b in doc("Singers.xml")//SINGER
where $a/@ID = $b/@ID
return $b
}
</ARTIST>
}
</ARTISTS>
}
我收到错误:
处理指令不得以大写或小写形式命名为'xml'。
但是我不知道要设置哪个处理指令来将该查询保存到文档中。
您需要利用XQuery Prolog声明。这是方法。
base-uri
声明指定所有XML文件的目录。其他两个声明将创建具有所需设置的XML序言。
XQuery
xquery version "3.0";
declare base-uri 'C:\Users\User\Desktop\UDBXML-lab\';
declare option output:omit-xml-declaration "no";
declare option output:encoding "UTF-8";
<ARTISTS>
{
for $a in doc("Artists.xml")//ARTIST
return <ARTIST ID="{$a/@ID}">
{$a/*}
{
for $b in doc("Groups.xml")//GROUP
where $a/@ID = $b/@ID
return $b
}
{
for $b in doc("DJ.xml")//DJ
where $a/@ID = $b/@ID
return $b
}
{
for $b in doc("Singers.xml")//SINGER
where $a/@ID = $b/@ID
return $b
}
</ARTIST>
}
</ARTISTS>