我有一个xml看起来像这样
<component name="main">
<component name="sub">
<component name="a">
<issues>
<warning> </warning>
</issues>
</component>
<component name="b">
<issues>
<warning> </warning>
</issues>
</component>
<component name="c">
<issues>
<error> </error>
</issues>
</component>
</component>
</component>
我希望输出看起来像下面的
"main": [
{
composite:"sub"
result: "failure"
}
]
结果可以有3个值。其中列出如下 成功:没有错误没有警告 失败:错误超过零 不稳定:零错误超过零警告
结果应基于子组件结果。在上面的示例中,“sub”的结果失败,因为其子组件c之一有错误标记。
我的代码如下所示。它没有给我想要的结果。请帮帮我
<xsl:param name="error">0</xsl:param>
<xsl:param name="warning">0</xsl:param>
<xsl:param name="Success">0</xsl:param>
<xsl:for-each select="./components/components">
<xsl:if test="./issues/error">
<xsl:param name="error" select="'1'" />
</xsl:if>
<xsl:if test= "./issues/warning">
<xsl:param name="warning" select="'1'" />
</xsl:if>
<xsl:if test= "not(./issues/warning) and not(./issues/error)">
<xsl:param name="Success" select="'1'" />
</xsl:if>
</xsl:for-each>
<xsl:if test= "$error = '1'">
"result":"Failure"
</xsl:if>
<xsl:if test="$error !='1' and $warning = '1'">
"result":"Unstable"
</xsl:if>
<xsl:if test="$error !='1' and $warning != '1' and $warning = '1'">
"result":"Success"
</xsl:if>
答案 0 :(得分:0)
无需变量:
<xsl:for-each select="./components">
<xsl:text>"result":</xsl:text>
<xsl:choose>
<xsl:when test="count(./components/issues/error) > 1">
<xsl:text>"Failure"</xsl:text>
</xsl:when>
<xsl:when test="count(./components/issues/warning) > 1">
<xsl:text>"Unstable"</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:text>"Success"</xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>