我的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。
我怎样才能做到这一点?
答案 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>
注意,要转义大括号,您必须将它们加倍并在其前面添加\
。