Schrift
[thread]10803[/thread]

XSLT > Anfängerfrage zum Ersetzen von Tags in Text

Leser: 1


<< >> 2 Einträge, 1 Seite
Gast Gast
 2007-11-15 16:41
#102443 #102443
Hallo,

ich bin gerade dabei XSLT zu lernen u. stehe vor einer Frage, auf deren Lösung ich garade nicht selbst komme. Ich habe zum Beispiel folgendes XML:

<main>
<person id="1">
<name>Peter</name>
</person>
<person id="2">
<name>Hans</name>
</person>

<text>
Wenn <person-ref idref="1"/> nicht immer ablenken würde, könnte <person-ref idref="2"/> seine Arbeit bestimmt besser machen.
Leider sieht das <person-ref idref="1"/> einfach nicht ein.
</text>
</main>


Ok, nun möchte ich mittels XSLT alles in dem Tag <text> in Plaintext umwandeln u. den ganzen Satz in meine Ausgabe kriegen, jedoch sollen vorher alle <person-ref>-Tags gegen den dazugehöhrigen Text aus <name> von <person> ersetzt werden. Welcher <person>-Tag zu welchem <person-ref> gehöhrt, ist ja über den idref u. id erkenntlich.
Ich verwende xslt 2.0 u. xpath 2.0, bin aber auch mit einer 1.0 Lösung glücklich.
Was mit daran eigentlich unverständlich ist, ist wie ich aus dem <text> den Text herauskriege u. dann innerhalb dieses textes noch Tags gegen etwas anderes ersetzen kann u. erst das in meinen Output kommt.
Gast Gast
 2007-11-16 17:20
#102490 #102490
Hier die Antwort, jemand anders konnte mir weiterhelfen :D
<xsl:templatematch="main">
<xsl:apply-templatesselect="text"/>
</xsl:template>

<xsl:templatematch="text">
<xsl:apply-templatesselect="text()|person-ref"/>
</xsl:template>

<xsl:templatematch="person-ref">
<xsl:variablename="testid"select="@idref"/>
<xsl:value-ofselect="/main/person[@id=$testid]/name"/>
</xsl:template>
<< >> 2 Einträge, 1 Seite



View all threads created 2007-11-15 16:41.