xml - 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 元素可以同时具有文本和元素内容吗?
是的,它被称为混合内容。
现在假设我想向
<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>
推荐阅读
- flutter - 在名为颤振的推送替换中传递参数
- elasticsearch - 如何将持久卷的权限授予 ES 容器挂载路径?
- sql-server - T-SQL:合并插入旧值和新值,然后进行更改
- c++ - 带有一维向量的矩阵
- wordpress - WordPress.org 是否会通过 localhost 激活增加插件/主题的活动安装数量?
- javascript - 为什么他们没有直接在 Redux 教程的 map() 中更改属性?
- azure - 用于 Windows 和 linux 的 Azure VM 中的非操作系统更新修补
- javascript - 我不能用 clearInterval 停止 setInterval
- docker - 带有 zabbix 插件的 Grafana docker 镜像
- javascript - 在 react-redux 应用程序中,什么会在没有此类操作的减速器中使操作调度更新状态