سؤال

يبدو أن التعريف الفضفاض لـ PCDATA و CDATA هو ذلك

  1. PCDATA هي بيانات شخصية، ولكن يكون ليتم تحليلها.
  2. CDATA هي بيانات الأحرف، و ليس ليتم تحليلها.

ولكن بعد ذلك أخبرني أحدهم أن CDATA تم تحليله بالفعل أو أن PCDATA لم يتم تحليله بالفعل ...لذلك فهو قليل من الارتباك.هل يعرف أحد الصفقة الحقيقية؟

تحديث:لقد قمت بالفعل بإضافة تعريف PCDATA على ويكيبيديا ...لذا لا تأخذ هذه الإجابة على محمل الجد لأن هذا هو فهمي التقريبي لها فقط.

هل كانت مفيدة؟

المحلول

من ويكي:

PCDATA

ببساطة، يرمز PCDATA إلى Parsed Character Data.وهذا يعني أنه سيتم تحليل الأحرف بواسطة محلل XML أو XHTML أو HTML.(&lt; سيتم تغييره إلى <، <p> سيُؤخذ على أنه علامة فقرة، وما إلى ذلك).قارن ذلك مع CDATA، حيث لا ينبغي تحليل الأحرف بواسطة محلل XML أو XHTML أو HTML.

CDATA

يُستخدم المصطلح CDATA، الذي يعني بيانات الأحرف، لأغراض مختلفة ولكنها ذات صلة في لغات الترميز SGML وXML.يشير المصطلح إلى أن جزءًا معينًا من المستند عبارة عن بيانات أحرف عامة، بدلاً من بيانات غير أحرف أو بيانات أحرف ذات بنية محدودة ومحددة أكثر.

نصائح أخرى

يتم تحليل كل من PCDATA وCDATA.كلاهما شخصية بيانات.

يجب أن يتضمن كلاهما أحرفًا صالحة فقط.على سبيل المثال، إذا كان ترميز المستند الخاص بك هو UTF-8، فيجب أن يظل محتوى أقسام CDATA عبارة عن أحرف UTF-8 صالحة.لذلك من المحتمل أن تمنع البيانات الثنائية العشوائية المستند من التشكيل الجيد.كما لا يزال يتم تحليل أقسام CDATA، فقط للعثور على علامة قسم النهاية.لكن يتم تجاهل الأحرف الأخرى المشابهة للترميز، مثل < و> و& وتمريرها كما هي بواسطة المحلل اللغوي.

يجب تخطي OTOH في PCDATA < و& (و ' أو " في قيم السمات)، وإلا سيتم تفسيرها على أنها علامات.كما سيتم توسيع الكيانات.

لذا، نعم، تم بالفعل تحليل أقسام CDATA.لست متأكدًا من سبب إخبارك بأن PCDATA لم يتم تحليله.

PCDATA - بيانات الأحرف التي تم تحليلها

CDATA - بيانات الأحرف (غير الموزعة).

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

  • PCDATA هو النص الذي سيتم تحليله بواسطة المحلل اللغوي.سيتم التعامل مع العلامات الموجودة داخل النص على أنها ترميز وسيتم توسيع الكيانات.
  • CDATA هو النص الذي سوف لا يتم تحليلها بواسطة محلل.العلامات الموجودة داخل النص سوفلا سيتم التعامل معها على أنها ترميز ولن يتم توسيع الكيانات.

بشكل افتراضي، كل شيء هو PCDATA.في المثال التالي، سيتم تحليل تجاهل الجذر، ولن يكون له أي محتوى، بل طفل واحد.

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

عندما نريد تحديد أن العنصر سيحتوي على نص فقط، وليس عناصر فرعية، نستخدم الكلمة الأساسية PCDATA، لأن هذه الكلمة الأساسية تحدد أن العنصر يجب أن يحتوي على بيانات أحرف قابلة للتحليل - أي أي نص باستثناء الأحرف الأقل من (< ) وأكبر من (>) وعلامة الضم (&) والاقتباس (') والاقتباس المزدوج (").

في المثال التالي، الشريط هو CDATA، ولم يتم تحليله، ويحتوي على المحتوى "المحتوى!".

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

هناك العديد من نماذج المحتوى في SGML.يشير نموذج محتوى #PCDATA إلى أن العنصر قد يحتوي على نص عادي.الجزء "المحلل" منه يعني أنه يتم تحليل العلامات (بما في ذلك PIs والتعليقات وتوجيهات SGML) بدلاً من عرضها كنص خام.وهذا يعني أيضًا أنه يتم استبدال مراجع الكيانات.

نوع آخر من نماذج المحتوى الذي يسمح بمحتويات النص العادي هو CDATA.في XML، قد لا يتم تعيين نموذج محتوى العنصر ضمنيًا على CDATA، ولكن في SGML، فهذا يعني أنه يتم تجاهل العلامات ومراجع الكيان في محتويات العنصر.ومع ذلك، في سمات نوع CDATA، يتم استبدال مراجع الكيان.

في XML #PCDATA هو نموذج محتوى النص العادي الوحيد.يمكنك استخدامه إذا كنت تريد السماح بمحتويات النص في العنصر على الإطلاق.يمكن استخدام نموذج محتوى CDATA بشكل صريح من خلال علامة كتلة CDATA في #PCDATA، ولكن لا يجوز تعريف محتويات العنصر على أنها CDATA بشكل افتراضي.

في DTD، يجب أن يكون نوع السمة التي تحتوي على نص هو CDATA.الكلمة الأساسية CDATA في تعريف السمة لها معنى مختلف عن قسم CDATA في مستند XML.في قسم CDATA، تكون جميع الأحرف قانونية (بما في ذلك <،>،&، و"الأحرف") باستثناء علامة النهاية "]]>".

#PCDATA غير مناسب لنوع السمة.يتم استخدامه لنوع النص "الورقي".

يتم إضافة #PCDATA مسبقًا بعلامة تجزئة (تُعرف أيضًا باسم "علامة التصنيف" أو octothorp) لأسباب تاريخية فقط.

تعريفك الأول صحيح.

يتم تحليل PCDATA مما يعني توسيع الكيانات ويتم التعامل مع هذا النص كتوصيف.لم يتم تحليل CDATA بواسطة محلل XML.

إذا تم تعيين العناصر فقط على CDATA افتراضيًا في XHTML DTDs، فسيوفر ذلك الكثير من التجاوزات اليدوية القبيحة...لماذا تحتوي كتل البرنامج النصي على عناصر أخرى؟إذا كانت هناك مثل هذه العناصر، فسيتم التعامل معها بواسطة مترجم JS في إجراءات معالجة DOM - وفي هذه الحالة يجب أن يتم تجاهلها تمامًا بواسطة محلل XML قبل إدراج المستند وعرضه.أفترض أنه ربما تم تصميمه لفرض استخدام ملفات موارد البرامج النصية الخارجية، وهو أمر جيد في النهاية.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top