2009-01-12 10 views
25

मेरे पास ब्राउज़र में एक्सएमएल फाइल देखने के लिए एक्सएसएलटी है। एक्सएसएलटी बेवकूफ लिखा गया है और वर्तमान में निष्पादित करने में काफी समय लगता है (कई मिनट)।मैं एक एक्सएसएलटी प्रोफाइल और अनुकूलित कैसे करूं?

मेरी एक्सएमएल फ़ाइल एक ही दस्तावेज़ के लिए मामूली आकार (~ 1 एमआईबी), और अन्य एक्सएसएलटी का है जो विभिन्न प्रसंस्करण को अधिक तेज़ी से निष्पादित करती है। तो मुझे पता है कि यह एक्सएमएल का आकार नहीं है जो समस्या है, यह मेरा एक्सएसएलटी है।

मैं अपने एक्सएसएलटी को प्रोफाइलिंग और अनुकूलित करने के बारे में कैसे जा सकता हूं?

(यह एक बुरा विचार ब्राउज़र में जटिल XSLTs कर रहा है? मैं बजाय XSLT आवेदन पक्ष लागू करना चाहिए?)

+0

यदि आप एक्सएसएलटी कोड और एक्सएमएल दस्तावेज प्रदान करते हैं जिस पर आप समस्या का सामना करते हैं, तो मैं और अन्य लोग मदद करने की कोशिश कर सकते हैं। –

+0

नोट: एक्सएसएलटी प्रोफाइलिंग और (बेहतर) डिबगिंग विजुअल स्टूडियो 2010 में जोड़ा गया है।बेशक, यह अभी भी एक्सएसएलटी 1.0 है। – Abel

उत्तर

26

जो एक्सएसएलटी इंजन आप उपयोग कर रहे हैं? यदि आप .NET इंजन और विजुअल स्टूडियो का उपयोग कर रहे हैं तो आप विजुअल स्टूडियो में एकीकृत XSLT profiler का उपयोग कर सकते हैं जो कि बहुत उपयोगी है।

अन्य उत्कृष्ट प्रोफाइलिंग टूल अल्टोवा के XML Spy और Oxygen हैं।

यदि आप अपना एक्सएसएलटी पोस्ट करेंगे तो आपको यह बताना आसान होगा कि संभावित बाधाएं कहां हैं। आम तौर पर एक्सपीएथ एक्सप्रेशन जैसे '//', पहले :: * और निम्नलिखित :: * के साथ सावधान रहें। कुछ और नियमों और सर्वोत्तम प्रथाओं: "//item" की

  1. बचें बार-बार इस्तेमाल।
  2. एक ही नोड-सेट का मूल्यांकन एक से अधिक बार न करें; इसे एक चर में सहेजें।
  3. <xsl:number> से बचें यदि आप कर सकते हैं। उदाहरण के लिए, स्थिति() का उपयोग करके।
  4. उदाहरण के लिए <xsl:key> का उपयोग करें, उदाहरण के लिए समूह की समस्याओं को हल करने के लिए।
  5. टेम्पलेट नियमों में जटिल पैटर्न से बचें। इसके बजाय, नियम के भीतर का उपयोग करें।
  6. preceding[-sibling] या following[-sibling] अक्ष का उपयोग करते समय सावधान रहें। यह अक्सर एन-स्क्वायर प्रदर्शन के साथ एक एल्गोरिदम इंगित करता है।
  7. एक ही नोड-सेट को एक से अधिक बार सॉर्ट न करें। यदि आवश्यक हो, तो को पेड़ के टुकड़े के रूप में सहेजें और पर node-set() एक्सटेंशन फ़ंक्शन का उपयोग करके इसे सहेजें।
  8. एक साधारण #PCDATA तत्व के टेक्स्ट मान को आउटपुट करने के लिए, <xsl:value-of> <xsl:apply-templates> पर प्राथमिकता में उपयोग करें।

