Pergunta

Eu não estava ciente de uma diferença, mas um colega de trabalho diz que há, embora ele não pode voltar-se. Qual é a diferença, se houver?

Foi útil?

Solução

Há uma diferença, sim.

XML que adere ao padrão XML é considerado bem formado, enquanto XML que adere a um < a href = "https://www.w3schools.com/xml/xml_dtd.asp" rel = "noreferrer"> DTD é considerado válido.

Outras dicas

XML válido é XML que sucede validação contra um DTD.

XML bem formado é XML que tem todas as tags fechadas na ordem correta e, se ele tiver uma declaração, ele tem a primeira coisa no arquivo com os atributos adequados.

Em outras palavras, a validade refere-se a semântica, boa formação refere-se a sintaxe.

Então você pode ter inválido XML bem formado.

Bem-formado vs XML válido

Bem-formado rel significa que um objeto textual se encontra com o requisitos do W3C para sendo XML .

Válido significa que XML bem formado atende aos requisitos adicionais dadas por um esquema especificado.


Definições oficiais

Por Recomendação W3C para XML:

[Definição: Um objeto de dados é um documento XML que seja bem formado , tal como definido em esta especificação. Além disso, o documento XML é válido se cumprir algumas outras restrições.]


Observações:

  • Um documento que não está bem formado não é XML. (XML Bem-formado é comumente usado, mas tecnicamente redundante.)
  • Sendo válido implica estar bem formado.
  • Sendo bem formado não implica ser válido.
  • Embora a Recomendação W3C para XML define validade para ser contra um DTD, uso convencional permite o termo a ser aplicado para a conformidade com os esquemas XML especificados através de XSD , RELAX NG , Schematron , ou outros métodos.

Exemplos do que faz com que um documento para ser ...

Não bem formado :

  • Um elemento carece de uma marca de fechamento (e não é auto-fechamento).
  • Elementos sobrepõem sem assentamento adequada: <a><b></a></b>
  • Um valor de atributo está faltando uma cotação de fechamento que coincide com o abertura citação.
  • < ou & são usados ??em conteúdo ao invés de &lt ou &amp;.
  • Existem vários elementos raiz.
  • existem
  • Várias declarações XML, ou uma declaração XML parece diferente no topo do documento.

inválido :

  • Um elemento ou atributo é ausente, mas exigida pelo esquema XML.
  • Um elemento ou atributo é usado, mas indefinido pelo esquema XML.
  • O conteúdo de um elemento não coincide com o conteúdo especificado pelo esquema XML.
  • O valor de um atributo não coincide com o tipo especificado pelo esquema XML.

Namespace-Bem Formado

Tecnicamente, caracteres de dois pontos são permitidos em nomes de componentes em XML. No entanto, dois pontos deve ser usado apenas em nomes para fins de namespace:

Nota:

Os Namespaces na Recomendação XML [ XML Nomes ] atribui um significa para os nomes que contêm caracteres do cólon. Portanto, os autores não deve usar o cólon em nomes XML, exceto para fins de namespace, mas os processadores XML deve aceitar o cólon como um personagem nome.

Portanto, outro termo, namespace-bem-formado , é definido na Namespaces em XML 1.0 Recomendação W3C que implica todas as regras XML para boa formação mais os espaços de nomes que regem e prefixos de namespace.

Popularmente, o termo bem formado é frequentemente utilizado where -namespace bem formado seria mais preciso. No entanto, esta é uma forma técnica menor de conseqüência menos prático do que a distinção entre bem formado vs XML válido descrito nesta resposta.

Como já foi dito, bem formado conforma XML para a especificação XML, e se conforma XML válidos para um determinado esquema.

Outra maneira de colocá-lo é que formou-bem XML é lexically correta (que pode ser analisado), enquanto XML válido é gramaticalmente correta (que podem ser combinadas para um vocabulário conhecido e gramática).

Um documento XML não pode ser válida até que seja bem formado. Todos os documentos XML são realizadas com o mesmo padrão para a boa formação (um RFC posto para fora pelo W3). Um documento XML pode ser válido contra alguns esquemas, e inválidas contra os outros. Há uma série de linguagens de esquema, muitos dos quais são eles próprios baseados em XML.

XML bem formado é XML que atenda aos requisitos sintáticas da língua. Não faltando todas as tags de fechamento, tendo todas as suas tags únicas usar <whatever /> em vez de apenas <whatever>, e ter suas tags de fechamento na ordem correta.

XML válido é XML que usa um DTD e está em conformidade com todas as suas exigências. Então, se você usar um atributo de forma inadequada, você violar a DTD e não são válidos.

Todos os XML válido é bem formado, mas não XML tudo bem formado é válido.

XML é bem-formado se cumpre os requisitos para todos os documentos XML definidos pelos padrões - para coisas como ter um único nó raiz, tendo nós corretamente aninhados, todos os nós que têm uma marca de fechamento (ou usando a abreviação nó vazio de uma barra antes do colchete angular de fechamento), atributos sendo citado etc. ser bem formado apenas significa que adere às regras de XML e pode, portanto, ser analisado corretamente.

