Xquery 如何将.dtd验证添加到由.xq查询创建的.xml文件中?
因此,我的查询工作正常,现在需要使用.dtd验证来验证生成的.xml。我的.xq以前是这样的:Xquery 如何将.dtd验证添加到由.xq查询创建的.xml文件中?,xquery,Xquery,因此,我的查询工作正常,现在需要使用.dtd验证来验证生成的.xml。我的.xq以前是这样的: 现在看起来是这样的: 但是,现在运行.xq会引发以下错误: XPST0003 XQuery在#…附近的语法错误为xs:integer external;
提前感谢要使用文档类型声明序列化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>
)