我的xpath正在返回
John Hernandez | 12 Jul 2012
或13 July 2012
为字符串。
如果字符串包含字符|
,那么我想要|
之后的字符串,否则我想要整个字符串。
我使用了以下xpath:
substring-after(string(./div/span[2]),'|')
如果字符串包含|,它会给我正确的输出2012年7月12日但如果我的字符串不包含|它返回null。有没有办法检查字符串是否包含|然后在|后使用字符串o.w返回整个字符串。
任何人都可以帮我这样做。
答案 0 :(得分: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,那么你必须在调用substring-after()之前检查XSLT中的字符串(或者你正在使用的任何字符串)。例如:
<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>
答案 1 :(得分: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,它更好......)