دروس XML

الصفحة الرئيسية لـ XML مقدمة XML كيفية استخدام XML شجرة XML بناء جملة XML عناصر XML سمات XML مساحات أسماء XML عرض XML طلب XML HttpRequest محلل XML XML DOM XML XPath XML XSLT XML XQuery XML XLink مدقق XML XML DTD مخطط XML خادم XML أمثلة XML مسابقة XML شهادة XML

XML AJAX

مقدمة أجاكس أجاكس XMLHttp طلب AJAX استجابة AJAX ملف AJAX XML أجاكس بي إتش بي أجاكس آسيا والمحيط الهادئ قاعدة بيانات أجاكس تطبيقات أجاكس أمثلة AJAX

XML DOM

مقدمة حول DOM عقد DOM الوصول إلى DOM معلومات عقدة DOM قائمة عقدة DOM عبور DOM التنقل في DOM DOM احصل على القيم DOM تغيير العقد DOM إزالة العقد استبدل DOM Nodes DOM إنشاء العقد DOM أضف العقد عقد استنساخ DOM أمثلة DOM

دروس XPath

مقدمة XPath عقد XPath بناء جملة XPath محاور XPath مشغلي XPath أمثلة XPath

XSLT التعليمي

XSLT مقدمة لغات XSL تحويل XSLT XSLT <template> XSLT <قيمة> XSLT <للجميع> XSLT <ترتيب> XSLT <if> XSLT <اختر> XSLT تطبيق XSLT على العميل XSLT على الخادم XSLT تحرير XML أمثلة XSLT

XQuery تعليمي

XQuery مقدمة مثال XQuery XQuery FLWOR XQuery HTML شروط XQuery بناء جملة XQuery XQuery إضافة XQuery حدد وظائف XQuery

XML DTD

مقدمة DTD مكعبات بناء DTD عناصر DTD سمات DTD عناصر DTD مقابل Attr كيانات DTD أمثلة DTD

مخطط XSD

مقدمة XSD XSD كيف XSD <المخطط عناصر XSD سمات XSD قيود XSD

مجمع XSD

عناصر XSD XSD فارغ عناصر XSD فقط نص XSD فقط XSD مختلط مؤشرات XSD XSD <أي> XSD <أي سمة> تبديل XSD مثال XSD

بيانات XSD

سلسلة XSD تاريخ XSD XSD الرقمية XSD متفرقات مرجع XSD

خدمات الويب

خدمات XML XML WSDL صابون XML XML RDF XML RSS

مراجع

أنواع عقدة DOM عقدة DOM قائمة عقدة DOM DOM NamedNodeMap مستند DOM عنصر DOM سمة DOM نص DOM DOM CDATA تعليق DOM DOM XMLHttpRequest محلل DOM عناصر XSLT وظائف XSLT / XPath

XML DOM Traverse Node Tree


يعني العبور التنقل عبر شجرة العقدة أو التنقل عبرها.


عبور شجرة العقدة

غالبًا ما تريد تكرار مستند XML ، على سبيل المثال: عندما تريد استخراج قيمة كل عنصر.

يسمى هذا "اجتياز شجرة العقد"

المثال أدناه حلقات عبر جميع العقد الفرعية لـ <book> ، ويعرض أسمائها وقيمها:

مثال

<!DOCTYPE html>
<html>
<body>

<p id="demo"></p>

<script>
var x, i ,xmlDoc;
var txt = "";
var text = "<book>" +
"<title>Everyday Italian</title>" +
"<author>Giada De Laurentiis</author>" +
"<year>2005</year>" +
"</book>";

parser = new DOMParser();
xmlDoc = parser.parseFromString(text,"text/xml");

// documentElement always represents the root node
x = xmlDoc.documentElement.childNodes;
for (i = 0; i < x.length ;i++) {
    txt += x[i].nodeName + ": " + x[i].childNodes[0].nodeValue + "<br>";
}
document.getElementById("demo").innerHTML = txt;
</script>

</body>
</html>

انتاج:

title: Everyday Italian
author: Giada De Laurentiis
year: 2005

شرح المثال:

  1. قم بتحميل سلسلة XML إلى xmlDoc
  2. احصل على العقد الفرعية لعنصر الجذر
  3. لكل عقدة فرعية ، قم بإخراج اسم العقدة وقيمة العقدة الخاصة بالعقدة النصية


