الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

استفسار عن XQuery

بدأه Abderraouf_Dz في 27 مايو 2012 · 7 رد · 645 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

ابحث عن كيفية استخدام XQuery مع الجافا ، بحثت ولم اجد الجار المساعد لهذه المكتبة

الرجاء المساعدة ولو بمثال بسيط

#2

السلام عليكم ....

  1. يوجد الكثير من الــ Implementations للـ XQuery بعضها مفتوح المصدر و بعضها مغلق ... و بعضها لا يحقق كل الميزات Features للــ XQuery
  2. حاول البحث عنها بالجوجل "XQuery Implementation" أو "XQuery Engine Java" أو الخ ..
  3. http://saxon.sourceforge.net
  4. MXQuery
  5. XQEngine
  6. عليك بقراءة كيفية استخدام كل واحد منهم من الــ Documentations ..

ربما بعض الأعضاء عندهم تجربة مع محرك أفضل ..

1

لا إله إلا الله ... محمد رسول الله

لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة

المعرًف القديم : houssam11350_11350

من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر

#3

اشكرك على المساعدة للاسف حاولت ولم اصل لاي نتيجة

#4

السلام عليكم ....

لا شكر على واجب ..

  1. قم بتحمي الملف SaxonHE9-4-0-3J.zip من هنا أو منالرابط المباشر
  2. افتح الملف السابق و قم باستخراج ملف الــ jar المسمى saxon9he.jar و قم بإضافته للمشروع (netneans or eclipse).
  3. قم بإنشاء ملف الــ XML المطلوب الاستعلام عليه و ليكن كمايلي :
    <student_names>
    <student><name>George Washington</name><age>10</age></student>
    <student><name>Janet Jones</name><age></age>20</student>
    <student><name>Joe Taylor</name><age>30</age></student>
    </student_names>

    و ضعه داخل مجلد المشروع مباشرة .. باسم f.xml

  4. قم بإنشاء ملف للأستعلام و وليكن اسمه q.txt و ضع به مايلي :
    <st>
    	{ doc('f.xml')//student_names/student/name }
    </st>

    أي أطلب إعادة الــ name من اللملف السابق ..

  5. خذ صف جديد و اكتب به :
    public class XQTest
    {
    
    	public static void main(String[] args) throws Exception
    	{
        	String[] myArgs = new String[] {"-q:q.txt"};
        	net.sf.saxon.Query.main(myArgs); 
    	}
    }

    ثم قم بتنفيذ الملف .. اترى النتيجة في الخرج كمايلي :

    <?xml version="1.0" encoding="UTF-8"?><st><name>George Washington</name><name>Janet Jones</name><name>Joe Taylor</name></st>

  6. للتعنامل مع أكثر من مثال قم بإنشاء Collection في ملف collection.xml واكتب فيه :
    <collection>
    <doc href="f.xml"/>
    </collection>

    و جرب الاستعلام :

    <st>
    {
     for $doc in collection('collection.xml')
     for $a in $doc/student_names/student/name
     where ends-with( $a, 'or')
       	return $a
    }
    </st>

  7. رابط أول
  8. رابط

تم تعديل هذه المشاركة بواسطة houssam11350_11350 في 28 مايو 2012 في 16:53

لا إله إلا الله ... محمد رسول الله

لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة

المعرًف القديم : houssam11350_11350

من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر

#5

السلام عليكم اشكرك على المساعدة

من خلال ملاحظتي وتجريبي للشرح وجدتها عير عملية ، بمعنى انشاء ملف ووضع الاستعلام فيه ومن ثم تشغيله اضافة ان الاستعلام يكون مختلف في كل مرة

هل فيه امكانية للتشغيل مباشرة كما يوجد في قواعد البيانات العادية بمعنى استطيع ادخال الاستعلام ومن ثم يعطيني النتيجة

مثلا لدي ملف الاكسمال التالي

<Hotels>

   <Hotel>
    	<nom> Hotel 1 </nom>
	    <categore>   4   </categore>
	    <adresse>   adres1   </adresse>

  </Hotel>

     <Hotel>
    	<nom> Hotel 2 </nom>
	    <categore>   3   </categore>
	    <adresse>   adres2   </adresse>

  </Hotel>

     <Hotel>
    	<nom> Hotel 1 </nom>
	    <categore>   1   </categore>
	    <adresse>   adres3   </adresse>

  </Hotel>

اريد ان استعلم عليه في كل مرة وباستلام مختلف بمعنى مثلا اريد استخراج اسماء جميع الفنادق ومرة اخري عنوان الفندق كذا وكذا

تم تعديل هذه المشاركة بواسطة Abderraouf_Dz في 29 مايو 2012 في 10:12

#6

السلام عليكم ...

  1. الحل بسيط , افتح الملف q.txt للكتابة من داخل الكود و اكتب داخله الاستعلام ...
  2. هذا مثال آخر عن XQEngine ...
    1. قم بتحميل ملف الــ jar من هنا و قم بإضافته للمشروع.
    2. اكتب الكود التالي :

      import com.fatdog.xmlEngine.ResultList;
      import com.fatdog.xmlEngine.XQEngine;
      import org.xml.sax.helpers.XMLReaderFactory;

      public class XQTest
      {

      public static void main(String[] args) throws Exception
      {
      XQEngine engine = new XQEngine();
      engine.setXMLReader(XMLReaderFactory.createXMLReader());
      engine.setDocument("D:/my_documents/NetBeansProjects/ArabTeam_Thread/f.xml");
      ResultList result = engine.setQuery("for $a in doc('D:/my_documents/NetBeansProjects/ArabTeam_Thread/f.xml')/student_names/student/name"+
      " where $a = 'Joe Taylor'"+
      " return $a ");

      String res_String = result.asString(); // .emitXml( );
      System.out.println("Result : " +res_String);
      }
      }
    3. يبدو أنه لا يدعم كل الــ functions الموجودة ...
    4. http://xqengine.sourceforge.net/FandO.html
    5. http://xqengine.sourceforge.net/apiTour.html

لا إله إلا الله ... محمد رسول الله

لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة

المعرًف القديم : houssam11350_11350

من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر

#7

بارك الله فيك

المثال الثاني افادني كثيرا

ولكن عند تطبيقي لبعض الميتود كما في sql مثلا where nom like '%uuu%' لم تصلح وكذلك ال or لا تعمل

فما الحل

#8

السلام عليكم ..

  1. لا أعرف هل الــ Like مدعومة في xQuery اساسا ثم هل هي مدعومة في الــ Implementation الذي تعمل عليه ..
  2. يمكن ان تحاول في الــ Function التالية starts-with و ends-with و contains و matches
  3. انظر لأول إجابة في هذا الرابط التي جانبها إشار صح رابط

لا إله إلا الله ... محمد رسول الله

لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة

المعرًف القديم : houssam11350_11350

من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…