문제
내가 필요할 수 있을 찾기 위해 마지막에 발생한 문자 내에서 요소입니다.
예를 들어:
<mediaurl>http://www.blah.com/path/to/file/media.jpg</mediaurl>
면 내가 그것을 찾으려고를 통해 사용 substring-before(mediaurl, '.')
고 substring-after(mediaurl, '.')
그것은 물론,일치에 첫 번째 dot.
어떻게 얻는 파일 확장자가?기본적으로,필요를 얻는 파일 이름 및 파일 확장자에서 같은 경로로 이지만,나는 꽤 바싹하는 방법을 사용하여 XSLT.
해결책
다음 예는 템플릿을 생산하는 것이 필요한 출력에서 XSLT1.0:
<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>
다른 팁
를 사용하는 경우 XSLT2.0,그것은 간단합니다:
<xsl:variable name="extension" select="tokenize($filename, '\.')[last()]"/>
지 않는 경우,그것은 조금 어렵습니다.거기에 좋은 예부터 O'reilly XSLT 요리책.검색에 대한"토큰화는 문자열을 사용합니다."
내가 믿고 있는 EXSLT 기능이 있는 경우에는 사용할 수 있다.
는 방법에 대해 토큰으로"/"과 마지막 요소에서 배열?
Example: tokenize("XPath is fun", "\s+")
Result: ("XPath", "is", "fun")
었 XSLT fiddler 언젠가 다시...잃은 지금 문의하세요.하지만 HTH
참고로,이 문제를 해결하는 것은 일반적으로"이라는 하위 문자열한 후에 마지막에서"XSLT.
제휴하지 않습니다 StackOverflow