xquery - 如何向 .xq 查询创建的 .xml 文件添加 .dtd 验证?
问题描述
所以我的查询工作正常,我现在需要使用 .dtd 验证来验证生成的 .xml。我的 .xq 以前看起来像这样:
<根>
...
...
</根>
现在看起来像这样:
< !DOCTYPE root SYSTEM 'validation.dtd'>
<根>
...
...
</根>
但是,现在运行 .xq 会引发以下错误:
XPST0003 #...as xs:integer external; 附近的 XQuery 语法错误;< !D#:
在 '< !' 之后应为 '--' 或 '[CDATA['
查询中的静态错误
我不知道这个错误是什么意思,也找不到解决方法
提前致谢
解决方案
要使用文档类型声明序列化 XML 文档,请使用fn:serialize()
带doctype-system
参数的函数:
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-serialize 上的函数文档以及httpsfn:serialize()
上的XSLT 和 XQuery 序列化 3.1 规范中的doctype-system
和参数的描述://www.w3.org/TR/xslt-xquery-serialization-31/#XML_DOCTYPE。doctype-public
对于只支持 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>
)
推荐阅读
- json - json.Unmarshal 忽略 json 字符串中的 json 字符串值,不要尝试解析它
- spring - 我想知道spring-data的命名约定
- html - 如何设置 html“选择”元素的选项位置?
- asynchronous - IRC | 异步通信
- git - heroku App 与带有 git 的 buildpack 不兼容
- c# - NEST:创建别名并设置过滤器
- android - 使用 Dialog 时,只有创建视图层次结构的原始线程才能接触其视图
- oracle - 如何删除oracle utf文件中的输入
- c++ - 内部类引用的编译问题
- angular - 基于值变化的角度条件验证器