gpt4 book ai didi

javascript - 使用 XSL for-each 从 XML 中选择一个值

转载 作者:行者123 更新时间:2023-11-28 20:15:21 24 4
gpt4 key购买 nike

我正在尝试从 XML 样式表中选择语言。我有多种语言的组合框。我希望能够选择一种语言,然后转换各种innerHTML ID。到目前为止,我已经让它工作了,但它会遍历每个元素并将其转换为我想要的元素,然后输出所有元素。基本上,我更改了标题,但它不是“标题”,而是为尽可能多的子节点显示为“标题标题标题标题”。

这是我的 XSL

<?xml version='1.0'?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" >
<xsl:output method="text"/>

<xsl:param name="languageToBeSelected" />
<xsl:template match="/newdataset/language">
<xsl:for-each select="/newdataset/language">
<xsl:if test="englishtype = $languageToBeSelected">
<xsl:value-of select="premierlimited" />
</xsl:if>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>

以及我的 XML 片段

<newdataset>
<language>
<englishtype>Ukrainian</englishtype>
<premierlimited>Прем'єр обмеженою</premierlimited>

</language>

<language>
<englishtype>Arabic</englishtype>
<premierlimited>رئيس مجلس الدولة المحدودة</premierlimited>

</language>
</newdataset>

如果我运行上面的代码并选择阿拉伯语,它将产生

رئيس مجلس الدولة المحدودة رئيس مجلس الدولة المحدودة

如何让它只输出一次结果?

最佳答案

在您的 XML 代码段中,您有两个 语言 元素,这意味着模板 <xsl:template match="/newdataset/language">匹配两次,每个元素一次。但是,在此模板中,您使用 xsl:for-each 再次迭代所有 语言 元素,直到找到匹配项。由于模板被调用两次,因此最终会得到两个匹配项。

答案很简单,删除xsl:for-each

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" >
<xsl:output method="text"/>

<xsl:param name="languageToBeSelected" />
<xsl:template match="/newdataset/language">
<xsl:if test="englishtype = $languageToBeSelected">
<xsl:value-of select="premierlimited" />
</xsl:if>
</xsl:template>
</xsl:stylesheet>

关于javascript - 使用 XSL for-each 从 XML 中选择一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19289636/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com