Xquery 如何将.dtd验证添加到由.xq查询创建的.xml文件中?

Xquery 如何将.dtd验证添加到由.xq查询创建的.xml文件中?,xquery,Xquery,因此,我的查询工作正常,现在需要使用.dtd验证来验证生成的.xml。我的.xq以前是这样的: 现在看起来是这样的: 但是,现在运行.xq会引发以下错误: XPST0003 XQuery在#…附近的语法错误为xs:integer external;

因此,我的查询工作正常,现在需要使用.dtd验证来验证生成的.xml。我的.xq以前是这样的:

现在看起来是这样的:

<!DOCTYPE根系统“validation.dtd”>

但是,现在运行.xq会引发以下错误:

XPST0003 XQuery在#…附近的语法错误为xs:integer external;<!D#:

“<!”之后应为“--”或“[CDATA[”

查询中的静态错误

我不知道这个错误意味着什么,我也找不到如何修复它


提前感谢

要使用文档类型声明序列化XML文档,请使用
fn:serialize()
函数和
doctype系统
参数:

xquery version "3.1";

fn:serialize(<root/>, map { "doctype-system": "validation.dtd" })

您使用的是哪个XQuery处理器和版本?在将此功能添加到标准中之前,许多处理器都实现了自己的版本。我使用的是Saxon解析器,Saxon的哪个版本?要在不支持XPath 3.0的版本中使用Saxon进行序列化,请参阅
Saxon:serialize()
function:。但是如果您使用的是Saxon 7.1或更新版本,则支持
fn:serialize()
。您可能需要一个替代表单来指定序列化参数。我将修改显示此替代表单的答案。
<!DOCTYPE root SYSTEM "validation.dtd">
<root/>
xquery version "3.0";

declare namespace output="http://www.w3.org/2010/xslt-xquery-serialization";

fn:serialize(
    <root/>, 
    <output:serialization-parameters>
        <output:doctype-system value="validation.dtd"/>
    </output:serialization-parameters>
)