空简单元素和空复杂元素之间的区别 - XML

Difference between empty simple element and empty complex element - XML

xml 文件中的空简单元素和空复杂元素之间有什么区别吗?我怎样才能区分它们?

我在 w3schools 上发现:

  1. empty simple element <element></element><element />;另外它说“空元素可以有属性”。
  2. empty complex element <product pid="1345"/>

简单的元素意味着它没有子元素,也没有属性。如果一个元素有子元素或属性,它被认为是复杂

另外,说一个元素是就是说它没有内容——它不仅没有子元素,也没有子文本节点。

因此,简单元素和复杂元素都可能为空或 non-empty。

旁注:起始标签是否自闭,<e/> vs <e></e>,无论其元素是简单还是复杂,都是无关紧要的,通常无法在开始时检测或定义XML级。

示例

  1. <e></e>简单空洞
  2. <e>abc</e> 很简单 non-empty.
  3. <e a="1"></e>复杂而空洞。
  4. <e a="1">abc</e> 复杂而 non-empty.

另见

  • Define an XML element that must be empty and has no attributes

总结

通常,将 复杂 类型视为具有 XML 子结构,将 简单 类型视为缺少 XML 子结构。认为 empty 表示没有内容。

简单复杂是属性类型,而不是(直接)元素。我们可以说一个元素符合一个类型(具体来说,定义在 XSD Schema 中的类型),我们可以说这个类型是简单类型还是复杂类型,但是简单类型和复杂类型的类别在他们允许的元素种类。具体来说,复杂类型和简单类型都可能允许空元素(例如 <e/>)和具有文本内容的元素(例如 <e>foo</e>)。如果我们看到一个元素具有属性或子元素,那么我们就知道它不能符合任何简单类型,但如果两者都没有,那么我们不看模式就不知道。

您的问题“我如何区分它们”的答案是您需要查看架构;你不能仅从实例中区分它们。