xslt - XSL template processes all descendants, not just children -


निम्नलिखित XML और XSL परिवर्तन को देखते हुए, मुझे दो & lt; node / & gt; ग्रंथों पहले और दूसरे युक्त आउटपुट में तत्व यह अपेक्षा निम्न तर्क पर आधारित है:

  1. मैच = "/ रूट" के साथ टेम्पलेट पहले क्रियान्वित करेगा। <कोड> & lt; XSL:। लागू-टेम्पलेट्स / & gt; इस टेम्पलेट में शिक्षा सबसे विशिष्ट टेम्पलेट्स लागू होगी
  2. ये <कोड> & lt; foo / & gt; बच्चे के नोड्स को दूसरे टेम्पलेट द्वारा संसाधित किया जाएगा। इस टेम्पलेट भी <कोड> & lt होता है; XSL:। लागू-टेम्पलेट्स / & gt; अनुदेश, इन नोड्स के बच्चे नोड्स के लिए खाका लागू होता है
  3. <कोड> & lt; foo / & Gt; नोड्स में केवल & lt; बार / & gt; नोड होते हैं, जो किसी टेम्पलेट से मेल नहीं खाते हैं इसका अर्थ है कि आगे नोड्स पर कार्रवाई नहीं की जाएगी।

XML

  & lt;? Xml संस्करण = "1.0" एन्कोडिंग = "utf-8" & gt; & Lt;? Xml-stylesheet प्रकार = "text / xsl" href = "style.xsl"? & Gt; & LT; जड़ & gt; & Lt; foo नाम = "पहले" & gt; & LT; बार & gt; & Lt; foo नाम = "नेस्टेड" / & gt; & Lt; / बार & gt; & Lt; / foo & gt; & Lt; foo नाम = "दूसरा" & gt; & LT; बार & gt; & LT; baz & gt; & Lt; foo नाम = "नेस्टेड" / & gt; & Lt; / baz & gt; & Lt; / बार & gt; & Lt; / foo & gt; & Lt; / जड़ & gt;  

एक्सएसएल

  & lt;? Xml संस्करण = "1.0" एन्कोडिंग = "यूटीएफ -8"? & Gt; & Lt; xsl: स्टाइलशीट xmlns: xsl = "http://www.w3.org/1999/XSL/Transform" संस्करण = "1.0" & gt; & Lt; xsl: टेम्पलेट मैच = "/ रूट" & gt; & LT; उत्पादन & gt; & LT; XSL: लागू-टेम्पलेट्स / & gt; & Lt; / उत्पादन & gt; & Lt; / XSL: टेम्पलेट & gt; & Lt; xsl: टेम्पलेट मैच = "फू" & gt; & LT; नोड & gt; & Lt; xsl: मान का चयन करें = "@ नाम" / & gt; & Lt; / नोड & gt; & LT; XSL: लागू-टेम्पलेट्स / & gt; & Lt; / XSL: टेम्पलेट & gt; & Lt; / XSL: स्टाइलशीट & gt;  

हालांकि, ऊपर के रूपांतरण के वास्तविक परिणाम में चार और lt; node / & gt; तत्व होते हैं, जिनमें से दो में नेस्टेड । इसका मतलब यह है कि दूसरा टेम्पलेट भी सबसे आंतरिक & lt; foo / & gt; नोड्स पर लागू होता है लेकिन उपरोक्त चरण 3 के अनुसार, प्रसंस्करण इंजन इन नोड्स तक कभी नहीं पहुंचाएगा।

मैंने कई वेब ब्राउज़र में परिवर्तन का परीक्षण किया है और नोटपैड ++ एक्सएमएल उपकरण प्लग-इन का उपयोग किया है, और उन सभी को " गलत "परिणाम तो मुझे लगता है कि मैं यहाँ गलत हूं, लेकिन मेरी तर्क में क्या गलत है < P> लेकिन बार नोड्स एक टेम्पलेट से मेल खाती हैं, वे "*" टेम्पलेट में निर्मित होते हैं, जो टेम्प्लेट का प्रचार करती है, इनर बार / नोड टेम्प्लेट को कॉल करने


Comments