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 < 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 内容类型,例如,在服务时HTML 直接从 MarkLogic 应用服务器到浏览器。
我正在尝试将 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 < 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 内容类型,例如,在服务时HTML 直接从 MarkLogic 应用服务器到浏览器。