Arasındaki fark nedir #PCDATA
ve #CDATA
içinde DTD ?
#PCDATA
ve CDATA
. Hiçbir yoktur PCDATA
kelime ve hiçbir #CDATA
.
Arasındaki fark nedir #PCDATA
ve #CDATA
içinde DTD ?
#PCDATA
ve CDATA
. Hiçbir yoktur PCDATA
kelime ve hiçbir #CDATA
.
Yanıtlar:
PCDATA - Ayrıştırılmış Karakter Verileri
XML ayrıştırıcıları normalde bir XML belgesindeki tüm metni ayrıştırır.
CDATA - (Ayrıştırılmamış) Karakter Verileri
CDATA terimi, XML ayrıştırıcı tarafından ayrıştırılmaması gereken metin verileri için kullanılır.
XML öğelerinde "<" ve "&" gibi karakterler yasa dışıdır.
PCDATA
ayrıştırıcı tarafından ayrıştırılacak metindir. Metin içindeki etiketler biçimlendirme olarak değerlendirilecek ve varlıklar genişletilecektir.CDATA
metindir değil bir ayrıştırıcı tarafından ayrıştırılması. Metni içinde Etiketler olacak
değil biçimlendirme muamelesi ve kuruluşlar genişletilmiş edilmeyecektir.Varsayılan olarak, her şey PCDATA
. Aşağıdaki örnekte, kökü yok saymak <bar>
ayrıştırılacak ve içeriği olmayacak, ancak bir çocuk olacaktır.
<?xml version="1.0"?>
<foo>
<bar><test>content!</test></bar>
</foo>
Bir elemanın sadece metin içereceğini ve alt eleman içermeyeceğini belirtmek istediğimizde, anahtar kelimeyi kullanırız PCDATA
, çünkü bu anahtar kelime, elemanın ayrıştırılabilir karakter verisi içermesi gerektiğini belirtir - yani, ( <
) ' den küçük karakterler hariç herhangi bir metin , büyüktür ( >
), ve işareti ( &
), tırnak ( '
) ve çift tırnak ( "
).
Sonraki örnekte <bar>
içerir CDATA
. İçeriği ayrıştırılmayacak ve bu nedenle ayrılmıştır <test>content!</test>
.
<?xml version="1.0"?>
<foo>
<bar><![CDATA[<test>content!</test>]]></bar>
</foo>
SGML'de birkaç içerik modeli vardır. #PCDATA
İçerik modeli unsuru düz metin içerebileceğini söylüyor. Bunun "ayrıştırılmış" kısmı, içindeki işaretlemenin (PI'ler, yorumlar ve SGML direktifleri dahil) ham metin olarak görüntülenmek yerine çözümlendiği anlamına gelir. Ayrıca, varlık referanslarının değiştirildiği anlamına gelir.
Düz metin içeriklerine izin veren başka bir içerik modeli türü CDATA
. XML'de, öğe içerik modeli örtük olarak ayarlanamaz CDATA
, ancak SGML'de bu, öğenin içeriğinde işaretleme ve öğe referanslarının göz ardı edildiği anlamına gelir. CDATA
Ancak tür özniteliklerinde varlık referansları değiştirilir.
XML'de #PCDATA
tek düz metin içerik modelidir. Öğedeki metin içeriklerine izin vermek istiyorsanız bunu kullanırsınız. CDATA
İçerik modeli yoluyla açık bir şekilde kullanılabilir CDATA
blok biçimlendirme #PCDATA
ancak element içerikleri olarak tanımlanabilir olmayabilirCDATA
öntanımlı.
Bir DTD'de, metin içeren bir özniteliğin türü olmalıdır CDATA
. CDATA
Bir öznitelik bildiriminde anahtar farklı bir anlama sahip CDATA
bir XML belgesindeki bölüm. Bir de CDATA
bölüm tüm karakterler (dahil yasal <
, >
, &
, '
ve "
dışında karakterler) ]]>
bitiş etiketi.
#PCDATA
bir özniteliğin türü için uygun değildir. "Yaprak" yazı tipi için kullanılır.
#PCDATA
, bu anahtar kelimeyi adlandırılmış bir öğeden ayırmak için içerik modelinin başına bir karma işareti eklenmiştir PCDATA
(bu tamamen yasal olacaktır).
#
bir hashtag değil. Yalnızca bu sembolün önünde bulunan bir etiket bir hashtag'dir. Sembolün kendisinin "sayı işareti", "pound işareti" (çoğunlukla Kanada ve ABD) veya sadece "karma" (dolayısıyla 'hashtag' adı) dahil olmak üzere birçok adı vardır .
#PCDATA
tarihsel nedenlerle orada olduğuna katılmıyorum . Oradadır çünkü bir DTD'de, bir eleman aynı zamanda adlandırılmış PCDATA
, mümkün olması gereken ve buna benzeyen bir eleman da içerebilir <!ELEMENT foo (PCDATA)>
.
PCDATA - ayrıştırılmış karakter verileri.Bir XML belgesindeki tüm verileri ayrıştırır.
Misal:
<family>
<mother>mom</mother>
<father>dad</father>
</family>
Burada, <family>
eleman 2 tane daha eleman içerir: <mother>
ve <father>
. Bu nedenle, anne ve babanın metninin "anne baba" olarak ailenin metin değerini vermesini sağlamak için daha fazla ayrıştırılır
CDATA - ayrıştırılmamış karakter Verileri. Bu, bir xml belgesinde daha fazla ayrıştırılmaması gereken verilerdir.
<family>
<![CDATA[
<mother>mom</mother>
<father>dad</father>
]]>
</family>
Burada ailenin metin değeri olacaktır <mother>mom</mother><father>dad</father>
.
Buradan ( Google arkadaşınızdır ):
Bir DTD'de, PCDATA ve CDATA, sırasıyla elemanların ve özniteliklerin izin verilen içeriği hakkında bir şeyler iddia etmek için kullanılır. Bir öğenin içerik modelinde, #PCDATA, öğenin "herhangi bir eski metin" içerdiğini (içerebilir) söyler. (Aşağıda belirtilen istisnalar dışında.) Bir özniteliğin bildiriminde, CDATA, özniteliğin izin verilen değerlerine koyabileceğiniz bir tür kısıtlamadır (diğer türler, tümü birbirini dışlayan, ID, IDREF ve NMTOKEN içerir). İzin verilen değerleri CDATA olan bir öznitelik (bir öğedeki PCDATA gibi) "herhangi bir eski metin" içerebilir.
Potansiyel olarak gerçekten kafa karıştırıcı bir sorun, işaretli bölümler olarak da adlandırılan başka bir "CDATA" nın olmasıdır. İşaretli bir bölüm, özel dizelerle ayrılmış öğe (#PCDATA) içeriğinin bir bölümüdür: kapatmak için. PCDATA'nın "ayrıştırılmış karakter verileri" olduğunu hatırlarsanız, bir CDATA bölümü "ayrıştırılmış" olmadan kelimenin tam anlamıyla aynı şeydir. Ayrıştırıcılar, <ve & gibi özel karakterlerle her karşılaştıklarında, işaretli bir bölümün içeriğini akıntıya uğramadan aşağı akış uygulamalarına iletirler. Bu, çok sayıda özel karakter (komut dosyaları ve kod parçaları gibi) içeren bir belgeyi kodlarken kullanışlıdır; veri girişinde daha kolaydır ve okunması, karşılık gelen varlık referansına göre daha kolaydır.
Bu nedenle, "herhangi bir eski metin" kuralının istisnasının, PCDATA'nın, CDATA işaretli bölümün kapsamına girmedikçe, bu çıkış karaktersiz özel karakterlerden herhangi birini içeremeyeceği sonucuna varabilirsiniz.
CDATA ( C haracter DATA ): Yoruma benzer ancak belgenin bir parçasıdır. yani CDATA bir veridir, belgenin bir parçasıdır ancak veriler XML'de ayrıştırılamaz.
Not: XML yorumu XML ayrıştırılırken atlanır, ancak CDATA olduğu gibi gösterilir.
PCDATA ( P arsed C haracter DATA ): Varsayılan olarak, her şey PCDATA'dır. PCDATA bir veridir, XML olarak ayrıştırılabilir.