3
У меня есть образец XSL, как это,XSLT - Regex заменить символ
<doc>
<para>text . . .text</para>
<para>text . . .text. . . . . .text</para>
</doc>
Как вы можете видеть, что есть некоторые модели в XML, как . . .
то, что мне нужно заменить пространство существует между точками с *
. Поэтому выход должен быть похож,
<doc>
<para>text .*.*.text</para>
<para>text .*.*.text.*.*.*.*.*.text</para>
</doc>
я написал следующий XSLT для этого,
<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>
но устранить все другие места и дать мне следующий результат,
<doc>
<para>text .*. .text</para>
<para>text .*. .text.*. .*. .*.text</para>
</doc>
Как могу ли я изменить свой XSLT, чтобы получить правильный вывод.
Nice. :) И я думаю, что регулярное выражение можно упростить до '' \. (\.) + "' – LukStorms
@LukStorms, вы правы, я добавил ваше предложение. –
Я предполагаю, что это точки эллипса, минимальные три точки должны. (\.)() (\.) (\.) * to (\.)() (\.) (\.) + нормально. текст. .text не должно быть * между. –