gpt4 book ai didi

html - 用于 XML 到 HTML 转换的 XSL : color the xml data values based on positive or negative

转载 作者:行者123 更新时间:2023-11-28 01:11:39 25 4
gpt4 key购买 nike

用于 XML 到 HTML 转换的 XSL:根据 xml 数据值是正数还是负数为其着色

我的 XML 文件。

<roots>
<root>
<text1>increased by</text1>
<value1>10</value1>
<text2>decreased by<text2>
<value2>-7</value2>
</root>
</roots>

预期的 HTML 输出:

increased by 10 --(value 10 in green color)
decreased by -7 -- (value -7 in red color)

我正在尝试以下面的方式实现 XSLT...

<xsl:template match="value1">
<xsl:if test="value1 >= 0">
<font color="green"><xsl:apply-templates/>/></font>
</xsl:if>
</xsl:template>

<xsl:template match="value1">
<xsl:if test="value1 < 0">
<font color="red"><xsl:apply-templates/>/></font>
</xsl:if>
</xsl:template>

最佳答案

您有两个匹配模式完全相同的模板 - 这是行不通的。为每个模板使用不同的匹配模式,例如:

<xsl:template match="value1[. >= 0]">

和:

<xsl:template match="value1[. &lt; 0]">

或带有 xsl:choose 的单个模板选择颜色。

另请注意,您有几个语法错误,例如 <xsl:apply-templates/>/> (双重关闭标签)或尝试使用未转义的 <字符作为比较运算符。


添加:

如果像您所说的那样,您的 XML 确实包含编号节点(text1、text2、value1、value2 等),那么您必须更改匹配模式以解决这个问题。否则,您将需要与输入中的值一样多的模板(如果您想要单独的正值和负值模板,则需要两倍的数量)。

例如,对这两种情况使用一个模板,使用 xsl:choose选择颜色:

<xsl:template match="*[starts-with(name(), 'value')]">
<xsl:variable name="color">
<xsl:choose>
<xsl:when test=". >= 0">green</xsl:when>
<xsl:otherwise>red</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<font color="{$color}">
<xsl:value-of select="." />
</font>
<br/>
</xsl:template>

关于html - 用于 XML 到 HTML 转换的 XSL : color the xml data values based on positive or negative,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37452527/

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