मुझे पता है कि मुझे यहां कुछ याद आ रहा है। नीचे एक्सएसएलटी परिवर्तन में, वास्तविक परिणाम वांछित परिणाम से मेल नहीं खाता है।मैं प्रत्येक चयनित नोड में प्रत्येक के लिए टेम्पलेट्स कैसे लागू करूं?
for-each
के अंदर, मैं प्रत्येक चयनित track
तत्व में match="track"
टेम्पलेट लागू करना चाहता हूं। यदि मैं एक्सएसएलटी को सही ढंग से समझ गया हूं, तो वर्तमान सेटअप के साथ प्रत्येक चयनित track
तत्व के केवल बाल नोड्स टेम्पलेट्स के साथ मेल खाते हैं, न कि track
तत्व स्वयं।
मैं track
तत्वों को वांछित के रूप में टेम्पलेट के माध्यम से कैसे बना सकता हूं? क्या मुझे अपने पूरे दृष्टिकोण पर पुनर्विचार करने की ज़रूरत है?
नोट: परिवर्तन PHP का उपयोग करके निष्पादित किया जाता है। ब्रेवटी के लिए एक्सएमएल घोषणाएं छोड़ी गई हैं।
एक्सएमएल दस्तावेज़:
<album>
<title>Grave Dancers Union</title>
<track id="shove">Somebody To Shove</track>
<track id="gold">Black Gold</track>
<track id="train">Runaway Train</track>
<producer>Michael Beinhorn</producer>
</album>
XSL स्टाइल शीट:
<xsl:stylesheet version="1.1" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/album">
<ol>
<xsl:for-each select="track">
<li><xsl:apply-templates/></li>
</xsl:for-each>
</ol>
</xsl:template>
<xsl:template match="track">
<a href="{@id}"><xsl:apply-templates/></a>
</xsl:template>
</xsl:stylesheet>
परिणाम:
<ol>
<li>Somebody To Shove</li>
<li>Black Gold</li>
<li>Runaway Train</li>
</ol>
वांछित परिणाम:
<ol>
<li><a href="shove">Somebody To Shove</a></li>
<li><a href="gold">Black Gold</a></li>
<li><a href="train">Runaway Train</a></li>
</ol>
सॉर्टिंग पर अच्छा पकड़। मुझे लगता है कि सॉर्टिंग के कारण यह सबसे अच्छा समाधान है। – ndim
मैं शपथ ले सकता था कि मैंने पहले ही यह कोशिश की है, लेकिन मुझे नहीं लगता। यह वही है जो मैं खोज रहा था, यद्यपि! – Jakob