Ich habe eine Probe xsl wie diese,XSLT - REGEX Zeichen ersetzen
<doc>
<para>text . . .text</para>
<para>text . . .text. . . . . .text</para>
</doc>
Wie Sie einige Muster gibt es in der XML wie . . .
sehen kann, was ich brauche ersetzen Raum existieren zwischen den Punkten mit *
ist. So sollte eine Ausgabe wie folgt aussehen werden,
<doc>
<para>text .*.*.text</para>
<para>text .*.*.text.*.*.*.*.*.text</para>
</doc>
ich folgende Xslt dafür geschrieben haben,
<xsl:template match="text()">
<xsl:analyze-string select="." regex="(\.)( )(\.)">
<xsl:matching-substring>
<xsl:value-of select="replace(.,regex-group(2),'*')"/>
</xsl:matching-substring>
<xsl:non-matching-substring>
<xsl:value-of select="."/>
</xsl:non-matching-substring>
</xsl:analyze-string>
</xsl:template>
aber jeden anderen Raum beseitigen und geben Sie mir folgende Ergebnis
<doc>
<para>text .*. .text</para>
<para>text .*. .text.*. .*. .*.text</para>
</doc>
Wie kann ich mein XSLT ändern, um korrekte Ausgabe zu erhalten.
Nizza. :) Und ich denke, die Regex kann zu "\. (\.) +" ' – LukStorms
@LukStorms vereinfacht werden, Sie haben Recht, ich habe Ihren Vorschlag hinzugefügt. –
Ich nehme an, das sind Ellipse-Punkte, minimal drei Punkte müssen. (\.)() (\.) (\.) * nach (\.)() (\.) (\.) + ist in Ordnung. Text. .text sollte nicht * dazwischen kommen. –