2008-08-18 22 views
8

मुझे किसी तत्व के भीतर किसी वर्ण की अंतिम घटना को खोजने में सक्षम होना चाहिए।रिवर्स एक स्ट्रिंग में खोजें

उदाहरण के लिए:

<mediaurl>http://www.blah.com/path/to/file/media.jpg</mediaurl> 

अगर मैं तो substring-before(mediaurl, '.') और substring-after(mediaurl, '.') का उपयोग कर के माध्यम से यह पता लगाने का प्रयास कहीं भी होगी, निश्चित रूप से, पहले डॉट पर मैच।

मुझे फ़ाइल एक्सटेंशन कैसे प्राप्त होगा? अनिवार्य रूप से, मुझे इस तरह के पथ से फ़ाइल नाम और एक्सटेंशन प्राप्त करने की आवश्यकता है, लेकिन मैं XSLT का उपयोग करके इसे कैसे करना है, इस बारे में काफी स्टंप हूं।

उत्तर

14

निम्नलिखित एक टेम्पलेट है कि XSLT 1.0 में अपेक्षित उत्पादन का उत्पादन का एक उदाहरण है।

+0

आपका उत्तर एक्सटेंशन प्राप्त करने के लिए सही है। फ़ाइल नाम और एक्सटेंशन प्राप्त करने के लिए आप परीक्षण कर सकते हैं और "substring-after" "/"। इसके परिणामस्वरूप फ़ाइल नाम प्राप्त होगा। इसके साथ आप आसानी से विस्तार भी प्राप्त कर सकते हैं: substring-after (filenameWithExtension, '।')। – Patric

0

"/" के साथ टोकननाइज़ करने के बारे में और सरणी से अंतिम तत्व कैसे लें?

Example: tokenize("XPath is fun", "\s+") 
Result: ("XPath", "is", "fun") 

कुछ समय पहले एक एक्सएसएलटी फिडलर था ... अब खो गया स्पर्श। लेकिन HTH

4

आप XSLT 2.0 का उपयोग कर रहे हैं, यह आसान है:

<xsl:variable name="extension" select="tokenize($filename, '\.')[last()]"/> 

आप नहीं हैं, तो यह थोड़ा कठिन है। O'Reilly XSLT Cookbook से एक अच्छा उदाहरण है। "एक स्ट्रिंग टोकनिंग" के लिए खोजें।

मेरा मानना ​​है कि यदि आपके पास उपलब्ध है तो एक EXSLT फ़ंक्शन भी है।

<xsl:template name="getExtension"> 
<xsl:param name="filename"/> 

    <xsl:choose> 
    <xsl:when test="contains($filename, '.')"> 
    <xsl:call-template name="getExtension"> 
     <xsl:with-param name="filename" select="substring-after($filename, '.')"/> 
    </xsl:call-template> 
    </xsl:when> 
    <xsl:otherwise> 
     <xsl:value-of select="$filename"/> 
    </xsl:otherwise> 
    </xsl:choose> 
</xsl:template> 

<xsl:template match="/"> 
    <xsl:call-template name="getExtension"> 
     <xsl:with-param name="filename" select="'http://www.blah.com/path/to/file/media.jpg'"/> 
    </xsl:call-template> 
</xsl:template> 
0

संदर्भ के लिए, इस समस्या को आम तौर पर "स्ट्रिंग के बाद पिछले" XSLT में कहा जाता है:

+0

xslt 1.0 –

+0

में कोई फ़ंक्शन नहीं है *** *** XPath/XSLT के किसी भी *** संस्करण में कोई फ़ंक्शन नहीं है। ** यह उत्तर पूरी तरह से बेकार है और हटाया जाना चाहिए। ** – kjhughes

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