XML é válido se ele irá validar contra um DTD ou esquema. Isto, obviamente, varia de caso para caso -. XML que é válido contra um esquema não será válida contra outro esquema, mesmo que ele ainda está bem formado

Se XML não está bem formado não pode ser devidamente analisado - analisadores simplesmente lançar uma exceção ou relatar um erro. Esta é genérico e não importa o que seu XML contém. Só uma vez ele é analisado ele pode ser verificado para validade. Este domínio ou dependentes do contexto e requer um DTD ou esquema para validar contra. Para documentos XML simples, você não pode ter um DTD ou esquema, caso em que você não pode saber se o XML é válido - o conceito ou validade simplesmente não se aplica neste caso. Claro, isso não significa que você não pode usá-lo, isso significa apenas que você não pode dizer se é ou não é válido.

W3C, na especificação XML, definiu algumas regras que deve ser seguido durante a criação de documentos XML. Os exemplos de tais regras incluem ter exactamente um elemento raiz, tendo fim-tag para cada marcação inicial, usando plicas / duplos para valores de atributos, e assim por diante. Se um documento XML segue todas estas regras, diz-se ser bem formado documentos XML e analisadores pode ser usado para analisar e processar esses documentos.

Tipo de Documento Definições (DTDs) ou esquemas XML pode ser usado para definir a estrutura eo conteúdo de uma classe específica de documentos XML. Isso inclui os detalhes da relação pai-filho, listas de atributos, tipo de dados de informações, restrições de valor, etc. Além das regras de boa formação, se um documento XML também segue as regras especificadas no DTD / Schema associada, diz-se ser um documento XML válido.

Todos os documentos XML válidos são bem formadas, mas o inverso não é sempre verdadeiro. Bem formado documentos XML não têm necessariamente de ser válido.

Eu vou acrescentar que XML válido também implica que ele é bem formado, mas XML bem formado não é necessariamente válido.

Além do acima mencionado DTD de, existem 2 outras formas de descrever e validar documentos XML são XMLSchema e RelaxNG , ambos os quais podem ser mais fáceis de usar e suportar mais dispõe de DTD.

Se XML está confirmando a normativa DTD então é um XML válido. Se um documento XML está em conformidade com as regras XML (todas as tags começaram estão fechadas, existe um elemento raiz, etc), então é um bem formado XML.

Extensible Markup Language (XML) 1.0 (quinta edição) - W3C recomendação 26 de novembro de 2008 :

[Definição: Um objeto de dados é um documento XML, se for bem-formado, como definido nesta especificação. Além disso, o documento XML é válido se preencherem certas outras restrições.]


Para aqueles que preferem pseudo-código para parágrafos após parágrafos de texto ...:)

IF is_well_formed(<XML_doc>) THEN
    # It is well-formed, and can be parsed
    IF is_valid(<XML_doc>) THEN
        # Well-formed and ALSO valid. Hurray! 
        # **A valid XML doc, is a well-formed doc!**
    ELSE
        # Only well-formed, NOT valid
    END IF
ELSE
    # Not well-formed, or valid!
END IF

FUNCTION is_well_formed
    IF <does_not_contain_syntax,_spelling,_punctuation,_grammar_errors,_etc._errors> THEN
        RETURN TRUE
    ELSE 
        RETURN FALSE
    END IF
END FUNCTION 

FUNCTION is_valid
    IF <markup_of_the_XML_document_matches_"some"_defined_standard> THEN
        # Standards used to validate XML could be a DTDs or XML Schemas, referenced within the XML document
        RETURN TRUE
    ELSE 
        RETURN FALSE
    END IF
END FUNCTION

Com base na teoria: "Bem Formado" vs. Válido

DTD é a sigla para Document Type Definition. Esta é uma descrição do conteúdo para uma família de arquivos XML. Esta é parte da especificação XML 1.0, e permite descrever e verificar que um documento determinada instância está em conformidade com o conjunto de regras detalhando sua estrutura e conteúdo.

A validação é o processo de verificação de um documento contra um DTD (mais geralmente contra um conjunto de regras de construção).

O processo de validação e construção de DTDs são os dois a maioria das partes difíceis do ciclo de vida XML. Resumidamente um DTD define todos os elementos possíveis de serem encontrados dentro de seu documento, que é a forma formal da sua árvore de documento (por definir o conteúdo permitido de um elemento, de qualquer texto, uma expressão regular para a lista permitida de crianças, ou conteúdo misto ou seja, texto e crianças). O DTD também define os atributos válidos para todos os elementos e os tipos desses atributos.

Bem, XML que não está bem formado, uma espécie de, por definição, não é XML. Poeple geralmente se referem a um XML válido como XML que adere a um determinado esquema (XSD ou DTD).

XML DTD na W3 Escolas :

Um documento XML com sintaxe correta é chamado de "Bem Formado".

Um documento XML validado contra um DTD é tanto "Bem Formado" e "Válido".

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top