如何通过XQuery添加DOCTYPE

时间:2016-09-09 08:48:20

标签: xquery

我想用XQuery 3.1生成以下DOCTYPE:

-(void)action:(CustomButton*)btn{
      NSLog(@"%d %@", [btn tag], btn.value); // assuming CustomButton is a derived class of UIButton
}

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

2 个答案:

答案 0 :(得分:0)

无法在XDM树模型中表示DOCTYPE声明,因此这很棘手。还没有相应的XSLT解决方法,例如disable-output-escaping或字符映射,它们提供了调整树序列化方式的方法,以防止<正常转义为&lt;

我认为我首选的方法是对查询的序列化输出进行后处理。例如,您可以生成包含«»的DOCTYPE声明(作为字符串)来代替<>,然后将V形符号转换为尖括号使用基于文本的工具(如sed。

)进行后处理阶段

答案 1 :(得分:-1)

这样的事情可能有用。

    '<!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>

是的,这是有效的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作为Turtle :)。 可能会有一种不那么丑陋的方式。

相关问题