سؤال

لم أكن على علم بوجود فرق، لكن أحد زملائي في العمل قال بوجود فرق، على الرغم من أنه لا يمكنه دعمه.ما الفرق إن وجد؟

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

المحلول

هناك فرق، نعم.

XML الذي يلتزم بـ معيار XML يعتبر جيد التكوين، في حين أن ملف XML الذي يلتزم بـ a دتد يعتبر صالحا.

نصائح أخرى

XML الصالح هو XML الذي نجح في التحقق من الصحة مقابل DTD.

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

وبعبارة أخرى، تشير الصحة إلى الدلالات، وحسن الصياغة يشير إلى بناء الجملة.

لذلك يمكن أن يكون لديك ملف XML غير صالح.

جيدة التكوين مقابل XML صالح

حسنة التشكيل يعني أن الكائن النصي يلبي متطلبات W3C ل كونها XML.

صالح يعني أن XML جيد التنسيق يلبي المتطلبات الإضافية التي يقدمها مخطط محدد.


التعريفات الرسمية

لكل توصية W3C لـ XML:

[تعريف:كائن البيانات هو مستند XML إذا كان كذلك جيدة التكوين, ، كما هو محدد في هذه المواصفات.بالإضافة إلى ذلك ، وثيقة XML هي صالح إذا كان يفي ببعض القيود الإضافية.]


الملاحظات:

  • المستند الذي لم يتم تنسيقه بشكل جيد ليس XML.(XML جيد التنسيق شائع الاستخدام ولكنه زائد عن الحاجة من الناحية الفنية.)
  • أن تكون صالحًا يعني أن تكون حسن التكوين.
  • أن تكون حسن التكوين لا يعني أن تكون صالحًا.
  • على الرغم من أن توصية W3C لـ XML يحدد صلاحية ليكون ضد DTD، يسمح الاستخدام التقليدي بتطبيق المصطلح للتوافق مع مخططات XML المحددة عبر XSD, الاسترخاء نانوغرام, مخطط, ، أو طرق أخرى.

أمثلة على الأسباب التي تجعل المستند...

ليست جيدة التشكيل:

  • يفتقر العنصر إلى علامة إغلاق (وليس إغلاقًا ذاتيًا).
  • تتداخل العناصر دون تداخل مناسب: <a><b></a></b>
  • تفتقد قيمة السمة اقتباس إغلاق يطابق اقتباس الافتتاح.
  • < أو & يتم استخدامها في المحتوى بدلا من &lt أو &amp;.
  • توجد عناصر جذرية متعددة.
  • توجد إعلانات XML متعددة، أو يظهر تعريف XML في مكان آخر غير الجزء العلوي من المستند.

غير صالح:

  • هناك عنصر أو سمة مفقودة ولكنها مطلوبة بواسطة مخطط XML.
  • يتم استخدام عنصر أو سمة ولكن لم يتم تعريفها بواسطة مخطط XML.
  • لا يتطابق محتوى العنصر مع المحتوى المحدد بواسطة مخطط XML.
  • لا تتطابق قيمة السمة مع النوع المحدد بواسطة مخطط XML.

مساحة الاسم جيدة التشكيل

من الناحية الفنية، يُسمح بأحرف النقطتين في أسماء المكونات في XML.ومع ذلك، القولون يجب يمكن استخدامها فقط في الأسماء لأغراض مساحة الاسم:

ملحوظة:

مساحات الأسماء في توصية XML [أسماء XML] يعين معنى للأسماء التي تحتوي على شخصيات القولون.لذلك ، يجب ألا يستخدم المؤلفون القولون في أسماء XML باستثناء أغراض مساحة الاسم ، ولكن يجب على معالجات XML قبول القولون كحرف اسم.

ولذلك مصطلح آخر، مساحة الاسم جيدة التشكيل, ، تم تعريفه في مساحات الأسماء في XML 1.0 توصية W3C وهذا يعني ضمناً كافة قواعد XML الخاصة بالصياغة الجيدة زائد تلك التي تحكم مساحات الأسماء وبادئات مساحة الاسم.

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

كما قال آخرون، يتوافق XML جيد التكوين مع مواصفات XML، ويتوافق XML الصالح مع مخطط معين.

هناك طريقة أخرى لتوضيح الأمر وهي أن XML جيد التكوين معجميا صحيح (يمكن تحليله)، في حين أن XML صالح نحويا صحيح (يمكن مطابقته لمفردات وقواعد معروفة).

لا يمكن أن تكون وثيقة XML صالحة حتى يتم تنسيقها بشكل جيد.يتم الاحتفاظ بجميع مستندات XML بنفس المعيار من حيث حسن الصياغة (RFC الذي تم طرحه بواسطة W3).يمكن أن يكون مستند XML واحدًا صالحًا لبعض المخططات وغير صالح لمخططات أخرى.هناك عدد من لغات المخطط، والعديد منها يعتمد في حد ذاته على XML.

