2016-07-26 17 views
3

Wie kann ich den Inhalt des aktuellen Knotens ohne Kinder Knoten mit XPath wählen? zum Beispiel, wenn ich so habe <text> sometext <citation> somecitation </citation> sometext </text>XPath der Inhalt des aktuellen Knotens ohne Kinder

so brauche ich nur einen Text ohne Zitat.

Antwort

1

Wenn Sie nur den Text im text Element, können Sie verwenden:

//text/text() 

Verwendung von z xmllint dies ergibt:

> xmllint -xpath "//text/text()" test.xml 
sometext sometext 
+0

// text/text() das ist einer, den ich gesucht habe! Ich muss xsl schreiben, das einige Texte und Zitate in verschiedenen Schriftarten macht, vielleicht weißt du, wie es geht? – Alex

1

text() gibt Ihnen alle untergeordneten Textknoten, daher können Sie in XSLT 2.0 einfach <xsl:value-of select="text()"/> verwenden, um die zwei untergeordneten Textknoten auszugeben. Oder schreiben Sie eine Vorlage

<xsl:template match="text"> 
    <xsl:apply-templates select="text()"/> 
</xsl:template> 

Beachten Sie, dass in Ihrem Snippet gibt es zwei text() Kindknoten beide mit sometext. Es ist nicht klar, ob Sie beide ausgeben möchten.