• Liebe User, bitte beachtet folgendes Thema: Was im Forum passiert, bleibt im Forum! Danke!
  • Hallo Gemeinde! Das Problem leidet zurzeit unter technischen Problemen. Wir sind da dran, aber das Zeitkontingent ist begrenzt. In der Zwischenzeit dürfte den meisten aufgefallen sein, dass das Erstellen von Posts funktioniert, auch wenn das Forum erstmal eine Fehlermeldung wirft. Um unseren Löschaufwand zu minimieren, bitten wir euch darum, nicht mehrmals auf 'Post Reply' zu klicken, da das zur Mehrfachposts führt. Grußworte.

[XSLT] Speziellen Text isolieren

Crusher-ScT-

Guest
Hallo,

eine Frage zu XSLT. Was ich machen will:

Ich habe ein XML Document.
Code:
<document>
   <report>
      <comment>Hallo commentar. PB123</comment>
   </report>
   <report>
      <comment>Hallo commentar. PB456</comment>
   </report>
</document>

Was ich jetzt machen will ist, daß ein Teil des Textes (hier PBxxx) seperat ausgegeben will. Also es soll später im HTML Dokument eine Spalte (innerhalb einer Table) geben mit dem gesamten Comment und noch zusätzlich eine Spalte nur mit PBxxx.

Das Muster ist soweit gleich, daß nach PB 3 bis 4 Zahlen kommen die ich isolieren will. Wie bekomme ich das hin ?

Gruss Crusher

p.s. es geht mir nicht darum wie ich generell an den Kommentar rankomme. Soweit bin ich schon.
 
Mitglied seit
03.08.2002
Beiträge
707
Reaktionen
0
schon eine loesung gefunden? mir faellt nur was sehr umstaendliches ein.

<xsl:template match="comment">
<xsl:variable name="pos">
<xsl:call-template name="get_pos">
<xsl:with-param name="pos" select="string-length(.)"/>
</xsl:call-template>
</xsl:variable>
<xsl:value-of select="substring(., $pos"/>
</xsl:template>

<xsl:template name="get_pos">
<xsl:param name="pos"/>
<xsl:choose>
<xsl:when test="translate(substring(., $pos), '123456790', '')=''">
<xsl:call-template name="get_pos">
<xsl:with-param name="pos" select="$pos - 1"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$pos - 1"/>
</xsl:otherwise>
</xsl:choose>
 
Mitglied seit
03.08.2002
Beiträge
707
Reaktionen
0
kack gesichter. param und otherwise soll das heissen.
 

Crusher-ScT-

Guest
danke für die Antwort. Versuche es gerade mit fn:matches().

Das ist wohl schon die richtige Funktion, allerdings habe ich noch keine Ahnung wie Funktionen ordentlich in mein XSL einbinde. :(

Wie gebe ich der Funktion z.b. den String aus dem Element <comment> mit ?
 

Crusher-ScT-

Guest
hmmm ok .. wollte das ganze nun so starten:

Code:
<xsl:template match="commit/comment">
		<xsl:value-of select="fn:matches(., '[0-9]')"/>
</xsl:template

Fehler:

XPST0003: XPath syntax error at char 22 on line 51 in {fn:matches(., '[0-9]')}
:
Cannot find a matching 2-argument function named {http://www.w3.org/TR/xpath
}matches()
Failed to compile stylesheet. 1 error detected.

:(
 

Crusher-ScT-

Guest
ok fehler ist weg .. fn: einfach gelöscht ...

Macht aber net das was ich will .. eine Ahnung warum ?
 

Crusher-ScT-

Guest
ok funktioniert nun auch soweit ... die Funktion liefert true/false ...

aber bekomm ich das Ergebnis auch gleich irgendwie "rausgezogen" ?

Also die Zahlen ?
 
Oben