在XSLT中第二次出现字符之前获取所有字符

时间:2017-09-14 11:54:24

标签: xml xslt

我正在尝试提取第二次出现' - '

之前的字符串

实施例: 我有这个字符串: xx-xxxx-xxxxx-xxxxxx 我试着只有: xx-xxxx

但我们也可以使用此字符串: xxx-xxx-xxxxx-xxxxxx 然后我需要: xxx-xxx

我尝试使用substring-before / after来制作它,但我没有设法获得所需的结果。然后我想知道在xslt 1.0中是否可以这样做?

我尝试的代码示例:

<xsl:template match="/RESULT">
   <RESULT>
      <xsl:if test="contains(Number,'-')">                 
           <ref>                                                                                                    
              <xsl:value-of select="substring-before(substring-after(Number,'-')'')"/>                                                                                  
          </ref>
      </xsl:if>
    </RESULT>
</xsl:template>

提前谢谢

1 个答案:

答案 0 :(得分:2)

要在第一个-之前获取子字符串...

substring-before(Number, '-')

要在第二个-之前获取子字符串,但在第一个-之后...

substring-before(substring-after(Number, '-'), '-')

然后,您可以连接这些以获得您想要的值

<xsl:value-of select="concat(substring-before(Number, '-'), '-', substring-before(substring-after(Number, '-'), '-'))" />

如果你可以使用XSLT 2.0,你可以这样......

<xsl:value-of select="tokenize(Number, '-')[position() &lt;= 2]" separator="-" />