2009-05-08 28 views
20

मैंने अपनी पूरी साइट एक्सएमएल/एक्सएसएल में परिवर्तित कर दी है और मैं क्लाइंट-साइड एक्सएसएलटी करने के साथ सभी मौजूदा मुद्दों को जानना चाहता हूं।क्लाइंट-साइड एक्सएसएलटी

यहाँ लोगों को मैं पहले से ही पता है (पहले हाथ अनुभव से) कर रहे हैं:

  • क्रॉस-डोमेन XSL फ़ाइलों
  • अक्षम-उत्पादन-भागने (यह एक सुरक्षा मुद्दा और पार नहीं ब्राउज़र है) (इस एफएफ में काम नहीं करता ... वे इसे एक सुरक्षा मुद्दा पर विचार करें)
ब्राउज़र समर्थन के लिए के रूप में

इसके अलावा यह सब मैं के बारे में पता है:

  • ऑपेरा 9+
  • एफएफ 1.0+
  • एस एफ 2.0 + (मैं इस पर गलत हो सकता है)
  • क्रोम
  • आईई 6,0 +

किसी भी अन्य लोगों के लिए उपयोगी भी :)

होगा

संपादित करें:

2 ख़तरा के लिए वहाँ के रूप में आप अपने XSL को एक्सएचटीएमएल पारित देता है कि एक सभ्य समाधान नहीं है। यह वास्तव में परिवर्तित करके और सुनिश्चित करता है कि आपका एक्सएचटीएमएल वैध एक्सएमएल है और इसे एक्सएमएल के रूप में आपके एक्सएमएल में रखता है। फिर अपने एक्सएसएल में आप एक्सएमएल कॉपी करते हैं;) और इसे एक्सएचटीएमएल के रूप में आउटपुट करें।

+1

मैं भी इसके बारे में बहुत उत्सुक हूं। मैं वास्तव में क्लाइंट साइड xslt का उपयोग करना पसंद करता हूं, और मुझे इसके साथ कभी भी कोई समस्या नहीं हुई है, लेकिन मुझे हमेशा आश्चर्य हुआ कि क्या इसमें कोई डाउनसाइड्स था। – Zifre

+2

यह सच होना बहुत अच्छा है :)। क्लाइंट को सभी टेम्पलेट पीढ़ी को ऑफ़लोड करने की क्षमता ... और उन्हें टेम्पलेट कैश करने दें ... इसकी पूरी प्रतिभा। 2004 में यह लगभग क्रॉस ब्राउज़र समर्थित था, 200 9 में ... यह है, जो मैं समझता हूं। –

+0

क्यों न केवल एक्सएचटीएमएल का उपयोग अपने आधार के रूप में करें और फिर वहां से परिवर्तन लागू करें? एक्सएमएल के साथ क्यों शुरू करें? क्या आप अन्य वेब मानकों जैसे सीएसएस या जावास्क्रिप्ट और मूल छवियों जैसी चीजों का उपयोग करेंगे? प्रत्येक अतिरिक्त फ़ाइल क्लाइंट पक्ष पर कैश किए जाने तक प्रदर्शन समस्याओं का कारण बन जाएगी। – JamesEggers

उत्तर

14
  • गति: ब्राउज़र एचटीएमएल प्रतिपादन से पहले XSLT परिवर्तन लागू करने के लिए की जरूरत है, इस प्रकार उपयोगकर्ता पेज देखने के लिए लंबे समय तक इंतजार करना होगा। ब्राउज़र द्वारा उपयोग किए जाने वाले एक्सएसएलटी इंजन शीर्ष-पायदान नहीं हो सकते हैं। मैक ओएस एक्स पर, एक्सएमएल बदलते समय ब्राउजर फ्रीज हो सकता है और "कताई समुद्र तट बॉल" कर्सर का कारण बनता है, इस प्रकार उपयोगकर्ता स्क्रीन को पेंच कर सकता है और खुद को चोट पहुंचा सकता है।

  • अभिगम्यता: ब्राउज़र-पाठकों जैसे सेट में नहीं, ब्राउज़र के बारे में क्या? क्या वे उपयोगकर्ता आपके लिए महत्वपूर्ण हैं?

+4

क्लाइंट को सभी टेम्पलेट पीढ़ी को ऑफ़लोड कर रहा था (इस प्रकार सीपीयू की एक बड़ी मात्रा को बचा रहा है), मेरे पास ब्राउज़र की एक सूची है मैं एक्सएसएलटी काम करता हूं इसलिए मैं उन्हें वास्तविक एक्सएमएल/एक्सएसएल भेजता हूं। यदि कोई ब्राउज़र श्वेत सूची पर नहीं है तो सर्वर उनके लिए एक्सएसएलटी करता है और HTML भेजता है। धन्यवाद हालांकि, मैं इसे अपने पेशेवर/विपक्ष सूची में जोड़ दूंगा। –

+4

