2011-05-09 75 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 
相关问题