के साथ अपने माता-पिता के भीतर किसी तत्व की स्थिति पाएं XSLT कोड (जो मैं नहीं करने जा रहा हूं) को फिर से लिखने के अलावा, क्या उसके माता-पिता के भीतर किसी तत्व की स्थिति को ढूंढने का कोई तरीका है, जब संदर्भ मनमाने ढंग से किसी और चीज पर सेट किया जाता है? यहाँ एक उदाहरण है:एक्सएसएलटी/XPath
<!-- Here are my records-->
<xsl:for-each select="/path/to/record">
<xsl:variable name="record" select="."/>
<!-- At this point, I could use position() -->
<!-- Set the context to the current record -->
<xsl:for-each select="$record">
<!-- At this point, position() is meaningless because it's always 1 -->
<xsl:call-template name="SomeTemplate"/>
</xsl:for-each>
</xsl:for-each>
<!-- This template expects the current context being set to a record -->
<xsl:template name="SomeTemplate">
<!-- it does stuff with the record's fields -->
<xsl:value-of select="SomeRecordField"/>
<!-- How to access the record's position in /path/to or in any other path? -->
</xsl:template>
नोट: इस सरल उदाहरण है। मुझे SomeTemplate
आदि के नए पैरामीटर को पास करने जैसे स्पष्ट समाधानों को लागू करने से मुझे कई बाधाएं हैं। मैं वास्तव में केवल SomeTemplate
के आंतरिक को संशोधित कर सकता हूं।
नोट: मैं Xalan 2.7.1 EXSLT के साथ उपयोग कर रहा हूं। तो उन चालें उपलब्ध हैं
कोई विचार?
आप आदमी हैं! मैंने आपके सुझाव को '1 + गिनती (पूर्ववर्ती-भाई :: *) 'में अनुकूलित किया और यह एक आकर्षण की तरह काम किया! –
आपके अपडेट के बारे में: असली दुनिया के उदाहरण में, रिकॉर्ड हमेशा एक समान होते हैं (हालांकि हमेशा 'रिकॉर्ड' नहीं कहा जाता है) क्योंकि वे एक टेबल मॉडल करते हैं। तो दो "असंगत" XPath नोड-सेट का कोई यूनियन ऑपरेटर नहीं है।परिवर्तनीय समाधान वास्तविक दुनिया कोड –
की जटिलता के कारण काम नहीं करेगा 'स्थिति() 'के बारे में अतिरिक्त संकेतों के लिए धन्यवाद। चूंकि मैं हमेशा वर्दी तत्वों पर लूपिंग कर रहा हूं, मेरे मामले में, लूपिंग स्थिति उसके माता-पिता के भीतर तत्व सूचकांक के साथ मेल खाती है। –