0

{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) の無効な文字に関する厄介なエラーが発生し続けます。エスケープ文字をエスケープしてエスケープしようとしましたが、取得できません:(

<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 を使用していることに注意してください。

4

1 に答える 1