从xquery使用文档构造函数生成XML文件

问题描述 投票:1回答:1

我在从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'。

但是我不知道要设置哪个处理指令来将该查询保存到文档中。

xml xquery xquery-3.0
1个回答
1
投票

您需要利用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>
© www.soinside.com 2019 - 2024. All rights reserved.