2011-05-09 80 views
0

例如,我有以下字符串:如何從xslt中的字符串獲取所需的名稱?

  1. xoc.coe.hw.ZSBALAJI

  2. hw.cor.exp.nt.ZSSHIVA

我得只剩下最後的字符串(即ZSBALAJI從第一個和ZSSHIVA從第二個)。我怎樣才能在xslt中做到這一點。

在此先感謝。

+0

在哪裏XML和代碼,你已經嘗試過呢? – 2011-05-09 07:16:25

+0

答案很大程度上取決於您使用的是XSLT 1.0還是2.0。 – 2011-05-09 09:52:22

回答

0

讓我們假設你有以下的XML:

<?xml version="1.0" encoding="UTF-8"?> 
<root> 
    <a>xoc.coe.hw.ZSBALAJI</a> 
    <a>hw.cor.exp.nt.ZSSHIVA</a> 
</root> 

然後將下面的XSLT

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    version="2.0"> 

    <xsl:output method="text"/> 

    <xsl:template match="//a"> 
     <xsl:variable name="parts" select="tokenize(node(), '\.')"/> 
     <xsl:variable name="count" select="count($parts)"/> 
     <xsl:for-each select="$parts"> 
      <xsl:if test="position() = $count"> 
       <xsl:value-of select="."/> 
      </xsl:if> 
     </xsl:for-each> 
    </xsl:template> 

</xsl:stylesheet> 

將輸出中

ZSBALAJI 
ZSSHIVA 

本質上講,你可以使用XPath tokenize功能,然後拿最後一個標記。

0

您可以嘗試使用EXSLT tokenize(string, string?)函數按'。'拆分。在相關節點上,請參閱this瞭解更多信息。

1

下面是一個XSLT-1.0解決問題的方法:

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output method="text"/> 
    <xsl:template match="//string"> 
     <xsl:call-template name="skipper"> 
      <xsl:with-param name="source" select="."/> 
      <xsl:with-param name="delimiter" select="'.'"/> 
     </xsl:call-template> 
    </xsl:template> 
    <!-- returns the substring after the last delimiter --> 
    <xsl:template name="skipper"> 
     <xsl:param name="source"/> 
     <xsl:param name="delimiter"/> 
     <xsl:choose> 
      <xsl:when test="contains($source,$delimiter)"> 
       <xsl:call-template name="skipper"> 
        <xsl:with-param name="source" select="substring-after($source,$delimiter)"/> 
        <xsl:with-param name="delimiter" select="$delimiter"/> 
       </xsl:call-template> 
      </xsl:when> 
      <xsl:otherwise> 
       <xsl:value-of select="$source"/> 
      </xsl:otherwise> 
     </xsl:choose> 
    </xsl:template> 
</xsl:stylesheet> 

當適用於本文件:

<?xml version="1.0" encoding="UTF-8"?> 
<strings> 
    <string>xoc.coe.hw.ZSBALAJI</string> 
    <string>hw.cor.exp.nt.ZSSHIVA</string> 
</strings> 

這將產生以下結果:

ZSBALAJI 
ZSSHIVA 
相關問題