Differenza tra elemento semplice vuoto e elemento complesso vuoto - XML

Aug 22 2020

C'è qualche differenza tra un elemento semplice vuoto e un elemento complesso vuoto in un file xml? Come posso distinguerli?

Su w3schools ho trovato:

  1. elemento semplice vuoto <element></element> o <element />; inoltre dice che "Gli elementi vuoti possono avere attributi.".
  2. elemento complesso vuoto <product pid="1345"/>

Risposte

2 MichaelKay Aug 22 2020 at 15:05

Essere semplice o complesso è una proprietà di un tipo, non (direttamente) di un elemento. Possiamo dire che un elemento è conforme a un tipo (in particolare, un tipo definito in uno schema XSD), e possiamo dire che il tipo è semplice o complesso, ma le categorie di tipi semplici e complessi si sovrappongono nei tipi di elementi che loro permettono. In particolare, sia i tipi complessi che i tipi semplici potrebbero consentire elementi vuoti come <e/>ed elementi con contenuto di testo come <e>foo</e>. Se vediamo un elemento che ha attributi, o elementi figli, allora sappiamo che non può essere conforme a nessun tipo semplice, ma se non ha nessuno dei due, allora non lo sappiamo senza guardare lo schema.

La risposta alla tua domanda "come posso distinguerli" è che devi guardare nello schema; non puoi distinguerli solo dall'istanza.

kjhughes Aug 22 2020 at 14:21

Un elemento semplice implica che non abbia elementi figlio e attributi. Se un elemento ha elementi o attributi figlio, è considerato complesso .

Separatamente, dire che un elemento è vuoto significa dire che non ha contenuto - non solo non ha elementi figlio, ma non ha nodi di testo figlio.

Pertanto, sia gli elementi semplici che quelli complessi possono essere vuoti o non vuoti.

Nota a margine: se un tag di inizio si chiude automaticamente, <e/>vs <e></e>, indipendentemente dal fatto che il suo elemento sia semplice o complesso, è insignificante e generalmente non può essere rilevato o definito a livello XML.

Esempi

  1. <e></e> è semplice e vuoto.
  2. <e>abc</e> è semplice e non vuoto.
  3. <e a="1"></e> è complesso e vuoto.
  4. <e a="1">abc</e> è complesso e non vuoto.

Guarda anche

  • Definisci un elemento XML che deve essere vuoto e non ha attributi

Sommario

In generale, si pensi a un tipo complesso con una sottostruttura XML e un tipo semplice come privo di sottostruttura XML. Pensa al vuoto come se non implicasse alcun contenuto.