Мне интересно, как легко разрешить {myParameterX}
по его значению в строке.
У меня есть раздел в моем xml (очевидно, упрощенный для поста), который содержит определения параметров и набор строк для «перевода»:
<section>
<parameters>
<myParameter1>One</myParameter1>
<myParameter2>Two</myParameter2>
</parameters>
<field toTranslate="{myParameter1} + {myParameter1} = {myParameter2}"/>
<field toTranslate="{myParameter2} - {myParameter1} = {myParameter1}"/>
</section>
В конце я ожидаю что-то вроде:
<field translated="One + One = Two"/>
<field translated="Two - One = One"/>
Я думаю, что решение близко, но я продолжаю получать неприятную ошибку о недопустимых символах в моем регулярном выражении (Unexpected token ")" in path expression
). Я пытался сбежать и сбежать от escape-символов, но не могу этого добиться :(
<xsl:template name="resolve">
<xsl:param name="toResolve" as="xs:string"/>
<xsl:param name="parameters" as="element()"/>
<xsl:analyze-string regex="{(.+)}" select="$toResolve">
<xsl:matching-substring>
<xsl:variable name="pName" select="regex-group(1)"/>
<xsl:value-of select="$parameters/$pName"/>
</xsl:matching-substring>
</xsl:analyze-string>
</xsl:template>
<xsl:call-template name="resolve">
<xsl:with-param name="toResolve" select="field/@toTranslate"/>
<xsl:with-param name="parameters" select="parameters"/>
</xsl:call-template>
Обратите внимание, я использую xslt 2.0 Есть идеи?