मुझे यकीन नहीं है कि मैं कंबल कथन से सहमत हूं कि यह _always_ क्लाइंट पर धीमा रन xslt/xml रूपांतरण होगा: यह (और अक्सर अभ्यास में करता है) का अर्थ है एन/डब्ल्यू (xsl/एक्सएमएल परिणामी एचटीएमएल/एक्सएचटीएमएल से छोटा हो सकता है): इस पर निर्भर करता है कि तंत्र की तुलना किस प्रकार की जा रही है (जेएसपी/एएसपी/सर्वर-साइड एक्सएसएलटी रूपांतरण कहें) - यह क्लाइंट-साइड दृष्टिकोण वास्तव में सर्वर से क्लाइंट तक प्रोसेसिंग समय को ऑफ़लोड कर सकता है ... और अधिक समवर्ती उपयोगकर्ताओं के साथ बेहतर स्केल करना चाहिए ... – monojohnny

2

मुझे xsltfiles को पार करने वाले पैरामीटर को क्रॉसब्रोइंग सक्षम रखने में कठिनाई मिली। अब मैं एफएफ और आईई का समर्थन करता हूं लेकिन क्रोम इसके कारण गिर गया ..

+0

क्या आपके पास एक उदाहरण के रूप में एक कोडब्लॉक है, मैं इसे क्रोम में ठीक काम करने में सक्षम था। –

+0

हाँ मेरे पास है, लेकिन क्रोम हमारे लिए बहुत महत्वपूर्ण नहीं था, इसलिए मैंने इसे अभी छोड़ दिया। के लिए (i = 0; i <पैरामीटर। लम्बाई; i ++) { xsltProcessor.set पैरामीटर (शून्य, "पी" + i, पैरामीटर [i]); गैरआईई और के लिए (i = 0; i <पैरामीटर। लम्बाई; i ++) { प्रोसेसर.एड पैरामीटर ("पी" + i, पैरामीटर [i]); } आईई – Peter

+2

के लिए शायद मैं बंद हूं लेकिन जब मैं "क्लाइंट-साइड एक्सएसएलटी" पढ़ता हूं, तो मुझे एक एक्सएमएल-स्टाइलशीट के माध्यम से जुड़े एक स्थिर एक्सएसएलटी के साथ सरल एक्सएमएल -> एक्सएचटीएमएल अनुवाद का सवाल माना जाता है?> जावास्क्रिप्ट एक्सएसएलटी इंजन की बजाय। यदि ऐसा है, तो पैरामीटर पास करना अप्रासंगिक है क्योंकि केवल इनपुट सेट XML दस्तावेज़ है। –

0

एक्सएसएलटी फ़ाइल एक और वस्तु है जिसे डाउनलोड करने की आवश्यकता है और ब्राउज़र केवल समानांतर में 2 या 3 आइटम लाएगा। मेरा अनुभव यह है कि समग्र प्रदर्शन (डाउनलोड और पीढ़ी) स्पष्ट रूप से धीमा है।

इसके अलावा, डेटा की जटिलता और अनावश्यकता के आधार पर, आप वास्तव में जितनी आवश्यकता हो उतनी अधिक डाउनलोड कर सकते हैं - यानी। अगर एचटीएमएल पहले से ही प्रस्तुत किया गया था।

+0

के बारे में बात कर रहा था, मुझे नहीं लगता कि यह एक वैध तर्क है। क्या आप सीएसएस का उपयोग नहीं करते हैं क्योंकि इसकी दूसरी फाइल डाउनलोड की जा सकती है? इसे सीएसएस की तरह कैश किया जा सकता है। –

+0

@ चाड क्या आप कह रहे हैं कि आपका एक्सएसएलटी सीएसएस जैसे वास्तविक वेब मानकों को नहीं रखेगा? क्या एक्सएसएलटी आपकी एक्सएमएल फ़ाइल को एचटीएमएल और टेबल-आधारित डिज़ाइन में बदल देगा या क्या यह सीएसएस का उपयोग करेगा? यह मेरी राय में एक बहुत ही वैध तर्क है क्योंकि यदि आप एक्सएमएल ले रहे हैं और इसे HTML में परिवर्तित कर रहे हैं, फिर भी वेब मानकों का उपयोग नहीं कर रहे हैं, तो आप इसे गलत कर रहे हैं। साथ ही, यदि आपका लक्ष्य आपकी HTML सामग्री को किसी भिन्न प्रारूप में परिवर्तित करना है, तो शायद पहले एक्सएचटीएमएल का उपयोग करना और फिर इसे बदलना बेहतर विकल्प हो सकता है। – JamesEggers

+3

मैं सभी वेब तकनीकों का उपयोग करूँगा। सीएसएस (डिजाइन), एक्सएसएल/एक्सएचटीएमएल (संरचना), एक्सएमएल (डेटा), जेएस (व्यवहार)। डेटा अलगाव की मात्रा सुंदर है। –

5

प्रदर्शन मोर्चे पर ... मान लीजिए कि इन दिनों अधिकांश ग्राहकों के पास 2 सीपीयू और 2 जीबी रैम है, और अधिकांश सर्वर नहीं हैं ... प्रति ग्राहक दो CPU का + 2 जीबी है। तो यह निश्चित रूप से तार्किक है कि एक्सएसएलटी ट्रांसफॉर्म को ऑफ़लोड करने से स्केलेबिलिटी में सुधार होना चाहिए, और कैशिंग सीएसएस + एक्सएसएलटी + जेएस कुल ट्रैफिक को कम करना चाहिए।

यह कहकर कि मैंने एक्सएसएलटी का उपयोग करके एक्सएचटीएमएल युक्त एसवीजी को अतीत में बनाने की कोशिश की है, और इसमें महाकाव्य-असफल रहा है। सबसे बड़ा पृष्ठ बस इतना बड़ा था (एक सूचकांक में 3,000+ प्रविष्टियां), और आईईएस एक्सएसएलटी ट्रांसफॉर्म करने के लिए एक डोम का उपयोग करता है, जिससे इसे कचरा शुरू हो जाता है। Xerces-j (सर्वर पर, उसी देव बॉक्स पर) में किए गए समान परिवर्तन लगभग 1000 गुना तेज थे।

यह उच्च समय ब्राउज़र-बंदरों कार्यक्रम ;-)

