سؤال

يطلب هذا السؤال رفض المطور مايكل ريس لتشمل تحليل أقسام CDATA إلى مسار XML بسبب مسار XML بسبب "لا يوجد فرق دلالي في البيانات التي تخزنها."

لقد قمت بتخزين شذرات من HTML في عقد CDATA والمحتوى الآخر الذي يتطلب استخدام أحرف خاصة أو محرجة. ومع ذلك ، لا أشعر مؤهلاً لتحدي تأكيد Rys المثير للجدل لأنني ، على ما أفترض أنه من الناحية الفنية على صواب في السيناريوهات التي استخدمت فيها CDATA للراحة.

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

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

إذن ما هو؟ هل أقسام CDATA حقًا بقايا الماضي؟ أو هل يجب أن يسحب Rys إصبعه ويسمح لـ CDATA بتحليل مسار XML؟ وبينما نحن في ذلك ، في الوقت نفسه ، هل هناك أي اختراقات للحصول على مسار XML لإعادة أقسام CDATA؟

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

المحلول

CDATA تكون الأقسام مفيدة إذا كنت لا تهتم بدلالات البيانات الموجودة فيها (أي أنك لا تحتاج إلى تحليلها - إنها مجرد مجموعة من الشخصيات) ، ولا ترغب في الهروب من أي من XML بداخلها .

التعريف ، وفقا ل W3:

قد تحدث أقسام CDATA في أي مكان قد تحدث بيانات الأحرف ؛ يتم استخدامها للهروب من كتل النص التي تحتوي على أحرف والتي يمكن التعرف عليها على أنها ترميز.

من ويكيبيديا:

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

تعد أقسام CDATA مفيدة لكتابة رمز XML كبيانات نصية ضمن مستند XML. على سبيل المثال ، إذا كان المرء يرغب في الحصول على كتاب مع XSL يشرح استخدام تطبيق XML ، فسيتم كتابة علامة XML في الكتاب نفسه في الملف المصدر في قسم CDATA. ومع ذلك ، لا يمكن أن يحتوي قسم CDATA على السلسلة "]>" وبالتالي لا يمكن أن يحتوي قسم CDATA على أقسام CDATA المتداخلة. إن النهج المفضل لاستخدام أقسام CDATA لترميز النص الذي يحتوي على الثلاثي "]>" هو استخدام أقسام CDATA متعددة عن طريق تقسيم كل ثالوث قبل ">" مباشرة. على سبيل المثال ، لتشفير "]]>" يمكن للمرء أن يكتب:

نصائح أخرى

أقسام CDATA غير ضرورية. إنها ليست "بقايا الماضي" لأنها كانت دائمًا غير ضرورية.

هذا لا يعني أنها ليست مفيدة. انظر إلى أي لغة أو مكتبة برمجة ، ويمكنك العثور على عدد كبير من الأشياء التي يمكنك القيام بها بدونها لأنها تعادل دلالة لشيء آخر ، ولكنها مفيدة إذا كان هناك إنسان يجلس هناك يجب أن يكتب الأشياء.

لهذه المسألة ، حتى مع الإنتاج البرنامجي ، من المفيد أيضًا أن يتخذ المرء المقاربة المعاكسة واستخدام أقسام CDATA لكل قطعة واحدة من c-data (Bloaty ، ولكن يمكن أن يكون لها مكاسب الكفاءة في مكان آخر).

بالنسبة لمسار XML لا ينطوي على إنسان يجلس هناك يحتاج إلى كتابة الأشياء. إنها وسيلة لإنتاج XML صالحة من نتائج استعلام SQL. (كما أنها ليست مسألة تحليل أقسام CDATA ، ولكن لإنتاجها - مسألة مختلفة).

ولا يمكنك حقًا أن تشكو من أن XML صريح كونه البديل عندما تريد التحكم الجيد حقًا - فإن سبب XML الصريح أمر سيء للغاية لاستخدامه في بعض الأحيان على وجه التحديد لأنه يمنحك تحكمًا جيدًا حقًا. في الواقع ، ضع في اعتبارك ما إذا كانوا قد أضافوا لأول مرة دعمًا لأقسام CDATA ثم أضافوا دعمًا لكل خيار التعديل والتكوين الآخر الذي بدا حيويًا لشخص آخر هناك. كم من الوقت سيستغرق من قبل لـ XML الصريح كان الخيار التلقائي بسبب كونه أكثر وضوحًا من مسار XML

