在XSLT中获取两个文本之间的字符串

时间:2016-02-02 11:25:04

标签: xslt substring

我的xml文件是这样的:

<node1>
this is the text of '{$\{titel_mn\}}' in the {$\{subtitle_mn\}} manual > {$\{manual_name
\}}
</node1>

我想在{$\{\}}之间获取文本,并将文本替换为其他xml文件中的其他文本。

我写了这样的代码:

<xsl:variable name="externalxmlFile" select="document(concat('./test/material', '.xml'))"/>

<xsl:variable name="replacebleText" select="$externalxmlFile//test[@id=XXXXXXX]/value"/>

XXXXXXX应为titel_mn,subtitle_mn,manual_name。

我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:0)

考虑xsl:analyze-string。在每种情况下,regex-group(1)将返回变量的名称(titel_mn,subtitle_mn等)。

<xsl:template match="node1">
    <xsl:analyze-string select="." regex="\{{\$\\\{{([a-z_]+)\\\}}\}}">
        <xsl:matching-substring>
            <xsl:value-of select="$externalxmlFile//test[@id=regex-group(1)]/value"/>
        </xsl:matching-substring>
        <xsl:non-matching-substring>
            <xsl:value-of select="."/>
        </xsl:non-matching-substring>
    </xsl:analyze-string>
</xsl:template>

注意,要转义大括号,您必须将它们加倍并在其前面添加\