Domanda

sembra che una definizione sciolto di PCDATA e CDATA è che

  1. PCDATA è dati di caratteri, ma è per essere analizzato.
  2. CDATA è dati di carattere, e non è per essere analizzato.

, ma poi qualcuno mi ha detto che CDATA è effettivamente analizzato o PCDATA non viene effettivamente analizzato ... quindi è un po 'di confusione. Qualcuno sa il vero affare è?

Aggiorna :. Io in realtà aggiunto la definizione PCDATA su Wikipedia ... in modo da non prendere troppo sul serio quella risposta come questa è solo la mia comprensione approssimativa di esso

È stato utile?

Soluzione

Da wiki:

PCDATA

  

Semplicemente parlando, PCDATA sta per Parsed caratteri dati. Ciò significa che i personaggi devono essere analizzato dal XML, XHTML, o parser HTML. (&lt; sarà cambiato in <, <p> saranno adottate per significare un tag di paragrafo, ecc). Confronto che, con CDATA, in cui i personaggi non devono essere analizzati dal XML, XHTML, o parser HTML.

CDATA

  

Il termine CDATA, che significa dati di carattere, viene utilizzato per distinti, ma ai fini della linguaggi di markup SGML e XML correlati. Il termine indica che una certa parte del documento sono i dati di carattere generale, piuttosto che dati non caratteri o dati di caratteri con più specifico, la struttura limitata.

Altri suggerimenti

Sia PCDATA e CDATA vengono analizzati. Sono entrambi carattere di dati.

Entrambi devono contenere solo caratteri validi. Ad esempio se il vostro codifica del documento è UTF-8, il contenuto delle sezioni CDATA deve essere ancora validi caratteri UTF-8. Quindi, dati binari casuali probabilmente evitare che il documento venga ben formato. Anche sezioni CDATA sono ancora analizzate, anche solo per trovare il tag sezione finale. Ma altri personaggi markup-come, come <,> e & vengono ignorati e passato così com'è dal parser.

OTOH in PCDATA letterale <& e (e 'o "nei valori di attributo) devono essere fuoriuscito, o saranno interpretati come markup. Entità saranno anche sviluppati.

Quindi sì, sezioni CDATA sono infatti analizzati. Non sono sicuro che il motivo per cui v'è stato detto che PCDATA non viene analizzato però.

PCDATA - analizzato i dati di carattere

CDATA - (non analizzate) dati di caratteri

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

  • PCDATA è il testo che verrà analizzato da un parser. Tag all'interno del testo saranno trattati come markup e le entità sarà ampliato.
  • CDATA è il testo che sarà non essere analizzato da un parser. Tag all'interno del testo sarà non essere trattati come markup e entità non sarà ampliato.

Per impostazione predefinita, tutto è PCDATA. Nell'esempio che segue, ignorando la radice, verrà analizzata, inoltre si avrà alcun contenuto, ma un bambino.

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

Quando vogliamo specificare che un elemento conterrà solo il testo, e non elementi figlio, usiamo la parola chiave PCDATA, perché questa parola chiave specifica che l'elemento deve contenere i dati di carattere analizzabile - vale a dire, qualsiasi testo tranne i caratteri less- di (<), maggiore di (>), commerciale (&), preventivo ( ') e doppie virgolette ( ").

Nel prossimo esempio, il bar è CDATA, e non viene analizzato, e ha il contenuto "contenuto!".

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

Ci sono diversi modelli di contenuto in SGML. Il modello di contenuto #PCDATA dice che un elemento può contenere testo normale. La parte "analizzato" di esso significa che di marcatura (compresi Pis, i commenti e le direttive SGML) in esso è analizzata invece visualizzati come testo grezzo. Significa anche che i riferimenti di entità vengono sostituiti.

Un altro tipo di modello di contenuto consentendo contenuto di testo è CDATA. In XML, il modello di contenuto elemento può non implicitamente essere impostata su CDATA, ma in SGML, vuol dire che di marcatura e di entità riferimenti vengono ignorati nei contenuti dell'elemento. In attributi di tipo CDATA invece, i riferimenti di entità vengono sostituiti.

In XML #PCDATA è l'unico modello di contenuto di testo normale. Si usa se a tutti desidera consentire il contenuto di testo nella elemento. Il modello di contenuto CDATA può essere utilizzato in modo esplicito attraverso il markup blocco CDATA nel #PCDATA, ma contenuto degli elementi non può essere definita come CDATA per impostazione predefinita.

In una DTD, il tipo di un attributo che contiene testo deve essere CDATA. La parola chiave CDATA in una dichiarazione di attributo ha un significato diverso da quello della sezione CDATA in un documento XML. Nella sezione CDATA tutti i personaggi sono legali (tra cui <,>, &,’e“caratteri tranne il) ‘>’ tag di chiusura]].

#PCDATA non è appropriato per il tipo di un attributo. E 'utilizzato per il tipo di testo "foglia".

#PCDATA viene anteposto da un cancelletto (noto anche come "hashtag" o octothorp) semplicemente per ragioni storiche.

La prima definizione è corretta.

PCDATA viene analizzato il che significa che le entità sono espansi e che il testo viene trattato come markup. CDATA non viene analizzato da un parser XML.

Se solo gli elementi sono stati fissati per CDATA per impostazione predefinita nel XHTML DTD, si risparmierebbero un sacco di comandi manuali brutte ... Perché i blocchi di script contenere altri elementi? Se ci sono questi elementi, che vengono gestiti dal interprete JS nelle azioni di manipolazione DOM - nel qual caso essi devono ancora essere completamente ignorate dal parser XML prima dell'inserimento e il rendering dei documenti. Suppongo che potrebbe essere stato progettato per forzare l'uso di file di risorse script esterno, che è un ultima analisi, una buona cosa.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top