Pergunta

parece que uma definição frouxa de PCDATA e CDATA é que

  1. PCDATA é dados de caracteres, mas é para ser analisado.
  2. CDATA é dados de caracteres, e não para ser analisado.

mas então alguém me disse que CDATA é realmente analisado ou PCDATA realmente não é analisado ... por isso é um pouco de confusão. Alguém sabe o negócio real é?

Atualizar :. Eu realmente adicionado a definição PCDATA na Wikipedia ... portanto, não tome essa resposta muito a sério como isso é apenas a minha compreensão aproximada do it

Foi útil?

Solução

De Wiki:

PCDATA

Simplesmente falando, PCDATA significa Parsed Character Data. Isso significa que os personagens estão a ser analisado pelo XML, XHTML ou HTML parser. (&lt; irá ser alterado para <, <p> será tomado para significar uma marcação parágrafo, etc). Compare isso com CDATA, onde os personagens não estão a ser analisado pelo XML, XHTML ou HTML parser.

CDATA

O termo CDATA, ou seja, dados de caracteres, é usado para distintos, mas objetivos no linguagens de marcação SGML e XML relacionado. O termo indica que uma certa porção do documento é dados de caracteres gerais, em vez de dados que não são caracteres ou dados de caracteres com um mais específico, estrutura limitada.

Outras dicas

Ambos PCDATA e CDATA são analisados. Ambos são caráter de dados.

Ambos devem incluir somente caracteres válidos. Por exemplo, se sua codificação do documento é UTF-8, o conteúdo das seções CDATA deve ainda ser válido UTF-8 caracteres. Assim, os dados binário aleatório provavelmente irá impedir que o documento seja bem formado. Também seções CDATA ainda são analisados, apenas para encontrar o tag seção final. Mas outra marcação-como personagens, como <,> e & são ignorados e passados ??como-é pelo analisador.

OTOH em PCDATA Litteral

Então, sim, seções CDATA são de fato analisado. Eu não sou certo porque lhe foi dito que PCDATA não é analisado embora.

PCDATA - Character Parsed Dados

CDATA - (não analisada) Character Data

http://www.w3schools.com/XML/xml_cdata.asp

  • PCDATA é o texto que será analisado por um parser. Tag dentro do texto serão tratados como marcação e entidades serão expandidas.
  • CDATA é o texto que irá não ser analisado por um parser. Tag dentro da vontade de texto não ser tratados como marcação e entidades não será ampliada.

Por padrão, tudo é PCDATA. No exemplo a seguir, ignorando a raiz, será analisado, e não terá nenhum conteúdo, mas uma criança.

<?xml version="1.0"?>
<foo>
<bar><test>content!</test></bar>
</foo>

Quando queremos especificar que um elemento só irá conter texto, e nenhum elemento filho, usamos a palavra-chave PCDATA, porque esta palavra-chave especifica que o elemento deve conter dados de caracteres parsable - ou seja, qualquer texto, exceto os personagens menos- que (<), maior que (>), comercial (&), cotação ( ') e aspas ( ").

No próximo exemplo, bar é CDATA, e não é analisado, e tem o conteúdo "conteúdo!".

<?xml version="1.0"?>
<foo>
<bar><![CDATA[<test>content!</test>]]></bar>
</foo>

Existem vários modelos de conteúdo em SGML. O modelo de conteúdo #PCDATA diz que um elemento pode conter texto simples. A parte "analisado" do que significa que a marcação (incluindo IPs, comentários e directivas SGML), em que é analisado em vez de exibido como texto simples. Isso também significa que referências de entidade são substituídas.

Outro tipo de modelo de conteúdo permitindo que o conteúdo de texto simples é CDATA. Em XML, o modelo de conteúdo do elemento não pode ser implicitamente definido para CDATA, mas em SGML, isso significa que as referências de marcação e entidade são ignoradas no conteúdo do elemento. Em atributos CDATA digitar no entanto, referências de entidade são substituídas.

Em XML #PCDATA é o modelo de conteúdo apenas texto simples. Você usá-lo se você em tudo quer permitir que conteúdo de texto do elemento. O modelo de conteúdo CDATA pode ser usado de forma explícita através da marcação bloco CDATA em #PCDATA, mas o conteúdo de elemento não pode ser definida como CDATA por padrão.

Em uma DTD, o tipo de um atributo que contém o texto deve ser CDATA. A palavra-chave CDATA em uma declaração de atributo tem um significado diferente do que a seção CDATA em um documento XML. Na seção CDATA todos os caracteres são legais (incluindo <,>, &,’e“caracteres), exceto o ‘]]>’ tag final.

#PCDATA não é apropriado para o tipo de um atributo. Ele é usado para o tipo de texto "folha".

#PCDATA é prefixado por um hash (também conhecido como "hashtag" ou octothorp) simplesmente por razões históricas.

Sua primeira definição é correta.

PCDATA é analisado o que significa que as entidades são expandidas e esse texto é tratado como marcação. CDATA não é analisado por um parser XML.

Se apenas elementos foram definidos para CDATA por padrão no XHTML DTDs, seria guardar um monte de substituições manuais feias ... Por que blocos de script conter outros elementos? Se existem tais elementos, eles são manipulados pelo intérprete JS em ações de manipulação de DOM - caso em que eles devem ainda ser completamente ignorado pelo analisador XML antes da inserção do documento e renderização. Acho que pode ter sido concebido para forçar o uso de arquivos de recurso de script externos, que é uma coisa em última análise, bom.

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