在我的XQuery中,我有一个存储在变量$ d中的xml节点,如:
<topic id="IL27TRM409WedNov1919274820081">
<title>Access Switch Failure</title>
<body>
and Reacting</i> feature of the <i>SMSC User Guide</i>.</p>
</body>
</topic>
现在我的问题是,因为我需要在上面文档的顶部添加三个处理指令,包括DocType声明,目前结果文档只是一个纯XML节点。所以基本上我想添加以下三行:
<?xml version="1.0" encoding="UTF-8"?>
<?exist-serialize indent="no" output-doctype="yes"?>
<!DOCTYPE task PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
在顶部。我尝试将concat()
用于$d
,但失败了。我想知道这种显式的XML内容操作在XQuery中是否可行,否则我认为我必须对我的XSLT进行更改以使$d
具有处理指令。
答案 0 :(得分:2)
要输出XML声明和DOCTYPE声明,您需要设置影响查询结果序列化方式的参数。你这样做的方式取决于你正在使用的XQuery处理器。
要输出处理指令,请在查询正文中使用文字处理指令。
答案 1 :(得分:1)
您应该使用处理指令和xsl输出,例如:
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="no"
doctype-public="-//OASIS//DTD DITA Task//EN"
doctype-system="task.dtd"/>
<xsl:template match="/">
<xsl:processing-instruction name="exist-serialize">indent="no" output-doctype="yes"
</xsl:processing-instruction>
<xsl:apply-templates />
</xsl:template>
[...]
</xsl:stylesheet>