Diferença entre elemento simples vazio e elemento complexo vazio - XML
Existe alguma diferença entre um elemento simples vazio e um elemento complexo vazio em um arquivo xml? Como posso distingui-los?
Em w3schools eu encontrei:
- elemento simples vazio
<element></element>ou<element />; além disso, diz que "Elementos vazios podem ter atributos.". - elemento complexo vazio
<product pid="1345"/>
Respostas
Ser simples ou complexo é uma propriedade de um tipo, não (diretamente) de um elemento. Podemos dizer que um elemento está em conformidade com um tipo (especificamente, um tipo definido em um esquema XSD), e podemos dizer que o tipo é simples ou complexo, mas as categorias de tipos simples e complexos se sobrepõem nos tipos de elementos que eles permitem. Especificamente, tanto os tipos complexos quanto os simples podem permitir elementos vazios como <e/>, e elementos com conteúdo de texto como <e>foo</e>. Se virmos um elemento que possui atributos, ou elementos filhos, sabemos que ele não pode estar em conformidade com nenhum tipo simples, mas se não tiver nenhum, não saberemos sem olhar para o esquema.
A resposta à sua pergunta "como posso distingui-los" é que você precisa examinar o esquema; você não pode distingui-los apenas da instância sozinha.
Um elemento simples implica que ele não possui nenhum elemento filho e nenhum atributo. Se um elemento tiver elementos ou atributos filho, ele será considerado complexo .
Separadamente, dizer que um elemento está vazio é dizer que ele não tem conteúdo - não apenas não possui elementos filho, mas também não possui nós de texto filho.
Portanto, os elementos simples e complexos podem estar vazios ou não vazios.
Nota lateral: se uma tag de início fecha <e/>automaticamente , vs <e></e>, independentemente de seu elemento ser simples ou complexo, é insignificante e geralmente não pode ser detectado ou definido no nível XML.
Exemplos
<e></e>é simples e vazio.<e>abc</e>é simples e não vazio.<e a="1"></e>é complexo e vazio.<e a="1">abc</e>é complexo e não vazio.
Veja também
- Defina um elemento XML que deve estar vazio e sem atributos
Resumo
Geralmente, pense em um tipo complexo como tendo subestrutura XML e um tipo simples como sem subestrutura XML. Pense em vazio como não implicando nenhum conteúdo.