208

XPathクエリを使用して、ノード(タグ)が存在するかどうかをどのように見つけますか?

たとえば、ウェブサイトのページが/html/bodyとのような正しい基本構造を持っていることを確認する必要がある場合/html/head/titleです。

4

6 に答える 6

331
<xsl:if test="xpath-expression">...</xsl:if>

たとえば

<xsl:if test="/html/body">body node exists</xsl:if>
<xsl:if test="not(/html/body)">body node missing</xsl:if>
于 2009-04-20T11:26:43.343 に答える
76

次の式を試してください。boolean(path-to-node)

于 2010-09-20T12:37:32.480 に答える
51

xsl:ifPatrickは、の使用とノードの存在をチェックするための構文の両方で正しいです。ただし、Patrickの応答が示すように、if-then-elseに相当するxslはありません。したがって、if-then-elseのようなものを探している場合は、通常、xsl:chooseとを使用することをお勧めしますxsl:otherwise。したがって、Patrickの構文例は機能しますが、これは代替手段です。

<xsl:choose>
 <xsl:when test="/html/body">body node exists</xsl:when>
 <xsl:otherwise>body node missing</xsl:otherwise>
</xsl:choose>
于 2011-07-04T10:38:27.313 に答える
13

選択肢を使用する方がよい場合があります。式を複数回入力する(または入力を間違える)必要がなく、追加のさまざまな動作に従うことができます。

count(/html/body) = 0特定のノード数はセットよりも興味深いので、私はよく使用します。たとえば...式に一致するノードが予期せず複数ある場合。

<xsl:choose>
    <xsl:when test="/html/body">
         <!-- Found the node(s) -->
    </xsl:when>
    <!-- more xsl:when here, if needed -->
    <xsl:otherwise>
         <!-- No node exists -->
    </xsl:otherwise>
</xsl:choose>
于 2011-05-01T17:03:18.317 に答える
4

私はRubyで作業し、Nokogiriを使用して要素をフェッチし、結果がnilかどうかを確認します。

require 'nokogiri'

url = "http://somthing.com/resource"

resp = Nokogiri::XML(open(url))

first_name = resp.xpath("/movies/actors/actor[1]/first-name")

puts "first-name not found" if first_name.nil?
于 2012-02-16T23:30:33.463 に答える
3

count()を使用してJavaでxpathを使用する場合のバリエーション:

int numberofbodies = Integer.parseInt((String) xPath.evaluate("count(/html/body)", doc));
if( numberofbodies==0) {
    // body node missing
}
于 2010-04-25T12:10:39.167 に答える