एक दिलचस्प चर्चा के साथ मिल गया है। इसे उठाने के लिए धन्यवाद।

चीयर्स। कीथ।

+0

के लिए एक ही विधि का उपयोग करें, मैंने अभी तक एसवीजी को आजमाया है, क्योंकि यह क्रॉस ब्राउज़र नहीं है। मुझे पता है कि एक प्लगइन है जो एडोब प्रदान करता है, इसकी एक सुंदर तकनीक है। http://raphaeljs.com/ <- बहुत अच्छा ... –

+0

आश्चर्य है कि 8 साल बाद कैसा दिख रहा है; पी –

+1

लॉल, हाँ 8 साल बाद। एक्सएसएलटी अभी भी प्रस्तुत करता है। –

1

मैं एक परियोजना जहाँ हम इस्तेमाल किया xslt + XML-> एचटीएमएल पर लगभग 1 साल काम किया है (हालांकि सर्वर साइड केवल)

बड़ी खामी मैं का सामना करना पड़ा: वहाँ xslt पीढ़ी के लिए अच्छा नहीं उपकरण जो की ओर झुक रहे हैं वेब विकास। एचटीएमएल का कोई पूर्वावलोकन नहीं। कोई सत्यापन नहीं परिणामस्वरूप xslt कुल गड़बड़ नहीं समझा जा सकता था। यह xslt डिजाइनर गलती इतना नहीं था, बल्कि xslt प्रसंस्करण मॉडल से परिणाम।

xslt/xml/urls के बीच लेयरिंग यह होना चाहिए जितना जटिल होना चाहिए। घटक-उन्मुख प्रोग्राम प्रोग्राम करने का कोई तरीका नहीं है।

अक्सर एकाधिक xslt फ़ाइलों की आवश्यकता होती है, इससे क्लाइंट-साइड पर कई डाउनलोड होते हैं। अन्यथा यह परियोजना के बावजूद भारी कोड डुप्लिकेशंस का कारण बन जाएगा।

मैं इसे प्रारंभिक अनुकूलन के रूप में देखता हूं। आप विकेट, जेएसएफ, टेपेस्ट्री, जीडब्ल्यूटी इत्यादि जैसे "सामान्य" वेब फ्रेमवर्क का उपयोग करके शुरू करते हैं। बाद में यदि यह पता चला है कि आपके सर्वर प्रीफॉर्मेंस सीपीयू-बाउंड है तो आप इस तरह के अनुप्रयोगों के सबसे अधिक इस्तेमाल किए जाने वाले हिस्सों को फिर से लिखने के लिए ओसीनसाइडर कर सकते हैं।

ओओटी, यदि आपको एक एक्सएमएल एपीआई + एचटीएमएल इंटरफ़ेस दोनों प्रदान करने की आवश्यकता है तो इसका वास्तविक लाभ है।

+5

मूल रूप से मैंने क्लाइंट-साइड एक्सएसएलटी के साथ smarty (एक PHP templating इंजन) को बदल दिया। और ऐसा करने में मुझे डेटा को पूरी तरह से अलग करना पड़ा, जो एक अद्भुत बात है। उदाहरण के लिए मैं आसानी से एक मोबाइल इंटरफ़ेस लिख सकता हूं, क्योंकि सबकुछ अलग हो गया है। अब तक आईडी कहती है कि एक सीखने की अवस्था है, लेकिन यदि आप इस विधि का उपयोग करते हैं तो मूल रूप से भविष्य में आपके आवेदन का सबूत है। –

संबंधित मुद्दे