هناك أربع حالات تكون فيها CDATA مفيدة:

  1. أنت تجلس على لوحة مفاتيح تكتب هذه الأشياء في نفسك.
  2. أنت تتعامل مع تقنيات مختلفة مع معايير مختلفة مصممة في أوقات مختلفة والتي سيتم تفسيرها بواسطة محلات مختلفة بطرق مختلفة (على سبيل المثال JavaScript مضمن في XHTML - على الرغم من أنه ليس من الضروري 100 ٪ هنا ، إلا أنه كابوس للقيام بخلاف ذلك).
  3. أنت تحاول تحليل XML بشيء لا يفهم XML.
  4. أنت تحاول استخدام شيء مبني على محلل يتيح الوصول إلى المستوى المنخفض الذي يميز بين أقسام CDATA وبيانات الأحرف الأخرى واستخدام هذا الوصول منخفض المستوى بشكل غير لائق.

بشكل ممتع ، هذه الحالات الأربع هي أيضًا الحالات الأربع التي يمكن أن يكون فيها الحظر على قبول أقسام CDATA منطقية.

لا تنطبق الحالة 1 هنا ، فهي ليست رمزًا تم إنشاؤه من قبل الإنسان. يمكن أن تطبق الحالة 2 هنا إذا كنت تفعل شيئًا مجنونًا حقًا. بصراحة ، فإن نقص أقسام CDATA هو أقل مخاوفك هنا ؛ قم بالتبديل إلى إنتاج XML أبسط في الاستعلام وتحويله إلى مكان آخر. يمكن أن تطبق الحالة 3 هنا ، لكن ليس من العدل أن تشكو من شعب SQL إذا كان الأمر كذلك ، عندما يجب عليك الشكوى إلى محلل XML المكسور الذي لا يعالج &lt;example&gt; كمثل <![CDATA[<example>]]>. يمكن أن تقدم الحالة 4 هنا ، ولكن مرة أخرى تشكو من الشخص الذي كتب رمز العربات التي تجرها الدواب ، وليس شعب SQL.

أنت محق تمامًا ، تعد CDATA ضرورية في العديد من السيناريوهات ، وهي جزء من معيار XML ويجب دعمها بواسطة كل أداة/طريقة معالجة XML. ولكن الشيء هو أن MS عادة لا تهتم .. أنت تعرف ، "640 كيلو بايت يجب أن يكون كافيا للجميع".

تحرير: حول XML صريح - هذه هي أفضل طريقة لإنشاء بيانات XML منسقة بدقة. نعم ، بناء الجملة مؤلم نوعًا ما للنظر إليه والارتباك ، ولكن بمجرد استخدامه عدة مرات ، ستعجب بجمالها وقوتها.

من المثير للاهتمام أن نرى كيف يمكن لشخص ما رمي قطعة قيمة للغاية من المعيار مع هذا النهج غريب الأطوار. لا يستخدم الجميع XML لبضع مئات من الأحرف من HTML أو قائمة من العناصر للمنزل.

يستخدم البعض منا بالفعل XML لتبادل البيانات ، وبيانات معقدة للغاية مثل CCD ، و CDA CDR ، وكلها تنسيقات مستندات قياسية في ساحة الرعاية الصحية وأصبحت أكثر وضوحًا مع Obamacare. جزء من بنية المستندات هذه يحتوي على مرفقات مثل صور DICOM والبيانات الثنائية الأخرى التي لا ينبغي قراءتها من قبل المحللين السبب في وجود تعريف CDATA.

لماذا يجب أن أدفع النفقات العامة للمحلل القراءة صورة DICOM 3 ميغابايت مضمنة في وثيقة CCD؟ لماذا يجب أن أجبر على فصل المستند عندما جاء في البيانات الأصلية وهو جزء من معيار XML. وأريد أن أكون قادرًا على تحديد موقع المستند واستعادةه وهو محتويات مع XML.

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

يرجى التوقف عن تحليل CDATA وتجاهلها.

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