示例输入:
<p> </p>
示例代码:
// assume node is the 'p' Element, then chNode is a text node
chNode = node.getFirstChild();
// set text to empty string
chNode.setNodeValue("");
我原以为设置空文本是一个错误,或者它会删除文本节点。
因为,我们有一个带有空文本节点的p
元素。但是,如果我们删除了文本节点,它会不是一回事?
我正在尝试理解空文本节点的用途。
答案 0 :(得分:1)
我原以为设置空文本是一个错误,或者它会删除文本节点。
没有错误,因为它仍然是有效的文档。
但是,如果我们删除了文本节点,它会不是一回事?
没有。在结构方面,空元素与已删除元素不同。
我正在尝试理解空文本节点的用途。
空元素本身没有含义。谁赋予意义的是使用XML文档的人或应用程序。
这三个文件语法上彼此不同:
<root></root>
<root><p></p></root>
<root><p> </p></root>
对于给定的目的,它们可能意味着相同,但对于定义XML语法的XML规范,它们是不同的。
答案 1 :(得分:1)
DOM在执行约束方面往往非常放松;实际上,它甚至没有花费太多精力来指定约束。 XSLT / XPath / XQuery使用的XDM模型更加严格:它允许一个独立的零长度文本节点,但只要您尝试将这样的节点添加到树中,它就会消失。至少在这种情况下,它并不是一个真正的问题,因为DOM可以以明显的方式被序列化为格式良好的词法XML。在其他情况下,您可以在DOM中创建无法序列化为格式良好的XML的结构(例如,节点中的无效XML字符,或具有命名空间URI但没有前缀的属性)。