ThomasM: Filtern von Trennstrichen (regular expressions)

Beitrag lesen

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])">
        <!-- &#xa;| -->
        <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