Я пытаюсь разработать регулярное выражение, которое будет определять рекурсивные вызовы шаблонов в таблице стилей xsl.
Пока что он не был действительно успешным.
В следующем коде мне нужно обнаружить, что шаблон B вызывается рекурсивно:
<xsl:template name="A">
blah blha ?!@#?%$#^%?*?&(({}:"><;'[]\/.,./'
<xsl:call-template name="B">
blah blah
</xsl:template>
<xsl:template name="B">
blah blha
<xsl:call-template name="B">
blah blah
</xsl:template>
<xsl:template name="C">
blah blha
<xsl:call-template name="B">
blah blah
</xsl:template>
В этом конкретном случае reg ex в порядке.
В случае, если я удаляю второй вызов B, регулярное выражение соответствует последнему вызову B. Этого не должно быть.
(<xsl:template name=\"(?<templateName>\w+)\">.*?(?<=<xsl:call-template name=\"\k<templateName>\">).*?</xsl:template>)+
Я не гуру регулярных выражений. Любая помощь приветствуется.
Спасибо.