如何通过XQuery添加DOCTYPE

如何通过XQuery添加DOCTYPE,xquery,Xquery,我想使用XQuery 3.1生成以下DOCTYPE: <!DOCTYPE rdf:RDF [ <!ENTITY owl "http://www.w3.org/2002/07/owl#" > <!ENTITY xsd "http://www.w3.org/2001/XMLSchema#" > <!ENTITY rdfs "http://www.w3.org/2000/01/rdf-schema#" > <!ENTITY

我想使用XQuery 3.1生成以下DOCTYPE:

<!DOCTYPE rdf:RDF [
    <!ENTITY owl "http://www.w3.org/2002/07/owl#" >
    <!ENTITY xsd "http://www.w3.org/2001/XMLSchema#" >
    <!ENTITY rdfs "http://www.w3.org/2000/01/rdf-schema#" >
    <!ENTITY rdf "http://www.w3.org/1999/02/22-rdf-syntax-ns#" >
]>

]>

这是一个特殊的元素,对吗?所以我不能用普通的元素构造函数添加它们。

类似的东西可能会起作用

    '<!DOCTYPE rdf:RDF [
    <{!ENTITY owl "http://www.w3.org/2002/07/owl#" >
    <!ENTITY xsd "http://www.w3.org/2001/XMLSchema#" >
    <!ENTITY rdfs "http://www.w3.org/2000/01/rdf-schema#" >
    <!ENTITY rdf "http://www.w3.org/1999/02/22-rdf-syntax-ns#" >
]>',
<rootnode>{let $fred := <bert></bert> return $fred}</rootnode>
'
]>',
{let$fred:=返回$fred}
是的,这是有效的XQuery,它提供

 <!DOCTYPE rdf:RDF [
    <{!ENTITY owl "http://www.w3.org/2002/07/owl#" >
    <!ENTITY xsd "http://www.w3.org/2001/XMLSchema#" >
    <!ENTITY rdfs "http://www.w3.org/2000/01/rdf-schema#" >
    <!ENTITY rdf "http://www.w3.org/1999/02/22-rdf-syntax-ns#" >
]>
<rootnode>
  <bert/>
</rootnode>

]>
我自己没有使用这种方法,我喜欢我的RDF作为海龟:)。
很可能有一种不那么丑陋的方式。

类似的方法可能会奏效

    '<!DOCTYPE rdf:RDF [
    <{!ENTITY owl "http://www.w3.org/2002/07/owl#" >
    <!ENTITY xsd "http://www.w3.org/2001/XMLSchema#" >
    <!ENTITY rdfs "http://www.w3.org/2000/01/rdf-schema#" >
    <!ENTITY rdf "http://www.w3.org/1999/02/22-rdf-syntax-ns#" >
]>',
<rootnode>{let $fred := <bert></bert> return $fred}</rootnode>
'
]>',
{let$fred:=返回$fred}
是的,这是有效的XQuery,它提供

 <!DOCTYPE rdf:RDF [
    <{!ENTITY owl "http://www.w3.org/2002/07/owl#" >
    <!ENTITY xsd "http://www.w3.org/2001/XMLSchema#" >
    <!ENTITY rdfs "http://www.w3.org/2000/01/rdf-schema#" >
    <!ENTITY rdf "http://www.w3.org/1999/02/22-rdf-syntax-ns#" >
]>
<rootnode>
  <bert/>
</rootnode>

]>
我自己没有使用这种方法,我喜欢我的RDF作为海龟:)。
很可能有一种不那么难看的方法。

在XDM树模型中无法表示DOCTYPE声明,因此这很棘手。也没有类似于XSLT的解决方法,例如禁用输出转义或字符映射,它们提供了调整树序列化方式的方法,以防止正常转义
。在XDM树模型中没有表示DOCTYPE声明的方法,因此这很棘手。也没有类似于XSLT的解决方法,例如禁用输出转义或字符映射,它们提供了调整树序列化方式的方法,以防止
的正常转义,它根本不是一个元素,据我从XQuery标准中看到,处理器不必显式支持它。它们必须出现在XML声明之后和根元素之前,因此您可能必须显式创建一个文档节点,将DOCTYPE声明作为根元素之前的文本节点。@chrisis为什么不与我们分享您的漫游呢?文本节点onexquery引擎是什么?@har07 newst BaseXIt根本不是一个元素,从XQuery标准来看,处理器不必显式支持它。它们必须出现在XML声明之后和根元素之前,因此您可能必须显式创建一个文档节点,将DOCTYPE声明作为根元素之前的文本节点。@chrisis为什么不与我们分享您的漫游呢?文本节点one什么是XQuery引擎?@har07 newst base该查询的结果可能通过转义尖括号进行序列化,例如
DOCTYPE rdf:rdf[!ENTITY….
它可能被序列化并且将被序列化,这不起作用该查询的结果可能通过转义尖括号来序列化,例如
DOCTYPE rdf:rdf[!ENTITY….
它可能被序列化并且将被序列化,这不起作用