Вы можете сделать это, переопределяя преобразование идентичности с помощью дополнительного шаблона, просто чтобы соответствовать тексту в rightOperand , который соответствует вашим критериям
<xsl:template match="rightOperand/text()
[starts-with(., '.*')]
[substring(., string-length(.) - 1, 2) = '.*']">
Обратите внимание, что XSLT 1.0 не имеет функции оканчивается на , поэтому существует дополнительная работа для проверки окончания с подстрокой . Если бы вы использовали XSLT 2.0, вы могли бы упростить это с помощью end_with .
Вот полный XSLT
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="rightOperand/text()
[starts-with(., '.*')]
[substring(., string-length(.) - 1, 2) = '.*']">
<xsl:text>(?i)(?s)</xsl:text><xsl:copy />
</xsl:template>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
При применении к вашему образцу XML выводится следующее:
<rightOperand>(?i)(?s).*ifIndedx.*</rightOperand>