दिलचस्प पोस्ट
दो स्ट्रिंग लीटरल में शामिल करें क्या "घातक त्रुटि: अनपेक्षित रूप से एक वैकल्पिक मूल्य अनवरोधित करते समय शून्य पाया" मतलब है? स्लाइस असाइनमेंट के बीच क्या फर्क है जो पूरी सूची और सीधे असाइन करता है? तिथि सीमाओं के बीच तिथि उत्पन्न करें सीएसवी डेटा प्रसंस्करण करते समय, मैं डेटा की पहली पंक्ति को कैसे अनदेखा कर सकता हूं? CLR में 'जैसा' कीवर्ड का उपयोग करके बनाम बनाम क्यों System.gc () कॉल करने के लिए खराब अभ्यास है? वसंत MVC + + JSON = 406 स्वीकार्य नहीं ES6 / Typecript में तीर फ़ंक्शन के साथ _ (अंडरस्कोर) वैरिएबल का उपयोग करना $ ($) के बजाए $ का उपयोग करता है क्या एक प्रदर्शन वृद्धि प्रदान करता है? अजगर का उपयोग करते हुए HTML पृष्ठ स्रोत से छवि फ़ाइल डाउनलोड करें? शॉर्ट सर्किट मूल्यांकन और दुष्प्रभाव Servlet 3.0 API के लिए मेवेन निर्भरता? गलत स्ट्रिंग मान: '\ xF0 \ x9F \ x8E \ xB6 \ xF0 \ x9F …' MySQL आईफ़ोन: दैनिक स्थानीय सूचनाएं

XSLT / XPath में वर्तमान नोड बनाम संदर्भ नोड?

XSLT में, "वर्तमान नोड" और "संदर्भ नोड" के बीच क्या अंतर है? आप यहां इस्तेमाल किए गए दोनों पदों को पा सकते हैं: http://www.w3.org/TR/xslt

आप एक या दूसरे का उपयोग कब करेंगे? आप प्रत्येक को कैसे संदर्भित करते हैं?

वेब के समाधान से एकत्रित समाधान "XSLT / XPath में वर्तमान नोड बनाम संदर्भ नोड?"

वर्तमान नोड जो भी टेम्पलेट वर्तमान में चालू है। आम तौर पर यह संदर्भ नोड भी होता है, लेकिन संदर्भ नोड का घोंसले XPath अभिव्यक्ति (स्क्वायर कोष्ठ में भाग) के भीतर विशेष अर्थ होता है। वहां, यह वर्तमान में एक मैच के लिए जो भी नोड का परीक्षण किया जा रहा है, इसका संदर्भ देता है। इसलिए, संदर्भ नोड XPath अभिव्यक्ति के भीतर बदलता है, लेकिन वर्तमान नोड नहीं।

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

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

इन दोनों को भेद करने के कुछ मामलों में उपयोगी है। उदाहरण के लिए, मान लें कि आपके पास कुछ एक्सएमएल है:

 <a> <b> <c>foo<footnote fn="1"/></c> <d>bar</d> </b> <b> <c>baz</c> <d>aak<footnote fn="2"/></d> </b> <b> <c>eep</c> <d>blech<footnote fn="2"/></d> </b> <footnote-message fn="1">Batteries not included.</footnote> <footnote-message fn="2">Some assembly required.</footnote> </a> 

अब मान लीजिए कि आप इसे इस तरह लाटेक्स में कनवर्ट करना चाहते हैं:

 foo\footnote{Batteries not included.} bar baz aak\footnote{Some assembly required.} eep blech\footnotemark[2] 

चाल बताती है कि क्या एक फुटनोट पहले ही इस्तेमाल किया गया है या नहीं। यदि आप पहली बार फुटनोट का सामना करना पड़ा है, तो आप एक \footnote कमांड लिखना चाहते हैं; अन्यथा आप \footnotemark कमांड लिखना चाहते हैं आप इस तरह एक्सएसएल कोड का उपयोग कर सकते हैं:

 <xsl:choose> <xsl:when test="count(preceding::*[./@fn = current()/@fn]) = 0">\footnote{...}</xsl:when> <xsl:otherwise>\footnotemark[...]</xsl:otherwise> </xsl:choose> 

यहां हम संदर्भ-नोड fn विशेषता ( preceding::* नोड-सेट के परिणामों से) वर्तमान-नोड fn विशेषता से तुलना कर रहे हैं। (आपको वास्तव में नहीं कहना है। / ./@fn ; आप बस @fn कह @fn ।)

तो संक्षेप में, संदर्भ नोड आपको एक्सपैथ की व्याख्या के अंदर छोड़ देता है; मौजूदा नोड वर्तमान टेम्पलेट द्वारा संसाधित नोड पर वापस, विदग्ध के बाहर पहुंचता है।