PDA

View Full Version : سوال: xml به صورت دینامیک در صفحات وب



ali_hadian
شنبه 26 تیر 1389, 16:25 عصر
سلام
من در یک صفحه وب نیاز دارم که در با استفاده از جاوا اسکریپت، یک فایل xml را خوانده و از داده های آن در صفحه استفاده کنم.
مسئله این است که ای فایل xml باید با توجه به کاربر فعلی، به صورت دینامیک توسط سرور ساخته شود (فرقی نمیکند با jsp باشد یا servlet یا ...).

به نظر شما از چه راه حلی استفاده کنم؟ لطفا دقیقا روش را مشخص کنید. (فایل xml را در سرور چگونه بسازم؟ چگونه آن را لود کنم؟)

ترجیح بر این است که دیگر نیاز به تکنولوژی ajax نباشد، یعنی انگار که فایل xml قبلا در جایی ذخیره شده با آن برخورد کنم و به طور اتوماتیک این فایل توسط مرورگر دانلود شود (نه این که اسکریپت آن را دانلود کند)... اگر ممکن نیست هم که همان راه حل اصلی را لطف کنید!

یک دنیا ممنون

behrooj
یک شنبه 27 تیر 1389, 13:42 عصر
من یه پیش‌فرض می‌کنم، بعد بر‌اساسش نظرم رو می‌گم؛ اگر این فرض اشتباهه بگید که بشه بیشتر بحث کرد.

فرض؛ اطلاعاتی که با XML منتقل می‌شه برای ساختن ظاهر اون صفحه داره استفاده می‌شه. به طور خاص، اطلاعات این XML حاوی منطق خاصی نیست و تنها نکته‌ی آن این است که بر اساس هر کاربر ساخته می‌شه.

مثالی که برای این بحث می‌شه آورد ساختن منو‌های شخصی برای هر کاربر بر اساس داده‌های XML می‌تونه باشه.

ارزیابی محتوای وب
با این فرض، به نظرم شاید بهتر باشه از امکانات Template-ing استفاده کنید؛ به این معنی که در سمت سرور یه الگو داشته باشین که بعد از این که محتوای XML با توجه به هر کاربر ساخته شد، توسط موتور الگو (Template Engine) ارزیابی شده و به شما خروجی HTML یا هر چیز دیگه‌ای که می‌خواین میده و می‌تونید ازش استفاده کنید.

برای موتور الگو هم انتخاب‌هایی مثل Java Emitter Templates (JET) یا Velocity و یا Groovy دارید. چون به طور خاص شما با داده‌های XML کار می‌کنید من فکر می‌کنم که استفاده از امکانات XML (http://docs.codehaus.org/display/GROOVY/Processing+XML) روی Groovy به علاوه‌ی موتور الگوی Groovy (http://groovy.codehaus.org/Groovy+Templates) شاید بهتر باشه.

ساختن XML
مسأله‌ی دیگه‌ای که دارید ساختن پویای محتوای XML بر اساس کاربر که برای این موضوع هم انتخاب‌های زیادی در این زمینه هست. البته اگر از Groovy استفاه کنید که خودش امکانات مناسبی در مورد ساختن XML (http://docs.codehaus.org/display/GROOVY/Processing+XML) به شما می‌ده.

این یه راه‌حل که بر اساس پیش‌فرضه منه! اگه اطلاعات دیگه‌ای هم باید لحاظ بشه بگید!
به طور خاص راه‌حل‌های جالب مبتنی بر AJAX و jQuery هم می‌تونه ساخته باشه.

ali_hadian
یک شنبه 27 تیر 1389, 20:08 عصر
سلام، و با تشکر



فرض؛ اطلاعاتی که با XML منتقل می‌شه برای ساختن ظاهر اون صفحه داره استفاده می‌شه. به طور خاص، اطلاعات این XML حاوی منطق خاصی نیست و تنها نکته‌ی آن این است که بر اساس هر کاربر ساخته می‌شه.
مسئله دقیقا این است که «به طور مثال» کاربر کتابی را در کتابخانه جستجو میکند و در صفحه بعد لیست نتایج را میبیند. و سپس عملیات مورد نظر خود را (رزور، درخواست، ...) انجام میدهد. روش پایه این است که برای هریک از عملیات یک صفحه درست کنیم و داده ها را برای آن بفرستیم. ولی در اینجا ما میخواهیم کارها را به صورت ajaxی انجام دهیم. ترجیح بر این است که نتایج جستجو را به صورت xml به همراه صفحه بفرستیم و اسکریپت موجود در صفحه با استفاده از آن فایل xml ، فیلدهای نتایج را پر میکند. از اینجا به بعد، هر عملیاتی که کاربر بخواهد انجام دهد، به صورت ajaxی توسط اسکریپت موجود در صفحه وب (یا include شده به آن) انجام میشود.
نکته اینجاست که اگر این اطلاعات به صورت xml باشند، کار راحتتر است
ضمنا هنگامی که کاربر صفحه نتایج را میبیند، انتظار دارد که نتایج هم داخل صفحه باشند، نه این که دوباره صبر کند تا اسکریپت نتایج را داخل صفحه لود کند.

یک دنیا ممنون

behrooj
شنبه 02 مرداد 1389, 14:44 عصر
پاسخ قبلی من بر اساس طرح مساله‌ی شما بود:



ترجیح بر این است که دیگر نیاز به تکنولوژی ajax نباشد، یعنی انگار که فایل xml قبلا در جایی ذخیره شده با آن برخورد کنم و به طور اتوماتیک این فایل توسط مرورگر دانلود شود (نه این که اسکریپت آن را دانلود کند)با توضیحات جدید شما، من مسأله رو این طور می‌بینم:

اول؛ قسمت اول ساخت XML و ارسالش به سمت کلاینت که خود نطرم رو گفتم.

دوم؛ ایجاد یک ساختار نمایشی بر اساس داده‌های XML که مبتنی بر JavaScript ـِ به نظرم، مثلا با استفاده از jQuery (http://jquery.com/). تأکید دارم که این قسمت AJAX نیست به نظرم.

سوم؛ انجام عملیات بعدی بر روی داده‌های نمایش‌داده ‌شده از «دوم». این عملیات رو احتمالا می‌خواید با استفاده از AJAX انجام بدید که خوب شاید باز ساده‌ترین پیشنهاد استفاده از jQuery باشه.

به جز این راه حل من اینا به نظرم می‌رسه:

۱. چرا کلا راه‌حل مبتنی بر XML و JavaScript UI و AJAX به نظر شما بهتره؟
۲. شاید در این مورد خاص بد نباشه به یه چیزی مثل GWT فکر کنید.

موفق باشید.

billguess
یک شنبه 03 مرداد 1389, 15:22 عصر
مسئله دقیقا این است که «به طور مثال» کاربر کتابی را در کتابخانه جستجو میکند و در صفحه بعد لیست نتایج را میبیند. و سپس عملیات مورد نظر خود را (رزور، درخواست، ...) انجام میدهد. روش پایه این است که برای هریک از عملیات یک صفحه درست کنیم و داده ها را برای آن بفرستیم.
با سلام
من هم نظرم بر این است که استفاده از جاوا اسکریپت توانایی حل مشکل شما را دارد و این که بر گرداندن نتایج شما به سمت کاربر در چه قالبی باشد به نظر شما بستگی دارد که اگر دوست دارید یکی از آنها XMLهم می تواند باشد و اگر به خود جاوا اسکریپت مسلط نیستید می توانید همانطور که دستمون فرمودند از GWT یا سایر تکنیک هایی که نهایتاً جاوا اسکریپت تولید می کنند استفاده کنید