क्या XSLT का उपयोग करने, सीखने या अनुशंसा करने के लिए कोई अच्छे कारण हैं? [बन्द है]


28

मैं पिछले 8 सालों से डेवलपर हूं। XML को HTML में बदलने के लिए हमने मुख्य रूप से XSLT का इस्तेमाल किया। हमने इसे XML से XML परिवर्तन के लिए भी उपयोग किया।

लेकिन अब हमारे पास हर चीज के लिए प्रतिस्थापन है। HTML को ASP.Net जैसी प्रोग्रामिंग भाषाओं के माध्यम से आराम से बनाया जा सकता है। XML को किसी भी मानक हाईलेवल भाषाओं में पढ़ा और प्रबंधित किया जा सकता है। चूंकि XSLT में प्रोग्रामिंग थोड़ा जटिल है, कोई भी नवीनतम प्रोग्रामिंग भाषाओं पर काम करना पसंद करेगा।

अब मेरा सवाल है: क्या XSLT भविष्य में एक महत्वपूर्ण विकल्प होगा, पहले से ही विकसित XSLT को बनाए रखने के तथ्य पर विचार नहीं कर रहा है? क्या मैं XSLT का अध्ययन करने के लिए नए प्रोग्रामर की सिफारिश कर सकता हूं?



12
मेरे लिए, XSLT एक प्रोग्रामिंग भाषा होने से इनकार करने में एक भयानक गुप्त प्रोग्रामिंग भाषा है। यह शुद्ध कार्यात्मक प्रोग्रामिंग भाषाओं से संबंधित है, लेकिन बहुत कम पठनीय, बहुत कम बनाए रखने योग्य, बहुत कम व्यावहारिक है। क्योंकि यह इनकार में एक प्रोग्रामिंग भाषा है, उदाहरण के लिए USERS जैसे DocBook (XSLT भाषा में लिखा गया सॉफ़्टवेयर का एक जटिल टुकड़ा) <expletive हटाए गए "कार्य को बनाने के लिए विभिन्न दुभाषियों, चेकर्स, पुस्तकालयों आदि को एकीकृत करने की समस्या है।
स्टीव

8
क्या आपका मतलब नहीं है <expletive deleted="true" />?
एमएसलटर्स

6
पी:> गतिशील एक्सएमएल - - -> गतिशील XSLT> गतिशील HTML + जावास्क्रिप्ट @ Steve314 मैं looove XSLT, आप गतिशील एसक्यूएल की मज़ेदार बातों से कर सकते हैं
Darknight

5
@MSalters - आपने एक्सएमएल घोषणा, रूट तत्व, नेमस्पेस, डीटीडी, या तो एक्सएमएल स्कीमा स्कीमा या रिलेक्स एनजी स्कीमा (या दोनों) को याद किया है, एक्सएमपीपैथ अभिव्यक्ति बताते हुए कि जहां एक्सप्लेक्टिव को हटा दिया गया था, .. ।
Steve314

जवाबों:


29

कुछ महत्वपूर्ण मामले हैं जहां एक्सएसएलटी एक अच्छा विकल्प हो सकता है:

  • ETL ( एक्सट्रैक्ट, ट्रांसफॉर्म, लोड ) सॉफ्टवेयर कुछ मामलों में XSLT का उपयोग कर सकते हैं। उदाहरण के लिए, यह एक अच्छा विकल्प हो सकता है जब डेटा और डेटा दोनों को लोड करने के लिए एक्सएमएल प्रारूप में हो, और जहां एप्लिकेशन को फिर से खोलने की आवश्यकता के बिना ट्रांसफ़ॉर्म बदला जा सकता है।

  • एक्सएमएल में डेटा को स्टोर करने वाले कुछ एप्लिकेशन इस डेटा को मानव-पठनीय प्रारूप में प्रस्तुत करने के लिए XSLT का उपयोग करते हैं। उदाहरण के लिए, विंडोज लाइव मैसेंजर संदेशों के ट्रेस को एक्सएमएल के रूप में संग्रहीत करता है, लेकिन जब आप इतिहास को डब्ल्यूएलएम में खोलते हैं, तो यह आपको एक सुंदर तालिका दिखाता है जो वास्तव में एक्सएलएसटी के माध्यम से निर्मित HTML है।

  • कुछ डेवलपर-उन्मुख या डेटा-उन्मुख वेबसाइटें XML तक पहुंच देना चाह सकती हैं, यदि इरादा वेबसाइट के पृष्ठों का उपयोग प्रोग्रामिक रूप से करना है। यह HTML पार्सर का उपयोग करने की तुलना में किसी भी तरह से अच्छा है, खासकर जब से किसी भी समय HTML कोड को बदला जा सकता है।

  • XSLT, जब वेबसाइटों में उपयोग किया जाता है, तो HTML और कोड-पीछे के बीच सख्त अलगाव की अनुमति देता है, जो कोड-पीछे के लिए एक डेवलपर और HTML / CSS सामान के लिए एक अन्य डेवलपर को किराए पर लेने में सक्षम बनाता है। एक अन्य प्रश्न के उत्तर में बिंदु 1 देखें ।

