我正在尝试将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,无论是自闭元素还是空元素,因为它是原始文件?
答案 0 :(得分:1)
正如其他人所说,这是一个序列化问题。 xdmp:output
选项是您的朋友。 (另请参阅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 < 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 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 < 2 && 3 < 4) {
alert("&");
}
</script></head><body><h2>Empty textarea</h2><textarea/><h2>Empty
div</h2><div/></body></html>
请注意,此示例还演示了如何序列化DOCTYPE
(不属于XML数据模型)以及如何设置HTTP内容类型,例如,直接从MarkLogic提供HTML时app服务器到浏览器。