문제

내가 필요할 수 있을 찾기 위해 마지막에 발생한 문자 내에서 요소입니다.

예를 들어:

<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.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top