क्या भविष्य में XSLT एक महत्वपूर्ण विकल्प होगा? खैर, यह आज एक महत्वपूर्ण विकल्प नहीं है, और मुझे संदेह है कि XSLT का उपयोग समय के साथ बढ़ेगा। मैं उस कारण को नजरअंदाज करता हूं, लेकिन कई डेवलपर्स एक्सएमएल को पसंद नहीं करते हैं और एक्सएसएलटी से नफरत करते हैं।

क्या आप XSLT का अध्ययन करने के लिए नए प्रोग्रामर की सिफारिश कर सकते हैं? ज़रूर! न केवल XSLT का उपयोग कुछ परिस्थितियों में किया जा सकता है जब अन्य दृष्टिकोण अधिक कठिन होंगे, बल्कि XSLT के पास एक बहुत ही विशिष्ट दृष्टिकोण है जो अन्य भाषाओं में नहीं है।


Mean इसका मतलब है कि XML वास्तव में मानव-पठनीय नहीं है: यदि आप किसी ऐसे व्यक्ति से पूछते हैं जो XML पढ़ने के लिए आईटी में काम नहीं करता है, तो वह भयभीत होगा।
Are मुझे पता है कि वेब सेवाएँ हैं। लेकिन कभी-कभी यह हर पृष्ठ पर, एक गतिशील वस्तु का निर्माण करने के लिए, फिर एक्सएमएल में इसे क्रमबद्ध करने के लिए बस अधिक आसान और अधिक सरल होता है, या तो इसे एक्सएसएलटी के माध्यम से एचटीएमएल में बदल दें या बॉट को सीधे एक्सएमएल का उपयोग करने दें।


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


12

XSLT बहुत अधिक मृत है क्योंकि केवल कुछ उत्साही अभी भी इसका उपयोग करते हैं। हालाँकि, इसका कोई वास्तविक विकल्प नहीं है। यदि आप केवल एक ही उपयोग के मामले पर ध्यान केंद्रित करते हैं, उदाहरण के लिए जैसे कि अर्थ दस्तावेजों से HTML पृष्ठों का प्रतिपादन, तो आपको बेहतर उपकरण मिलते हैं। यदि आप कोड पीढ़ी के टेम्पलेट इंजनों की तलाश करते हैं, तो फिर से बेहतर उपकरण हैं। दस्तावेज़ परिवर्तन के लिए भी ऐसा ही है।

लेकिन अगर आप एक ऐसे उपकरण की तलाश करते हैं जो इन सभी उपयोग के मामलों का सभी प्लेटफार्मों पर बहुत अच्छी तरह से समर्थन करता है, तो विकल्प बहुत सीमित हो जाते हैं। यदि आपके पास पहले से ही XML दस्तावेज़ है और उसे अपने टूल का उपयोग करने में सक्षम होने के लिए इसे किसी चीज़ में बदलना होगा, तो आप शायद XSLT (या XQuery) के साथ अपने डेटा को संसाधित करना बेहतर होगा।

किसी भी तरह से, आप कुछ दिनों में, शायद सप्ताह में XSLT सीख सकते हैं। यह आपको पहले हाथ का अनुभव कराने के लिए चोट नहीं पहुँचाएगा। बस इसे एक शॉट दें। यह कम से कम इस तरह के पैटर्न (नियम आधारित परिवर्तन) को आपके सिर में बाद में उपयोग करने के लिए संग्रहीत करने के प्रयास के लायक है। यह अकेले XSLT सीखने को सही ठहराता है।


8

हम्म मुझे आश्चर्य है कि अगर उच्च-स्तरीय एपीआई जो कोड से HTML बनाते हैं, तो "हुड के नीचे" किसी भी XSLT का उपयोग करें ...

XSLT का बड़े पैमाने पर उपयोग किया जाता है जहां मैं XML को एक स्रोत प्रारूप से दूसरों की विविधता में बदलने का काम करता हूं। इसका उपयोग XML को गैर-XML आउटपुट में बदलने के लिए भी किया जा सकता है। मैंने इसमें से बहुत कुछ नहीं किया है, लेकिन मैंने पीडीएफ और पोस्टस्क्रिप्ट को दूसरों के बीच लक्षित करने के लिए इसके बारे में सुना है।


