Hallo mitenand
die Aufgabe ist die folgende:
in einem gewöhnlichen Text (z.B. News aus Politik, Wirtschaft usw.) müssen die Anführungszeichen (Gänsefüsschen '"' zu entweder '«' oder '»') gewechselt werden.
Beispiel: "Siemens" zu «Siemens»
dazu braucht es eine dreiteilige 'translate'-Routine:
1. (Space") wechseln zu (Space«)
2. (Bindestrich") wechseln zu (Bindestrich«)
und
3. alle restlichen (") wechseln zu (»)
mit der folgenden Routine ist ein Replacment möglich, ABER wie alle drei?
<xsl:call-template name="globalReplace">
<xsl:with-param name="string" select="normalize-space(.)"/>
<xsl:with-param name="old" select="' "'"/>
<xsl:with-param name="new" select="' «'"/>
</xsl:call-template>
<xsl:template name="globalReplace">
<xslaram name="string"/>
<xslaram name="old"/>
<xslaram name="new"/>
<xsl:choose>
<xsl:when test="contains($string,$old)">
<xsl:value-of select="concat(substring-before($string,$old),$new)"/>
<xsl:call-template name="globalReplace">
<xsl:with-param name="string" select="substring-after($string,$old)"/>
<xsl:with-param name="old" select="$old"/>
<xsl:with-param name="new" select="$new"/>
</xsl:call-template>
</xsl:when>
<xsltherwise>
<xsl:value-of select="$string"/>
</xsltherwise>
</xsl:choose>
</xsl:template>
vielen Dank, wenn jemand helfen kann.
die Aufgabe ist die folgende:
in einem gewöhnlichen Text (z.B. News aus Politik, Wirtschaft usw.) müssen die Anführungszeichen (Gänsefüsschen '"' zu entweder '«' oder '»') gewechselt werden.
Beispiel: "Siemens" zu «Siemens»
dazu braucht es eine dreiteilige 'translate'-Routine:
1. (Space") wechseln zu (Space«)
2. (Bindestrich") wechseln zu (Bindestrich«)
und
3. alle restlichen (") wechseln zu (»)
mit der folgenden Routine ist ein Replacment möglich, ABER wie alle drei?
<xsl:call-template name="globalReplace">
<xsl:with-param name="string" select="normalize-space(.)"/>
<xsl:with-param name="old" select="' "'"/>
<xsl:with-param name="new" select="' «'"/>
</xsl:call-template>
<xsl:template name="globalReplace">
<xslaram name="string"/>
<xslaram name="old"/>
<xslaram name="new"/>
<xsl:choose>
<xsl:when test="contains($string,$old)">
<xsl:value-of select="concat(substring-before($string,$old),$new)"/>
<xsl:call-template name="globalReplace">
<xsl:with-param name="string" select="substring-after($string,$old)"/>
<xsl:with-param name="old" select="$old"/>
<xsl:with-param name="new" select="$new"/>
</xsl:call-template>
</xsl:when>
<xsltherwise>
<xsl:value-of select="$string"/>
</xsltherwise>
</xsl:choose>
</xsl:template>
vielen Dank, wenn jemand helfen kann.
Comment