以XML格式记录文本

时间:2011-04-03 19:04:11

标签: html xml xhtml

我理解XML和HTML之间的区别,但我不清楚一个特定的方面。 XML通常被描述为描述数据的语言和文档标记语言。由于前一种定义,XML经常与其他数据描述格式(如JSON)进行比较。由于后一种定义,XML 经常与其他文档标记语言(如HTML)进行比较。

我意识到XML可以同时发挥作用,但是如果XML用作文档标记语言,那么文档文本是否可以在结束标记之间出现,就像它可以用HTML一样?

采用以下HTML:

<div>
   Some text, and some <b>more</b> text.
</div>

忽略最初的XML声明,上面也是有效的XML吗?请注意,片段text.未包含在任何标记中:它出现在两个结束标记之间。当然,这在HTML等标记语言中是必要的,其目标是格式化文本。但是我看到的大多数XML示例都用它来描述数据,例如:

<book>
  <title>Blah blah</title>
  <author>Blah blah</author>
</book>

在上面的示例中,文本永远不会出现在结束标记之间。

那么,文本(内容)是否允许出现在XML中的结束标记之间?

4 个答案:

答案 0 :(得分:2)

是。这被称为"mixed content"

将照片记录为文档的要求之一是正确的 格式而不是数据格式。 JSON可能更适合作为数据 格式比XML,但因为它不允许混合内容,它不能 将XML替换为文档格式。

答案 1 :(得分:0)

这是有效的XML:

<div>
   Some text, and some <b>more</b> text.
</div>

最后的text. 仍然包含在div元素中。

故障:

 Some text, and some  - Text node within div
 <b>more</b>          - b element within div (with own text node)
  text.               - Text node within div

这些都是兄弟节点。

答案 2 :(得分:0)

  

忽略初始XML声明,   以上也是有效的XML?

是的,它仍然包含在div标记内。

有关这方面的有用解释可在W3Schools中找到。

  

文本始终存储在文本节点中。一个   DOM处理中的常见错误是   导航到元素节点并期望   它包含文本。但是,甚至   最简单的元素节点有一个文本   它下的节点。例如,在   2005年,有一个元素   node(year),以及它下面的文本节点,   其中包含文字(2005)

因此,在您的示例中,它是text.元素下div的文本节点。

答案 3 :(得分:-1)

根据伊丽莎白卡斯特罗的“万维网XML”(2001) 对于名为CDATA

的特殊标签,答案是肯定的

为了防止解析器将HTML作为XML读取,您可以将上面的示例包含在CDATA中,如下所示:

<element>
    <![CDATA[
<div>
Some text, and some <b>more</b> text.
</div>
]]>
</element>

<![CDATA[阻止文本被解析,直到达到结束]]>