gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 01:50:24 24 4
gpt4 key购买 nike

所以我的查询工作正常,我现在需要使用 .dtd 验证来验证生成的 .xml。我的 .xq 之前看起来像这样:

< root>

...

...

< /root>

现在看起来像这样:

< !DOCTYPE root SYSTEM 'validation.dtd'>

< root>

...

...

< /root>

但是,现在运行 .xq 会抛出以下错误:

XPST0003 XQuery syntax error near #...as xs:integer external; < !D#:

Expected '--' or '[CDATA[' after '< !'

Static error(s) in query

我不知道这个错误是什么意思,也找不到解决方法

提前致谢

最佳答案

要序列化带有文档类型声明的 XML 文档,请使用带有 doctype-system 参数的 fn:serialize() 函数:

xquery version "3.1";

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

这会产生以下字符串:

<!DOCTYPE root SYSTEM "validation.dtd">
<root/>

有关此技术的更多信息,请参阅位于 https://www.w3.org/TR/xpath-functions-31/#func-serializefn:serialize() 的函数文档以及 XSLT 和 XQuery 序列化 3.1 规范中 doctype-systemdoctype-public 参数的描述 https://www.w3.org/TR/xslt-xquery-serialization-31/#XML_DOCTYPE .

对于只支持XPath 3.0或者还没有实现指定序列化参数的map(*)方法的处理器,可以使用这种形式:

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>
)

关于xquery - 如何将 .dtd 验证添加到由 .xq 查询创建的 .xml 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53347753/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com