Hallo Janine,
Mein Problem ist nun, beides zusammenzupacken. Wenn ich alles in ein Template schreibe (mit der Variablen "secChange"), wird meine Gedankenstrich-Variable dennoch übergangen. Habt ihr eine Ahnung, warum? Oder gibt es eine elegantere Möglichkeit?
Probiere es so (ohne Garantie auf Abdeckung aller – außer den genannten – möglichen Fälle):
<xsl:template match="//text">
<root>
<xsl:variable name="fstChange">
<xsl:analyze-string select="." regex="-(\s|\n)([A-Z])">
<!-- 
| -->
<xsl:matching-substring>-<xsl:value-of select="regex-group(2)"/>
</xsl:matching-substring>
<xsl:non-matching-substring>
<xsl:value-of select="."/>
</xsl:non-matching-substring>
</xsl:analyze-string>
</xsl:variable>
<xsl:variable name="secChange">
<xsl:analyze-string select="$fstChange" regex="-(\s|\n|\s)(and|und|oder|or )?">
<xsl:matching-substring>
<xsl:choose>
<xsl:when test="regex-group(2) = 'und'">- und</xsl:when>
<xsl:when test="regex-group(2) = 'oder'">- oder</xsl:when>
<xsl:when test="regex-group(2) = 'and'">- and</xsl:when>
<xsl:when test="regex-group(2) = 'or'">- or</xsl:when>
<xsl:otherwise/>
</xsl:choose>
</xsl:matching-substring>
<xsl:non-matching-substring>
<xsl:value-of select="."/>
</xsl:non-matching-substring>
</xsl:analyze-string>
</xsl:variable>
<xsl:variable name="finalChange">
<xsl:analyze-string select="$secChange" regex="(\s|\n)-">
<xsl:matching-substring>
<xsl:value-of select="regex-group(1)"/>- <xsl:value-of select="regex-group(2)"/>
</xsl:matching-substring>
<xsl:non-matching-substring>
<xsl:value-of select="."/>
</xsl:non-matching-substring>
</xsl:analyze-string>
</xsl:variable>
<xsl:value-of select="$finalChange"/>
</root>
</xsl:template>
Grüße, Thomas