اختلافات المستعرض في تحليل DOM

تدعم جميع المتصفحات الحديثة مواصفات W3C DOM.

ومع ذلك ، هناك بعض الاختلافات بين المتصفحات. أحد الاختلافات المهمة هو:

  • الطريقة التي يتعاملون بها مع المساحات البيضاء والخطوط الجديدة

DOM - مساحات بيضاء وخطوط جديدة

غالبًا ما يحتوي XML على سطر جديد ، أو أحرف مسافات بيضاء ، بين العقد. هذا هو الحال غالبًا عندما يتم تحرير المستند بواسطة محرر بسيط مثل Notepad.

المثال التالي (الذي تم تحريره بواسطة المفكرة) يحتوي على CR / LF (سطر جديد) بين كل سطر ومسافتين أمام كل عقدة فرعية:

<book>
  <title>Everyday Italian</title>
  <author>Giada De Laurentiis</author>
  <year>2005</year>
  <price>30.00</price>
</book>

لا يتعامل Internet Explorer 9 والإصدارات الأقدم مع المسافات البيضاء الفارغة أو الأسطر الجديدة كعقد نصية ، بينما تتعامل المستعرضات الأخرى مع ذلك.

سيخرج المثال التالي عدد العقد الفرعية التي يمتلكها العنصر الجذر (من books.xml ). IE9 والإصدارات الأقدم ستخرج 4 عقد فرعية ، بينما IE10 والإصدارات الأحدث ، والمتصفحات الأخرى ستخرج 9 عقد فرعية:

مثال

function myFunction(xml) {
var xmlDoc = xml.responseXML;
    x = xmlDoc.documentElement.childNodes;
    document.getElementById("demo").innerHTML =
    "Number of child nodes: " + x.length;
}

PCDATA - بيانات الأحرف الموزعة

تحلل محللات XML عادةً كل النص في مستند XML.

عند تحليل عنصر XML ، يتم أيضًا تحليل النص الموجود بين علامات XML:

<message>This text is also parsed</message>

يقوم المحلل اللغوي بذلك لأن عناصر XML يمكن أن تحتوي على عناصر أخرى ، كما في هذا المثال ، حيث يحتوي عنصر <name> على عنصرين آخرين (الأول والأخير):

<name><first>Bill</first><last>Gates</last></name>

وسيقوم المحلل اللغوي بتقسيمها إلى عناصر فرعية مثل هذا:

<name>
  <first>Bill</first>
  <last>Gates</last>
</name>

بيانات الأحرف الموزعة (PCDATA) هي مصطلح يستخدم حول البيانات النصية التي سيتم تحليلها بواسطة محلل XML.


CDATA - (لم يتم تحليلها) بيانات الأحرف

يستخدم المصطلح CDATA حول البيانات النصية التي يجب ألا يتم تحليلها بواسطة محلل XML.

الأحرف مثل "<" و "&" غير قانونية في عناصر XML.

سينشئ "<" خطأ لأن المحلل اللغوي يفسره على أنه بداية عنصر جديد.

سينشئ "&" خطأ لأن المحلل اللغوي يفسره على أنه بداية كيان حرف.

تحتوي بعض النصوص ، مثل كود JavaScript ، على الكثير من الأحرف "<" أو "&". لتجنب الأخطاء يمكن تعريف كود البرنامج النصي على أنه CDATA.

يتم تجاهل كل شيء داخل قسم CDATA بواسطة المحلل اللغوي.

يبدأ قسم CDATA بـ " <! [CDATA [ " وينتهي بـ " ]]> ":

<script>
<![CDATA[
function matchwo(a,b) {
    if (a < b && a < 0) {
        return 1;
    } else {
        return 0;
    }
}
]]>
</script>

في المثال أعلاه ، يتم تجاهل كل شيء داخل قسم CDATA بواسطة المحلل اللغوي.

ملاحظات على أقسام CDATA:

لا يمكن أن يحتوي مقطع CDATA على السلسلة "]]>". أقسام CDATA المتداخلة غير مسموح بها.

لا يمكن أن تحتوي "]]>" التي تشير إلى نهاية قسم CDATA على مسافات أو فواصل أسطر.