1

私のxpathはどちらかを返しています

John Hernandez | 12 Jul 2012 または13 July 2012文字列として。

文字列に文字が含まれている場合は、文字列が|必要|です。それ以外の場合は、文字列全体がそのまま必要です。

私は次のxpathを使用しました:

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

文字列に|が含まれている場合、2012年7月12日に正しい出力が得られます。しかし、私の文字列に|が含まれていない場合 その戻りnull。文字列に|が含まれているかどうかを確認する方法はありますか?次に、|の後に文字列を使用します 文字列全体を返します。

誰かが私がこれをするのを手伝ってくれますか?

</ p>

4

2 に答える 2

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 の 2 番目の値を返します。

(しかし、とにかく XPath 2 に切り替える必要があります。はるかに優れています...)

于 2012-09-11T15:24:04.683 に答える
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>
于 2012-09-11T11:27:38.230 に答える