XML الجيد التصميم هو XML الذي يلبي المتطلبات النحوية للغة.لا تفتقد أي علامات إغلاق، مع استخدام جميع العلامات المفردة الخاصة بك <whatever /> بدلا من مجرد <whatever>, ، ووضع علامات الإغلاق الخاصة بك بالترتيب الصحيح.

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

كل ملفات XML الصالحة تكون منسقة بشكل جيد، ولكن ليست كل XML الصالحة تكون صالحة.

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

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

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

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

يمكن استخدام تعريفات أنواع المستندات (DTDs) أو مخططات XML لتحديد بنية ومحتوى فئة معينة من مستندات XML.يتضمن ذلك تفاصيل العلاقة بين الوالدين والطفل، وقوائم السمات، ومعلومات نوع البيانات، وقيود القيمة، وما إلى ذلك.بالإضافة إلى قواعد الصياغة الجيدة، إذا كان مستند XML يتبع أيضًا القواعد المحددة في DTD/Schema المرتبط، فيُقال إنه مستند XML صالح.

جميع مستندات XML الصالحة منسقة بشكل جيد، ولكن العكس ليس صحيحًا دائمًا.ليس من الضروري أن تكون مستندات XML جيدة التنسيق صالحة.

سأضيف أن لغة XML الصالحة تشير أيضًا إلى أنها جيدة الصياغة، ولكن لغة XML جيدة الصياغة ليست صالحة بالضرورة.

بالإضافة إلى DTD المذكورة أعلاه، هناك طريقتان أخريان لوصف مستندات XML والتحقق من صحتها: XMLSchema و الاسترخاءNG, ، وكلاهما قد يكون أسهل في الاستخدام ويدعم ميزات أكثر من DTD.

إذا كان XML يؤكد قواعد DTD، فهو XML صالح.إذا كانت مستند XML يتوافق مع قواعد XML (يتم إغلاق جميع العلامات التي تم تشغيلها ، فهناك عنصر جذر وما إلى ذلك) فهو XML تم تشكيله جيدًا.

مأخوذ من لغة التوصيف القابلة للتوسيع (XML) 1.0 (الإصدار الخامس) - توصية W3C بتاريخ 26 نوفمبر 2008 :

[تعريف:كائن البيانات هو مستند XML إذا تم تشكيله جيدًا ، كما هو محدد في هذه المواصفات.بالإضافة إلى ذلك ، يكون مستند XML صالحًا إذا كان يفي ببعض القيود.


بالنسبة لأولئك الذين يفضلون الكود الزائف على الفقرات وفقرات النص...:)

IF is_well_formed(<XML_doc>) THEN
    # It is well-formed, and can be parsed
    IF is_valid(<XML_doc>) THEN
        # Well-formed and ALSO valid. Hurray! 
        # **A valid XML doc, is a well-formed doc!**
    ELSE
        # Only well-formed, NOT valid
    END IF
ELSE
    # Not well-formed, or valid!
END IF

FUNCTION is_well_formed
    IF <does_not_contain_syntax,_spelling,_punctuation,_grammar_errors,_etc._errors> THEN
        RETURN TRUE
    ELSE 
        RETURN FALSE
    END IF
END FUNCTION 

FUNCTION is_valid
    IF <markup_of_the_XML_document_matches_"some"_defined_standard> THEN
        # Standards used to validate XML could be a DTDs or XML Schemas, referenced within the XML document
        RETURN TRUE
    ELSE 
        RETURN FALSE
    END IF
END FUNCTION

بناءً على النظرية: "حسن التشكيل" مقابل.صالح

DTD هو اختصار لتعريف نوع المستند.هذا وصف لمحتوى مجموعة من ملفات XML.يعد هذا جزءًا من مواصفات XML 1.0، ويسمح للشخص بالوصف والتحقق من أن نسخة مستند معينة تتوافق مع مجموعة القواعد التي توضح تفاصيل هيكلها ومحتواها.

التحقق من الصحة هو عملية فحص المستند مقابل DTD (بشكل أعم مقابل مجموعة من قواعد البناء).

تعد عملية التحقق وبناء DTDs أصعب جزأين في دورة حياة XML.باختصار، يحدد DTD جميع العناصر الممكنة التي يمكن العثور عليها في وثيقتك، ما هو الشكل الرسمي لشجرة الوثيقة الخاصة بك (من خلال تحديد المحتوى المسموح به للعنصر؛إما نص، أو تعبير عادي لقائمة الأطفال المسموح بها، أو محتوى مختلط، أي.كل من النص والأطفال).يحدد DTD أيضًا السمات الصالحة لجميع العناصر وأنواع تلك السمات.

حسنًا، XML الذي لم يتم تشكيله بشكل جيد، نوعًا ما حسب التعريف، ليس XML.يشير الأشخاص عادةً إلى XML الصالح باعتباره XML الذي يلتزم بمخطط معين (XSD أو DTD).

يرى XML DTD في مدارس W3:

يُطلق على مستند XML الذي يحتوي على بناء الجملة الصحيح اسم "Well Formed".

وثيقة XML تم التحقق من صحتها مقابل DTD هي "تم تشكيلها جيدًا" و "صالحة".

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