Respostas:
A standalone
declaração é uma maneira de dizer ao analisador para ignorar quaisquer declarações de marcação na DTD . A DTD é posteriormente usada apenas para validação.
Como exemplo, considere a <img>
tag humilde . Se você observar o XHTML 1.0 DTD , verá uma declaração de marcação informando ao analisador que as <img>
tags devem estar VAZIAS e possuir src
e alt
atributos. Quando um navegador está passando por um documento XHTML 1.0 e encontra uma <img>
tag, ele deve observar que o DTD exige src
e alt
atribui os atributos e os adiciona se eles não estiverem presentes. Ele também fechará <img>
automaticamente a tag, pois ela deve estar VAZIA. É isso que a especificação XML quer dizer com "declarações de marcação podem afetar o conteúdo do documento". Você pode usar a standalone
declaração para dizer ao analisador para ignorar essas regras.
Se o seu analisador realmente faz isso é outra questão, mas um analisador de validação compatível com os padrões (como um navegador) deve.
Observe que, se você não especificar uma DTD, a declaração autônoma "não tem significado"; portanto, não há motivo para usá-la, a menos que você também especifique uma DTD.
standalone=yes
, as declarações de marcação não são ignoradas; elas fazem com que o documento seja XML inválido. Você se importaria se eu editar isso na resposta?
yes
e no
, onde no
é o valor padrão.standalone="yes"
significa que o processador XML deve usar o DTD apenas para validação. Nesse caso, não será utilizado para:
standalone="yes"
pode adicionar restrições de validade se o documento usar uma DTD externa. Quando o documento contém itens que exigiriam modificação do XML, como valores padrão para atributos, e standalone="yes"
é usado , o documento é inválido .standalone="yes"
pode ajudar a otimizar o desempenho do processamento de documentos.Fonte: o pseudo-atributo independente é relevante apenas se um DTD for usado
standalone
descreve se o documento XML atual depende de uma declaração de marcação externa.
O W3C descreve seu objetivo em "XML (Extensible Markup Language) 1.0 (Quinta Edição)":
As declarações de marcação podem afetar o conteúdo do documento, conforme passado de um processador XML para um aplicativo; exemplos são padrões de atributo e declarações de entidade. A declaração de documento independente, que pode aparecer como um componente da declaração XML, sinaliza se existem ou não declarações externas à entidade do documento ou nas entidades de parâmetro. [Definição: Uma declaração de marcação externa é definida como uma declaração de marcação que ocorre no subconjunto externo ou em uma entidade de parâmetro (externa ou interna, a última sendo incluída porque os processadores não validadores não precisam lê-los).]
A intenção do standalone=yes
declaração é garantir que as informações contidas no documento possam ser recuperadas fielmente com base apenas na DTD interna, ou seja, o documento pode "ficar sozinho" sem referências externas. A validação de um documento independente garante que os processadores que não validam terão todas as informações disponíveis para analisar corretamente o documento.
A declaração autônoma não serve para nada se um documento não tiver DTD externa e a DTD interna não tiver referências a entidades de parâmetros, pois esses documentos já são implicitamente autônomos.
A seguir estão os efeitos reais do uso standalone=yes
.
Força os processadores a gerar um erro ao analisar documentos com uma DTD externa ou referências a entidades de parâmetros, se o documento contiver referências a entidades não declaradas na DTD interna (com exceção do texto de substituição de entidades de parâmetros como processadores sem validação). analisar isso); amp
, lt
, gt
, apos
, E quot
são as únicas exceções
Ao analisar um documento não declarado como independente, um processador não validador fica livre para parar de analisar o DTD interno assim que encontrar uma referência de entidade de parâmetro. Declarar um documento como independente força os processadores não validadores a analisar as declarações de marcação na DTD interna, mesmo depois de ignorar uma ou mais referências de entidade de parâmetro.
Força a validação de processadores para gerar um erro se alguma das seguintes opções for encontrada no documento e suas respectivas declarações estiverem na DTD externa ou no texto de substituição da entidade de parâmetro:
amp
, lt
, gt
, apos
, e quot
)Um processador não validador pode considerar recuperar a DTD externa e expandir todas as referências de entidade de parâmetro para documentos que não são autônomos, mesmo que não tenha obrigação de fazê-lo, ou seja, a configuração standalone=yes
poderia teoricamente melhorar o desempenho de processadores não validados (alerta de spoiler: provavelmente não fará diferença).
As outras respostas aqui são incompletas ou incorretas, o principal equívoco é que
A declaração autônoma é uma maneira de dizer ao analisador para ignorar quaisquer declarações de marcação na DTD. A DTD é posteriormente usada apenas para validação.
standalone = "yes" significa que o processador XML deve usar o DTD apenas para validação.
Muito pelo contrário, declarar um documento como autônomo forçará realmente um processador não validador a analisar declarações internas que ele normalmente deve ignorar (ou seja, aquelas após uma referência de entidade de parâmetro ignorada). Os processadores que não validam ainda devem usar as informações na DTD interna para fornecer valores de atributo padrão e normalizar atributos tokenizados, pois isso é independente da validação.