Os nomes das palavras-chave usadas em XML DTDs são #PCDATAe CDATA. Não há PCDATApalavra-chave e não #CDATA.
mzjn
1
Além da resposta aceita, você deve ler stackoverflow.com/a/918462/2013911 porque explica a diferença entre o tipo de atributo CDATA e as seções marcadas <! [CDATA []]>.
Niklas Peter,
Respostas:
75
PCDATA - Dados de caracteres analisados
Os analisadores XML normalmente analisam todo o texto em um documento XML.
CDATA - Dados de caracteres (não analisados)
O termo CDATA é usado para dados de texto que não devem ser analisados pelo analisador XML.
Caracteres como "<" e "&" são ilegais em elementos XML.
PCDATAé o texto que será analisado por um analisador. As tags dentro do texto serão tratadas como marcação e as entidades serão expandidas.
CDATAé um texto que não será analisado por um analisador. As tags dentro do texto
não serão tratadas como marcação e as entidades não serão expandidas.
Por padrão, tudo é PCDATA. No exemplo a seguir, ignorando a raiz, <bar>será analisado e não terá conteúdo, mas um filho.
Quando queremos especificar que um elemento conterá apenas texto, e nenhum elemento filho, usamos a palavra-chave PCDATA, porque essa palavra-chave especifica que o elemento deve conter dados de caracteres analisáveis - ou seja, qualquer texto, exceto os caracteres menores que ( <), maior que ( >), e comercial ( &), aspas ( ') e aspas duplas (" ).
No próximo exemplo, <bar>contém CDATA. Seu conteúdo não será analisado e é assim <test>content!</test>.
Existem vários modelos de conteúdo em SGML. O #PCDATAmodelo de conteúdo diz que um elemento pode conter texto simples. A parte "analisada" significa que a marcação (incluindo PIs, comentários e diretivas SGML) é analisada em vez de exibida como texto bruto. Isso também significa que as referências da entidade são substituídas.
Outro tipo de modelo de conteúdo que permite conteúdo de texto simples é CDATA. Em XML, o modelo de conteúdo do elemento não pode ser implicitamente definido como 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 deCDATA tipo, no entanto, as referências de entidade são substituídas.
Em XML, #PCDATAé o único modelo de conteúdo de texto simples. Use-o se quiser permitir conteúdo de texto no elemento. O CDATAmodelo de conteúdo pode ser usado explicitamente por meio da CDATAmarcação de bloco em #PCDATA, mas o conteúdo do elemento não pode ser definido como CDATApadrão.
Em um DTD, o tipo de atributo que contém texto deve ser CDATA. A CDATApalavra-chave em uma declaração de atributo tem um significado diferente da CDATAseção em um documento XML. Em uma CDATAseção de todos os caracteres são legais (incluindo <, >, &, 'e "caracteres), exceto a ]]>marca de fim.
#PCDATAnão é apropriado para o tipo de atributo. É usado para o tipo de texto "folha".
#PCDATAé prefixado por um hash no modelo de conteúdo para distinguir essa palavra-chave de um elemento denominado PCDATA(o que seria perfeitamente legal).
Ótima resposta, exceto pela última frase. #não é uma hashtag. Apenas uma tag precedida por este símbolo é uma hashtag. O símbolo em si tem muitos nomes , incluindo "sinal de número", "sinal de libra" (principalmente Canadá e EUA) ou apenas "hash" (daí o nome 'hashtag').
6
#justhadtogetthatoffmychest
3
Não concordo que o # na frente de #PCDATAesteja lá por razões históricas. Ele está lá porque em um DTD, um elemento também pode conter um elemento denominado PCDATA, que deve ser possível e que seria semelhante a <!ELEMENT foo (PCDATA)>.
Mathias Müller
Citação e aspas duplas são perfeitamente legais no conteúdo PCDATA. E o e comercial pode aparecer, mas (em XML) apenas como um introdutor de entidade.
Toby Speight
12
PCDATA - dados de caracteres analisados. Ele analisa todos os dados em um documento XML.
Aqui, o <family>elemento contém mais 2 elementos: <mother>e <father>. Portanto, ele analisa ainda mais para obter o texto da mãe e do pai para dar ao texto o valor da família como "mãe e pai"
CDATA - Dados de caracteres não analisados. Esses são os dados que não devem ser analisados posteriormente em um documento xml.
Em um DTD, PCDATA e CDATA são usados para afirmar algo sobre o conteúdo permitido de elementos e atributos, respectivamente. No modelo de conteúdo de um elemento, #PCDATA diz que o elemento contém (pode conter) "qualquer texto antigo". (Com exceções, conforme observado abaixo.) Na declaração de um atributo, CDATA é um tipo de restrição que você pode colocar nos valores permitidos do atributo (outros tipos, todos mutuamente exclusivos, incluem ID, IDREF e NMTOKEN). Um atributo cujos valores permitidos são CDATA pode (como PCDATA em um elemento) conter "qualquer texto antigo".
Um problema potencialmente muito confuso é que há outro "CDATA", também conhecido como seções marcadas. Uma seção marcada é uma parte do conteúdo do elemento (#PCDATA) delimitada por strings especiais: para fechá-la. Se você se lembrar que PCDATA são "dados de caracteres analisados", uma seção CDATA é literalmente a mesma coisa, sem os "dados analisados". Analisadores transmitem o conteúdo de uma seção marcada para aplicativos downstream sem soluçar toda vez que encontram caracteres especiais como <e &. Isso é útil quando você está codificando um documento que contém muitos desses caracteres especiais (como scripts e fragmentos de código); é mais fácil na entrada de dados e mais fácil na leitura do que a referência de entidade correspondente.
Portanto, você pode inferir que a exceção à regra de "qualquer texto antigo" é que PCDATA não pode incluir nenhum desses caracteres especiais sem escape, A MENOS que eles se enquadrem no escopo de uma seção marcada com CDATA.
CDATA ( C haracter DATA ): É semelhante a um comentário, mas faz parte do documento. ou seja, CDATA é um dado, faz parte do documento, mas os dados não podem ser analisados em XML. Nota: O comentário XML é omitido durante a análise de um XML, mas CDATA é mostrado como está.
PCDATA ( P arsed C haracter DATA ): Por padrão, tudo é PCDATA. PCDATA é um dado, pode ser analisado em XML.
#PCDATA
eCDATA
. Não háPCDATA
palavra-chave e não#CDATA
.Respostas:
PCDATA - Dados de caracteres analisados
Os analisadores XML normalmente analisam todo o texto em um documento XML.
CDATA - Dados de caracteres (não analisados)
O termo CDATA é usado para dados de texto que não devem ser analisados pelo analisador XML.
Caracteres como "<" e "&" são ilegais em elementos XML.
fonte
PCDATA
é o texto que será analisado por um analisador. As tags dentro do texto serão tratadas como marcação e as entidades serão expandidas.CDATA
é um texto que não será analisado por um analisador. As tags dentro do texto não serão tratadas como marcação e as entidades não serão expandidas.Por padrão, tudo é
PCDATA
. No exemplo a seguir, ignorando a raiz,<bar>
será analisado e não terá conteúdo, mas um filho.<?xml version="1.0"?> <foo> <bar><test>content!</test></bar> </foo>
Quando queremos especificar que um elemento conterá apenas texto, e nenhum elemento filho, usamos a palavra-chave
PCDATA
, porque essa palavra-chave especifica que o elemento deve conter dados de caracteres analisáveis - ou seja, qualquer texto, exceto os caracteres menores que (<
), maior que (>
), e comercial (&
), aspas ('
) e aspas duplas ("
).No próximo exemplo,
<bar>
contémCDATA
. Seu conteúdo não será analisado e é assim<test>content!</test>
.<?xml version="1.0"?> <foo> <bar><![CDATA[<test>content!</test>]]></bar> </foo>
Existem vários modelos de conteúdo em SGML. O
#PCDATA
modelo de conteúdo diz que um elemento pode conter texto simples. A parte "analisada" significa que a marcação (incluindo PIs, comentários e diretivas SGML) é analisada em vez de exibida como texto bruto. Isso também significa que as referências da entidade são substituídas.Outro tipo de modelo de conteúdo que permite conteúdo de texto simples é
CDATA
. Em XML, o modelo de conteúdo do elemento não pode ser implicitamente definido comoCDATA
, mas em SGML, isso significa que as referências de marcação e entidade são ignoradas no conteúdo do elemento. Em atributos deCDATA
tipo, no entanto, as referências de entidade são substituídas.Em XML,
#PCDATA
é o único modelo de conteúdo de texto simples. Use-o se quiser permitir conteúdo de texto no elemento. OCDATA
modelo de conteúdo pode ser usado explicitamente por meio daCDATA
marcação de bloco em#PCDATA
, mas o conteúdo do elemento não pode ser definido comoCDATA
padrão.Em um DTD, o tipo de atributo que contém texto deve ser
CDATA
. ACDATA
palavra-chave em uma declaração de atributo tem um significado diferente daCDATA
seção em um documento XML. Em umaCDATA
seção de todos os caracteres são legais (incluindo<
,>
,&
,'
e"
caracteres), exceto a]]>
marca de fim.#PCDATA
não é apropriado para o tipo de atributo. É usado para o tipo de texto "folha".#PCDATA
é prefixado por um hash no modelo de conteúdo para distinguir essa palavra-chave de um elemento denominadoPCDATA
(o que seria perfeitamente legal).fonte
#
não é uma hashtag. Apenas uma tag precedida por este símbolo é uma hashtag. O símbolo em si tem muitos nomes , incluindo "sinal de número", "sinal de libra" (principalmente Canadá e EUA) ou apenas "hash" (daí o nome 'hashtag').#PCDATA
esteja lá por razões históricas. Ele está lá porque em um DTD, um elemento também pode conter um elemento denominadoPCDATA
, que deve ser possível e que seria semelhante a<!ELEMENT foo (PCDATA)>
.PCDATA - dados de caracteres analisados. Ele analisa todos os dados em um documento XML.
Exemplo:
<family> <mother>mom</mother> <father>dad</father> </family>
Aqui, o
<family>
elemento contém mais 2 elementos:<mother>
e<father>
. Portanto, ele analisa ainda mais para obter o texto da mãe e do pai para dar ao texto o valor da família como "mãe e pai"CDATA - Dados de caracteres não analisados. Esses são os dados que não devem ser analisados posteriormente em um documento xml.
<family> <![CDATA[ <mother>mom</mother> <father>dad</father> ]]> </family>
Aqui, o valor do texto da família será
<mother>mom</mother><father>dad</father>
.fonte
A partir daqui (o Google é seu amigo ):
fonte
A principal diferença entre PCDATA e CDATA é
PCDATA - Basicamente usado para ELEMENTS enquanto
CDATA - usado para atributos de XML, ou seja, ATTLIST
fonte
CDATA ( C haracter DATA ): É semelhante a um comentário, mas faz parte do documento. ou seja, CDATA é um dado, faz parte do documento, mas os dados não podem ser analisados em XML.
Nota: O comentário XML é omitido durante a análise de um XML, mas CDATA é mostrado como está.
PCDATA ( P arsed C haracter DATA ): Por padrão, tudo é PCDATA. PCDATA é um dado, pode ser analisado em XML.
fonte