JsonML
JsonML ، لغة ترميز JSON ، هي لغة ترميز خفيفة الوزن تُستخدم للربط بين XML (لغة الترميز القابلة للتوسيع) و JSON (تدوين كائنات جافا سكريبت). تقوم بتحويل مستند XML أو جزء منه إلى بنية بيانات JSON لتسهيل استخدامها في بيئات جافا سكريبت مثل متصفح الويب ، مما يسمح بمعالجة بيانات XML دون الحاجة إلى محلل XML.
تُعدّ JsonML الأكثر استخدامًا في تطبيقات الويب التي تعتمد على تقنية Ajax (جافا سكريبت غير المتزامنة وXML). تُستخدم لنقل XHTML (لغة ترميز النص التشعبي القابلة للتوسيع) إلى العميل، حيث يُمكن إعادة بنائها بشكل حتمي إلى عناصر DOM (نموذج كائن المستند). يُمكن استخدام استراتيجية التحسين التدريجي أثناء عملية البناء لربط السلوكيات الديناميكية بالعناصر الثابتة. [ 1 ]
يمكن استخدام JsonML أيضًا كبنية أساسية لإنشاء قوالب معقدة من جانب العميل تُسمى JBST (قوالب JsonML + قوالب جانب المتصفح). [ 2 ] من الناحية التركيبية، تبدو JBST مشابهة لعناصر تحكم المستخدم في JSP (صفحات خادم جافا) أو ASP.NET (صفحات الخادم النشطة .NET). تتوفر أمثلة تفاعلية على موقع jsonml.org.
بناء الجملة
التحويل من XML إلى JsonML قابل للعكس جزئيًا. يتم التعامل مع مساحات أسماء XML عن طريق إضافة بادئة مساحة الاسم إلى اسم العنصر، على سبيل المثال، يصبح .<myns:myElement/>["myns:myElement"]
مثال على التحويل
تتيح لغة JsonML تمثيل أي مستند XML بشكل فريد كسلسلة JSON. ويستخدم بناء الجملة ما يلي:
| JsonML مشفر | ملف XML الأصلي |
|---|---|
[ "person" , { "created" : "2006-11-11T19:23" , "modified" : "2006-12-31T23:59" }, [ "firstName" , "Robert" ], [ "lastName" , "Smith" ], [ "address" , { "type" : "home" }, [ "street" , "12345 Sixth Ave" ], [ "city" , "Anytown" ], [ "state" , "CA" ], [ "postalCode" , "98765-4321" ] ] ] | <!-- تمثيل XML لسجل شخص --> <person created= "2006-11-11T19:23" modified= "2006-12-31T23:59" > <firstName> روبرت </firstName> <lastName> سميث </lastName> <address type= "home" > <street> 12345 الجادة السادسة </street> <city> أنيتاون </city> <state> كاليفورنيا </state> <postalCode> 98765-4321 </postalCode> </address> </person> |
ينتج عن تحويل JSON "العادي" تمثيل أكثر إيجازًا، ولكنه يفقد بعض المعلومات الهيكلية للمستند، حيث أنه لا يحدد ما إذا كان زوج المفتاح والقيمة سمة أم عقدة:
{ "person" : { "address" : { "city" : "Anytown" , "postalCode" : "98765-4321" , "state" : "CA" , "street" : "12345 Sixth Ave" , "type" : "home" }, "created" : "2006-11-11T19:23" , "firstName" : "Robert" , "lastName" : "Smith" , "modified" : "2006-12-31T23:59" }}تسمية خاطئة لـ "شكل الكائن"
في نقاشٍ على مجموعة مستخدمي JSON، استخدم دوغلاس كروكفورد مصطلح "JsonML" بشكلٍ خاطئ لوصف نوعين: "صيغة المصفوفة" و"صيغة الكائن". [ 3 ] كان هذا استخدامًا خاطئًا لمصطلح JsonML الذي كان يُقصد به دائمًا ما أشار إليه كروكفورد بـ"صيغة المصفوفة". [ 4 ]
تصديق
يمكن التحقق من صحة JsonML باستخدام مخطط JSON التالي:
{ "type" : "array" , "minItems" : 1 , "maxItems" : 3 , "items" : [ { "type" : "string" }, { "oneOf" : [ { "type" : "object" }, { "type" : "string" }, { "type" : "array" , "items" :{ "$ref" : "#" }} ]}, { "oneOf" : [ { "type" : "string" }, { "type" : "array" , "items" :{ "$ref" : "#" }} ]} ] }مقارنة بالتقنيات المماثلة
XML/XSLT
يمكن لـ XML و XSLT (لغة تحويلات أوراق الأنماط القابلة للتوسيع) إنشاء قوالب من جانب العميل، وكلاهما يسمح بتخزين القالب مؤقتًا بشكل منفصل عن البيانات. يستخدم JBST لغة JavaScript بشكل أصلي في القالب، بدلاً من الحاجة إلى دمج أنواع مختلفة من لغات التحكم.
InnerHTML
على الرغم من استخدامهما ظاهريًا لأداء مهام متشابهة، إلا أن JsonML و innerHTML مختلفان تمامًا. يتطلب innerHTML جميع عناصر الترميز بصيغة محددة، مما يعني أن الخادم إما هو من يقوم بعرض الترميز، أو أن المبرمج يقوم بعمليات دمج سلاسل نصية مكلفة باستخدام جافا سكريبت.
تستخدم JsonML تقنية القوالب من جانب العميل عبر JBST، ما يعني تحويل HTML إلى قالب JavaScript أثناء عملية البناء . عند التشغيل ، تُقدَّم البيانات، وتكون عناصر DOM هي النتيجة. يمكن إدراج عناصر DOM الناتجة أو استبدال عنصر موجود، وهو ما لا يستطيع innerHTML فعله بسهولة دون إنشاء عناصر DOM زائدة. لا تتطلب إعادة الربط سوى طلب بيانات إضافية، وهي أصغر من حجم الترميز الكامل. ونتيجةً لذلك، غالبًا ما تتحقق مكاسب كبيرة في الأداء، نظرًا لأن الترميز يُطلب أو يُخزَّن مؤقتًا بشكل منفصل عن البيانات.
نمط رسالة HTML / قوالب من جانب المتصفح
لتبسيط الأمور، كان استخدام innerHTML هو الأسلوب المفضل لنمط رسالة HTML [ 5 ] في Ajax. مع ذلك، تهدف أدوات مثل JsonFx [ 6 ] إلى تبسيط تطبيق JsonML وJBST مع توفير نمط Ajax كامل يعتمد على القوالب من جانب المتصفح. [ 7 ]
مراجع
- ↑ ماكامي، ستيفن م. (3 فبراير 2007). "JsonML - ربط السلوكيات بعناصر DOM" . الموقع الرسمي . JsonML.org. مؤرشف من الأصل في 14 أغسطس 2010. تم الاطلاع عليه في 7 يناير 2011 .
- ↑ ماكامي، ستيفن م. (3 أغسطس 2008). "JsonML + قوالب جانب المتصفح (JBST)" . الموقع الرسمي . JsonML.org . تاريخ الاسترجاع: 7 يناير 2011 .
- ↑ "Json : Message: Org.json.JSONML.java" . مؤرشف من الأصل بتاريخ 27-04-2012 . تم الاطلاع عليه بتاريخ 12-02-2009 .
- ↑ "JsonML (لغة ترميز JSON)" .
- ↑ "رسالة HTML" . حول AjaxPatterns.org . AjaxPatterns.org . تم الاطلاع عليه بتاريخ 7 يناير 2011 .
{{cite web}}: CS1 maint: deprecated archiveal service ( link ) - ↑ "مرحباً بكم في JsonFx.NET" . الموقع الرسمي لـ JsonFx.NET . ستيفن م. مكامي . تاريخ الاطلاع: 7 يناير 2011 .
- ↑ "القوالب من جانب المتصفح" . AjaxPatterns.org . تم الاطلاع عليه بتاريخ 7 يناير 2011 .
{{cite web}}: CS1 maint: deprecated archiveal service ( link )
روابط خارجية
- JsonML.org
- مقال من IBM developerWorks
- تطبيق جافا JSONML - من تأليف دوغلاس كروكفورد
- JsonFx.NET - إطار عمل C#/.NET JBST
- لغة C++ JDX XPath 2.0 لملفات XML و JSON و JsonML
- JSON
- لغات ترميز خفيفة الوزن
- تنسيقات تسلسل البيانات
- لغات ترميز XML