इन नियमों को आम तौर पर बहुत ही कुशल XSLT का परिणाम देगा और आप संभवतः बिल्कुल एक प्रोफाइलर उपयोग करने के लिए की जरूरत नहीं होगी के बाद (http://www.dpawson.co.uk/xsl/sect4/N9883.html#d15756e150 से)

ब्राउज़र में एक्सएसएलटी के बारे में आपके प्रश्न के बारे में: मैं इसकी अनुशंसा नहीं करता क्योंकि पहले आप प्लेटफ़ॉर्म स्वतंत्र नहीं होते हैं (हर ब्राउज़र इसका समर्थन नहीं कर सकता है या कुछ ब्राउज़र केवल खराब प्रदर्शन करने वाले इंजन के साथ इसका समर्थन कर सकते हैं) और दूसरा आप कर सकते हैं इस्तेमाल इंजन को नियंत्रित नहीं करते हैं।

+0

मैं ब्राउज़र में चल रहा हूं, इसलिए मेरा एक्सएसएलटी इंजन फ़ायरफ़ॉक्स, आईई और सफारी का उपयोग करता है। मैं समझता हूं कि प्रत्येक इंजन एक ही एक्सएसएलटी के साथ अलग-अलग व्यवहार करेगा, इसलिए एक विशेष इंजन प्रोफाइलिंग सभी को प्रतिबिंबित नहीं कर सकता है 3. – pauldoo

+0

समस्याग्रस्त एक्सएसएलटी पोस्ट करें और मैं आपको समस्याग्रस्त रेखाएं ढूंढने में मदद कर सकता हूं। –

+0

जैसा कि डिवो कहते हैं: "समस्याग्रस्त एक्सएसएलटी पोस्ट करें और मैं आपको समस्याग्रस्त रेखाएं ढूंढने में मदद कर सकता हूं" :) –

2

वाणिज्यिक Oxygen XML संपादक रूपरेखा और डिबगिंग XSLT फ़ाइलों के लिए एक सुविधा है। यह भी एक अच्छा एक्सएमएल संपादक है।

1

मुझे विंडोज आधारित मशीनों के लिए Altova's XMLSpy का उपयोग करना पसंद है। इसमें एक प्रोफाइलर भी अंतर्निहित है। आप check out a video on using the editor कर सकते हैं। (प्रोफाइलर के बारे में और जानने के लिए 5:45 पर स्कैन करें)। यह एक वाणिज्यिक उत्पाद है ... एक समय-परीक्षण अवधि के साथ :)

18

यदि आप XSLT कोड और XML दस्तावेज़ प्रदान करते हैं जिस पर आप समस्या का सामना करते हैं, तो मैं और अन्य लोग की सहायता करने का प्रयास कर सकते हैं। कैसे कुशलतापूर्वक XSLT का उपयोग करने के लिए

आठ टिप्स::

  1. स्रोत दस्तावेजों छोटे रखें

    यहाँ कुछ XSLT usage and performance tipsMichael Kay से हैं। यदि आवश्यक हो तो दस्तावेज़ को पहले विभाजित करें।

  2. एक्सएसएलटी प्रोसेसर (और जावा वीएम) को
  3. के बीच मेमोरी में लोड किया गया रखें यदि आप बार-बार उसी स्टाइलशीट का उपयोग करते हैं, तो इसे पहले संकलित करें।
  4. यदि आप बार-बार उसी स्रोत दस्तावेज़ का उपयोग करते हैं, तो इसे स्मृति में रखें।
  5. यदि आप बार-बार वही परिवर्तन करते हैं, तो नहीं। इसके बजाय परिणाम स्टोर करें।
  6. आउटपुट दस्तावेज़ को छोटा रखें। उदाहरण के लिए, यदि आप HTML उत्पन्न कर रहे हैं, तो सीएसएस का उपयोग करें।
  7. कभी भी एक ही स्रोत दस्तावेज़ को एक से अधिक बार मान्य न करें।
  8. कई चरणों में जटिल परिवर्तनों को विभाजित करें। कैसे कुशल एक्स SLT लिखने के लिए

आठ युक्तियाँ: "//item" की

  1. बचें बार-बार इस्तेमाल।
  2. एक ही नोड-सेट का मूल्यांकन एक से अधिक बार न करें; इसे एक चर में सहेजें।
  3. <xsl:number> से बचें यदि आप कर सकते हैं। उदाहरण के लिए, position() का उपयोग करके।
  4. उदाहरण के लिए <xsl:key> का उपयोग करें, उदाहरण के लिए समूह की समस्याओं को हल करने के लिए।
  5. टेम्पलेट नियमों में जटिल पैटर्न से बचें। इसके बजाय, नियम के भीतर <xsl:choose> का उपयोग करें।
  6. preceding[-sibling] या following[-sibling] अक्ष का उपयोग करते समय सावधान रहें। यह अक्सर n -क्वायर प्रदर्शन के साथ एक एल्गोरिदम इंगित करता है।
  7. एक ही नोड-सेट को एक से अधिक बार सॉर्ट न करें। यदि आवश्यक हो, तो इसे परिणाम पेड़ खंड के रूप में सहेजें और इसे node-set() एक्सटेंशन फ़ंक्शन का उपयोग करके एक्सेस करें।
  8. एक साधारण # पीसीडीएटीए तत्व के पाठ मूल्य को आउटपुट करने के लिए, <xsl:value-of> प्राथमिकता <xsl:apply-templates> पर प्राथमिकता में उपयोग करें।
+0

+1। –

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