3
वह एक्सएसएल / एफओ है, जो एक्सएसएल / टी के सियामी जुड़वां है। वे जन्म के समय अलग हो गए थे।

8

हाँ।

चलो एक अच्छा उदाहरण लेते हैं: निरंतर एकीकरण में इकाई परीक्षण रिपोर्ट। अधिकांश यूनिट परीक्षण और कोड कवरेज कार्यक्रम केवल अप्राप्य XML के टन का उत्पादन करते हैं। लेकिन कुछ सरल XSLTs के साथ, आप एक ही डेटा से एक दर्जन उपयोगी रिपोर्ट बना सकते हैं। और अन्य लोग उन रिपोर्टों का पुन: उपयोग कर सकते हैं।

अब आप प्लगइन्स के लिए CI टूल का उपयोग जिस भी भाषा में कर सकते हैं, उसे लिख सकते हैं, लेकिन यदि आप उस भाषा को नहीं जानते (जैसे, आप एक .NET डेवलपर, जेनकींस का उपयोग कर रहे हैं) तो इसे सीखने की कोई आवश्यकता नहीं है। बस एक प्लगइन का उपयोग करें जो पहले से ही एक्सएमएलटी को एक्सएमएल फ़ाइल में लागू करता है और कुछ उपयोगी एक्सएसएलटी लिखता है।


6

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

कई कार्यों के लिए मैं देख रहा हूं कि XSLT का उपयोग किया जा रहा है (और जिन कार्यों को मैं स्वयं के लिए उपयोग करता हूं), नौकरी करने के लिए जावा या एएसपी कोड लिखना आपके नियोक्ता के बजट की भयावह बर्बादी होगी। लेकिन शायद नहीं, अगर आप जावा लिखने में अच्छे हैं और XSLT लिखने में बुरे हैं।


6

XSLT मानव-पठनीय नहीं है। मेटा-इंफॉर्मेशन (टैग) वास्तविक जानकारी (टेक्स्ट, xpath रिक्वेस्ट) पर बहुत अधिक जगह लेती है। एक अच्छा कोड एक दस्तावेज की तरह दिखना चाहिए और यह XSLT का मामला नहीं है। यह मैपिंग टूल के लिए एक अच्छा दृढ़ता प्रारूप है।

एक अच्छी परिवर्तन भाषा को रूपांतरण परिणाम का पूर्वावलोकन करने और एक साथ परिवर्तन प्रवाह (IF, ELSE, FOR, WHILE) देखने की अनुमति देनी चाहिए। यह स्थिरता के लिए महत्वपूर्ण है। इस पहलू के संबंध में वेग या GenearateXY XSLT से बेहतर हैं। GenerateXY थोड़ा बेहतर है क्योंकि यह पूर्वावलोकन और प्रवाह को अलग करता है जबकि वेग के साथ आपको दुर्भाग्य से पठनीय प्रवाह प्रदान करने के लिए पूर्वावलोकन इंडेंटेशन को तोड़ना होगा।

XSLT का एकमात्र अच्छा बिंदु यह है कि यह "xsl: टेम्पलेट" तत्वों का उपयोग करके और यहां तक ​​कि दुर्व्यवहार करके प्रतिरूपकता के बारे में परवाह करता है। इसके साथ समस्या यह है कि यह डेटा प्रोसेसिंग लैंग्वेज (Java, C, ...) के लिए अच्छा है, लेकिन प्रेजेंटेशन लैंग्वेज के लिए बहुत गौण है।


4

वास्तव में

सीखने और उपयोग करने के लिए थोड़ा बोझिल होने के बाद से शायद कुछ दिन एक दिन XSLT को सुपरसेड करेंगे। हालाँकि, वर्तमान में कोई टेम्प्लेट / ट्रांसफ़ॉर्मेशन लैंग्वेज उपलब्ध नहीं है, जो इसे लागू करने में लचीली और "शुद्ध" हो।

XSL-T का उपयोग कुछ अलग उद्देश्यों के लिए किया जा सकता है:

  • आप टेम्पलेट का उपयोग करके डेटा से HTML प्रारूप में "सामग्री" बना सकते हैं
  • आप एक xml प्रारूप से दूसरे में परिवर्तित कर सकते हैं
  • आप xml को किसी अन्य प्रारूप में हेरफेर कर सकते हैं, शायद एक उपसमूह दिखाते हैं

मूल रूप से ये सभी एक ही चीज़ हैं, लेकिन एक XML डेटा फ़ाइल का दूसरे में बदलना। अब आइए XSLT के बजाय कुछ अलग-अलग टूल्स देखें।

