Microsummaries
Marc Reichelt
- xsl
Hallo an alle,
da ich am Freitag einen Vortrag über Firefox halten möchte, habe ich mich auch soeben über Microsummaries informiert (und bereits einen auf meiner Startseite eingebunden).
Das Ganze klappt nun hervorragend, allerdings habe ich noch ein kleines Proble mit XSL (genauer: mit XPath).
Ich habe folgende Dokumentstruktur:
<html>
...
<body>
...
<div id="main">
<h3><span class="headerdatum">Datum:</span> Mein erstes Microsummary</h3>
...
</div>
</body>
</html>
Nun greife ich mittels
<value-of select="/html/body/div/h3" />
auf das gesamte H3-Element zu - allerdings will ich nur den Part nach dem <span> haben (speziell: ohne das erste Zeichen, das immer ein Leerzeichen ist; noch besser: getrimmt).
Welche Pfadangabe brauche ich dafür?
Grüße
Marc Reichelt || http://www.marcreichelt.de/
Hallo Marc,
[…]
<h3><span class="headerdatum">Datum:</span> Mein erstes Microsummary</h3>
[…]Nun greife ich mittels
<value-of select="/html/body/div/h3" />
auf das gesamte H3-Element zu - allerdings will ich nur den Part nach dem <span> haben.
um nur den Text, der Kind von h3 ist auszugeben, kannst Du folgenden Code verwenden:
<xsl:value-of select="/html/body/div/h3/text()" />
Um diesen Code zu „trimmen“, kannst Du unter anderem dieses hier tun:
<xsl:value-of select="normalize-space(/html/body/div/h3/text())" />
Gruß
Olaf
Hallo Olaf,
um nur den Text, der Kind von h3 ist auszugeben, kannst Du folgenden Code verwenden:
<xsl:value-of select="/html/body/div/h3/text()" />
Ich dachte erst, dass man auf das zweite Element irgendwie zugreifen muss.
Vermutlich gibt test() dann nur den "normalen" Text zurück. Wenn da nun also beispielsweise stehen würde:
<h3>Dies ist ein <strong>fetter</strong> Text</h3>
, dann würde die Methode text() vermutlich nur "Dies ist ein Text" zurückgeben.
Sehe ich das richtig?
Um diesen Code zu „trimmen“, kannst Du unter anderem dieses hier tun:
<xsl:value-of select="normalize-space(/html/body/div/h3/text())" />
Super, funktioniert grandios! :-)
Grüße
Marc Reichelt || http://www.marcreichelt.de/
Hallo,
Ich dachte erst, dass man auf das zweite Element irgendwie zugreifen muss.
Vermutlich gibt test() dann nur den "normalen" Text zurück. Wenn da nun also beispielsweise stehen würde:
<h3>Dies ist ein <strong>fetter</strong> Text</h3>
, dann würde die Methode text() vermutlich nur "Dies ist ein Text" zurückgeben.
Sehe ich das richtig?
Ja. Der einfache Slash gibt alle direkten Kinder eines Elementes, also greift h3/text() auf „Dies ist ein “ und „ Text“ zu. Möchte man alle Nachfahren, so nimmt man den doppelten Slash. h3//text() gibt also zusätzlich den Textknoten „fetter“ zurück.
Das Thema ist bei SelfHTML unter http://de.selfhtml.org/xml/darstellung/xpathsyntax.htm@title=XPath-Syntax(beachte die verkürzte Notation) sehr schön dargestellt.
Gruß
Olaf