MarkLogic 在 XML 中生成自闭标签

MarkLogic generating self closing tag in XML

我正在尝试将 HTML 存储为带有空标签的 XML 格式:

    <body xmlns="http://www.w3.org/1999/xhtml">
        <div class="WordSection1" xmlns="">
            <p class="ChapterNumber">Chapter 6</p>
            <h1 class="ChapterTitle">The Legislature and the <br/>Electoral System</h1>
            <p class="ChapterSub-Title"> </p>
            <div style=""></div>
        </div>
    </body>

在 MarkLogic 中存储后,我得到空的自关闭标签

    <body xmlns="http://www.w3.org/1999/xhtml">
        <div class="WordSection1" xmlns="">
            <p class="ChapterNumber">Chapter 6</p>
            <h1 class="ChapterTitle">The Legislature and the <br />Electoral System</h1>
            <p class="ChapterSub-Title"> </p>
            <div style="" />
        </div>
    </body>

生成无效XHTML。我怎样才能得到原始文件XML,无论是自闭元素还是空元素,因为它是原始文件?

正如其他人在上面指出的那样,这是一个序列化问题。 xdmp:output option is your friend here. (Also take a look at the XQuery and XSLT serialization spec.) HTML 序列化是一个特例。

declare option xdmp:output "method=html";
xdmp:set-response-content-type("text/html"),
'<!DOCTYPE html>',
<html lang="en">
<head>
<meta charset="utf-8" />
<title>Untitled</title>
<script type="text/javascript">
 if(1 &lt; 2 &amp;&amp; 3 &lt; 4) {{
   alert("&amp;");
 }}
</script>
</head>
<body>
  <h2>Empty textarea</h2>
  <textarea></textarea>
  <h2>Empty div</h2>
  <div></div>
</body>
</html>

结果

<!DOCTYPE html>
<html lang="en"><head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta
charset="utf-8"><title>Untitled</title><script type="text/javascript">
if(1 < 2 && 3 < 4) {
alert("&");
}
</script></head><body><h2>Empty textarea</h2><textarea></textarea><h2>Empty
div</h2><div></div></body></html>

没有输出选项你得到

<!DOCTYPE html>
<html lang="en"><head><meta charset="utf-8"/><title>Untitled</title><script
type="text/javascript">
if(1 &lt; 2 &amp;&amp; 3 &lt; 4) {
alert("&amp;");
}
</script></head><body><h2>Empty textarea</h2><textarea/><h2>Empty
div</h2><div/></body></html>

请注意,此示例还演示了如何序列化 DOCTYPE(它不是 XML 数据模型的一部分)以及如何设置 HTTP 内容类型,例如,在服务时HTML 直接从 MarkLogic 应用服务器到浏览器。