[xslt] xpath find wenn ein Knoten existiert



2 Answers

Probieren Sie den folgenden Ausdruck aus: boolean(path-to-node)

Question

Wie finden Sie bei einer xpath-Abfrage, ob überhaupt ein Knoten (tag) existiert?

Zum Beispiel, wenn ich sicherstellen wollte, dass eine Webseite die korrekte Grundstruktur wie / html / body und / html / head / title hat




Es könnte besser sein, eine Auswahl zu verwenden, Sie müssen Ihre Ausdrücke nicht mehr als einmal eingeben (oder möglicherweise falsch eingeben), und Sie können weitere unterschiedliche Verhaltensweisen verfolgen.

Ich benutze sehr oft count(/html/body) = 0 , da die spezifische Anzahl der Knoten interessanter ist als die Menge. Zum Beispiel ... wenn es unerwartet mehr als einen Knoten gibt, der mit Ihrem Ausdruck übereinstimmt.

<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>



Eine Variante bei Verwendung von xpath in Java mit count ():

int numberofbodies = Integer.parseInt((String) xPath.evaluate("count(/html/body)", doc));
if( numberofbodies==0) {
    // body node missing
}



Related