2012-09-11 65 views
1
找到合適的字符串

我的XPath是返回要麼問題而使用XPath

John Hernandez | 12 Jul 2012或爲字符串。

如果字符串包含字符|那麼我想要字符串|否則我想要整個字符串,因爲它是。

我用以下XPath:

substring-after(string(./div/span[2]),'|') 

它給了我正確的輸出2012年7月12日,如果字符串包含|但如果我的字符串不包含|其返回null。有什麼方法可以檢查字符串是否包含|然後在|後使用字符串o.w返回整個字符串。

任何人都可以幫助我做到這一點。

回答

1

在XPath 1.0可以使用

substring-before(substring-after(concat(string(./div/span[2]), "|", string(./div/span[2]), "|"), "|"), "|") 

該第一標準化琴絃John Hernandez | 12 Jul 2012 | John Hernandez | 12 Jul 2012 |或分別13 July 2012 | 13 July 2012 |然後總是在返回第二個值| -list

(但你應該切換到XPath 2反正,它更好......)

+0

它爲我工作.. :) – pbhle

1

如果您正在使用XPath 2.0,那麼這將做到:

if (contains(string(div/span[2]), '|')) 
then substring-after(string(div/span[2]),'|') 
else string(div/span[2]) 

如果你正在使用XPath 1.0,那麼你必須檢查在XSLT字符串(或者你使用任何)在調用substring-after()之前。例如:

<xsl:choose> 
    <xsl:when test="contains(div/span[2], '|')"> 
     <xsl:value-of select="substring-after(string(div/span[2]),'|')"/> 
    </xsl:when> 
    <xsl:otherwise> 
     <xsl:value-of select="div/span[2]"/> 
    </xsl:otherwise> 
</xsl:choose> 
+0

它可能在單個xpath?我正在使用xpath 1.0。 – pbhle

+0

否。如果您使用的是XPath 1.0,則必須在調用substring-after()之前檢查代碼中的字符串。 – raffazizzi