在关键字查找后应用模板



我有一个XML文件,如下所示:

<root>
<texts>
<text id='1' lang='en'>Hello <name/>, how are you today?</text>
<text id='1' lang='de'>Hallo <name/>, wie geht es Ihnen heute?</text>
</texts>
<items>
<item textId='1'><name>Some Name</name></item>
</items>
</root>

我需要做的是在选择一种语言后,得到一个填写了名称的文本。到目前为止,我已经想出了什么:

<xsl:variable name="lang" select="'de'" />
<xsl:key name="textKey" match="text" use="@id" />
<xsl:template match="items">
<xsl:value-of select="key('textKey', @text)[@lang=$lang]"/>
</xsl:template>

现在我不知道如何替换"text"节点中的"name"?有人知道怎么做吗?

尝试以下操作::

<xsl:variable name="lang" select="'de'" />
<xsl:key name="textKey" match="text" use="concat(@id, '|', @lang)" />
<xsl:template match="item">
<xsl:apply-templates select="key('textKey', concat(@textId, '|', $lang))">
<xsl:with-param name="name" select="."/>
</xsl:apply-templates>
</xsl:template>
<xsl:template match="text">
<xsl:param name="name"/>
<xsl:apply-templates>
<xsl:with-param name="name" select="$name"/>
</xsl:apply-templates>
</xsl:template>
<xsl:template match="name">
<xsl:param name="name"/>
<xsl:value-of select="$name"/>
</xsl:template>

相关内容

最新更新