SORU
21 EKİM 2008, Salı


Bir şekilde CDATA son xml token kaçmak var mı?

Eğer bir xml belgesinde bir CDATA bölümü içinde CDATA sonu belirteci (]]>) kaçmak için bir yol olup olmadığını merak ediyordum. Ya da, daha genel olarak, eğer bir CDATA içinde kullanmak için bazı çıkış sırası ise orada (ama eğer varsa, sanırım tek mantıklı başlaması veya bitiş belirteçleri kaçmak için, yine de olur).

Temel olarak, sadece başka bir karakter olarak ya CDATA gömülü ve çözümleyici yorumlamak için değil söyle, ama onu tedavi etmek için başlar ve biter token bir sırası var.

Muhtemelen, sadece yeniden xml yapısı veya kod kendini böyle yapmaya çalışıyorum, ama olsa da çalışıyorum xml günlük olarak son 3 yıl kadar önceydi ve ben hiçbir zaman vardı bu sorun, ben merak ediyorum eğer mümkünse. Sadece meraktan soruyorum.

Düzenleme:

Html kodlama kullanarak daha başka...

CEVAP
21 EKİM 2008, Salı


Açıkçası, bu soru tamamen akademik. Neyse ki, çok kesin bir cevabı var.

CDATA son dizisi kaçamazsın. Üretim XML 20 kuralı specification oldukça açıktır:

[20]    CData      ::=      (Char* - (Char* ']]>' Char*))

EDİT: Bu ürün kelimenin tam anlamıyla anlamına gelir kuralı "Bir CData bölümü içerebilir istiyorum AMA sırası ']]>'. Bir istisna.".

same section da okur: . EDİT2:

İçinde bir CDATA bölümü, tek CDEnd dize olarak kabul edilmektedir biçimlendirme, böylece sol köşeli parantez ve ve işaretleri oluşabilir kendi edebi form; gerek yok (ve olamaz) kaçtı kullanarak "<" ve "&". CDATA bölümleri iç içe olamaz.

Diğer bir deyişle, mümkün varlık referans, işaretleme veya yorumlanan sözdizimi diğer herhangi bir şekilde kullanmak için değil. Bir CDATA bölümü içinde sadece ayrıştırılmış metin ]]> ve sona erdiği bölümdür.

Dolayısıyla, olası bir CDATA bölümü içinde ]]> kaçmak için değil.

same section da okur: EDİT3:

2.7 CDATA bölümü

[Tanım: CDATA bölümleri karakter veri oluşabilir herhangi bir yerde oluşabilir; metin blokları kaçmak için aksi biçimleme olarak kabul edilmesi hangi karakterler içeren kullanılır. CDATA başlar dize ile bölümleri "<![[" Ve dize ile bitirmek "]]>":] . CDATA

Sonra karakter veri oluşabilir herhangi bir CDATA bölümü olabilir, tek bir CDATA bölümü birden çok bitişik CDATA bölümleri yerinde de dahil olmak üzere. Mümkün ]]> token bölme ve komşu CDATA bölümü içinde iki parça koymak için izin verir.

ex:

<![CDATA[Certain tokens like ]]> can be difficult and <invalid>]]> 

yazılması gerektiği gibi

<![CDATA[Certain tokens like ]]]]><![CDATA[> can be difficult and <valid>]]> 

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Hot For Nutrition

    Hot For Nutr

    26 ŞUBAT 2007
  • kalabrandmusic

    kalabrandmus

    25 Kasım 2009
  • Microsoft Research

    Microsoft Re

    24 EKİM 2008