首页 > 解决方案 > XML 元素可以同时具有文本和元素内容吗?

问题描述

我有这个 XML 元素:

<address>123 main street Chicago IL 60605</address>

现在假设我想向<country>它添加元素(并且我坚持认为 country 是一个元素而不是属性),那么正确的方法是什么?

我可以这样想象:

<address>
<country>USA</country>
123 main street Chicago IL 60605
</address>

但是上面的实际地址现在看起来有点无标签,尽管我相信它仍然是一个有效的 XML 对吧?

我之所以问,是因为我没有看到任何像上面这样的示例(在学习 XML 格式方面),其中一个元素包含一个子元素,但也包含一个内联值。

而且我知道国家作为一个属性在这里会更有意义,但我的问题是关于这种格式的方式。如果这是合法且可接受的,或者实际地址应包含在后面的示例中的另一个标签中,例如<street_address>

标签: xml

解决方案


XML 元素可以同时具有文本和元素内容吗?

是的,它被称为混合内容

现在假设我想向<country>它添加元素(并且我坚持认为 country 是一个元素而不是属性),那么正确的方法是什么?

作为 XML 格式的设计者,由您来决定。

我可以这样想象:

<address>
<country>USA</country>
123 main street Chicago IL 60605
</address>

但是上面的实际地址现在看起来有点无标签,尽管我相信它仍然是一个有效的 XML 对吧?

术语说明:您想象的是格式良好的XML。它是否有效取决于您设计或采用的模式。有关区别的更多信息,请参阅“有效 xml”和“格式良好的 xml”之间是否有任何区别?

如上所述,address元素被称为混合内容。这种形式在面向文档的设计中比面向数据的设计更常见,但在这两种情况下 XML 的格式都是正确的。如果你正在设计一个模式,你可能想要标记地址的其他组成部分,

<address>
  <street>123 main street</street>
  <city>Chicago</city>
  <state>IL</state>
  <zip>60605</zip>
<address>

而不是使用混合内容,如前所述,这对文档很有用:

<p>This is an example of <i>mixed content</i></p>

推荐阅读