2012-09-11 64 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