Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml 在键查找后应用模板_Xml_Xslt - Fatal编程技术网

Xml 在键查找后应用模板

Xml 在键查找后应用模板,xml,xslt,Xml,Xslt,我有这样一个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>

我有这样一个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>


谢谢您的回复。如果被替换的东西在句子的中间,比如:“你好,你好吗?”,我遇到了一个新的问题,那该怎么办呢?如果您需要替换多种类型的标记,这将如何工作?用同样的方法说:将值作为参数传递,并为每个元素创建一个模板。请注意,在XSLT2.0+中,这可以通过其“tunnel”参数稍微简化。谢谢。它现在可以工作了,“tunnel”参数使它变得更好。这不是一个格式良好的输入XML-我想应该是
?完整的样式表和预期的输出也会很有帮助-请参阅。对不起,我已经解决了XML问题。