यदि हम एक एक्सएचटीएमएल पेज की सामग्री में हेरफेर करना चाहते थे जो हम regexp का उपयोग कर सकते थे, लेकिन regexp संरचनात्मक सामान के साथ गड़बड़ है। यह तार में हेरफेर करने के लिए चमकता है, लेकिन मैं इसका उपयोग किसी चीज़ के लिए सामग्री की तालिका बनाने या इसे एक अलग लेआउट में प्रस्तुत करने के लिए नहीं करूंगा।

अगला ASP.Net है। हम अपने लेआउट को अपने एस्प पेज में डालते हैं और गतिशील भागों के लिए कुछ कोड डालते हैं। एक अन्य विकल्प यह है कि लेआउट भाग को अलग करना है और डेटाबेस कहना और सी # का उपयोग करके हमारा वांछित आउटपुट बनाने से सब कुछ उत्पन्न करना है।

पहले दृष्टिकोण के साथ समस्या यह है कि यह वर्णनात्मक डेटा से वास्तविक सामग्री तक जाने के लिए अनाड़ी है। यदि आपके पास कुछ डेटा फ़ाइल हैं जिनमें फ़ोन नंबर हैं, जिन्हें आप प्रत्येक अक्षर के लिए हेडर के साथ प्रस्तुत करना चाहते हैं, तो प्रविष्टियों की कुल एनआर दिखाते हैं आदि आपको लेआउट फ़ाइल में कुछ लेआउट और आपके द्वारा उत्पन्न कोड में कुछ होना चाहिए। । एक अन्य विकल्प वेब-ग्रिड के कुछ रूप का उपयोग करना है जो मुझे लगता है कि वे बहुत गंदे हैं और अचानक आपको यह सीखना होगा कि जब आप करना चाहते थे तो फ्रिगिंग ग्रिड कैसे काम करता है, कुछ विशिष्ट HTML डेटा को आउटपुट करना था।

पूरी तरह से गतिशील हो जाना निश्चित रूप से एक विकल्प है, लेकिन साथ ही साथ अनाड़ी भी है। यहां तक ​​कि सबसे अच्छे मामले में जहां आप LINQ जैसी किसी चीज का उपयोग कर रहे हैं, आपको प्रोग्रामिंग कोड को आउटपुट के साथ बल्कि बदसूरत तरीके से बदलना होगा। इसके अलावा असंरचित पुनरावर्ती दस्तावेज़-शैली सामग्री को ठीक से संभालने का कोई अच्छा तरीका नहीं है जो आमतौर पर HTML है।

XSLT के साथ आप बस एक निश्चित टैग के लिए एक टेम्पलेट बना सकते हैं, या तो बस के रूप में है या यह माता-पिता के संदर्भ में है, इसलिए इसे अलग तरीके से प्रस्तुत किया जाता है अगर उदाहरण के लिए यह किसी और चीज़ से माता-पिता है।

एक लंबे समय तक चलने वाला उत्तर लेकिन हां, मुझे लगता है कि एक वर्णनात्मक टेम्पलेट भाषा में बहुत अच्छा मूल्य है और XSLT सबसे अच्छा और सबसे मानकीकृत है जो हमें अब तक मिला है।


4

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

हां, किसी भाषा के संदर्भ में यह अजीब है, लेकिन यह सिर्फ प्रवेश के लिए एक बाधा है। यदि आप XSLT को जानते हैं, तो यह अक्सर विकल्पों की तुलना में आसान होता है - लेकिन अगर आपके पास बड़े दस्तावेज़ (या एक ही बार में संसाधित किए जा रहे बहुत सारे दस्तावेज़) होंगे, तो XSLT का मेमोरी प्रभाव अक्सर अन्य, अधिक समय लेने वाले विकल्पों को मजबूर करता है।


3

तथ्य की बात के रूप में, मुझे लगता है कि डेटा प्रस्तुत करने के लिए अन्य भाषा की तुलना में XSL का उपयोग करना अधिक कुशल है। उदाहरण के लिए आप XSL-FO का उपयोग कर एक XML को PDF के रूप में प्रस्तुत कर सकते हैं और आप प्रत्येक इंच को नियंत्रित कर सकते हैं, लेकिन यदि आप उदाहरण के लिए RDLC (.NET) के साथ काम करते हैं, तो आप देखेंगे कि वास्तव में जो आप चाहते हैं उसे प्रस्तुत करना बहुत मुश्किल है।

यहां तक ​​कि विकास / सुधार काफी आसान है, क्योंकि XSL में प्रत्येक तत्व का अपना टेम्पलेट है। मुझे लगता है कि XSL का विस्तार XSLT और XSL-FO की तरह अधिक महत्वपूर्ण है। इसलिए इस भाषा का अभी भी भविष्य में उपयोग किया जाएगा (लेकिन मुझे वास्तव में उम्मीद है कि यह अधिक स्थिर और कम जटिल होगी)।


2

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.