XSLT检查每一个的大小写是否出现在中,并使用这些信息
我没有办法做到这一点,因为我无法更改XSLT中变量的值。 希望您能为以下问题提供适当的解决方法: 这是一个示例xml节点,我将引用它来解释问题:XSLT检查每一个的大小写是否出现在中,并使用这些信息,xslt,Xslt,我没有办法做到这一点,因为我无法更改XSLT中变量的值。 希望您能为以下问题提供适当的解决方法: 这是一个示例xml节点,我将引用它来解释问题: <information> <uselessNode1></uselessNode1> <uselessNode2></uselessNode2> <importantNode></importantNode> </information>
<information>
<uselessNode1></uselessNode1>
<uselessNode2></uselessNode2>
<importantNode></importantNode>
</information>
这里我需要的是遍历信息节点的所有子节点。
importantNode是可选的,我要检测的是这个节点是否存在。
如果importantNode在那里,它将在for-each循环中处理,一切都很好。
如果没有importandNode,我必须在for-each循环之外显示它的缺失
因此,如果信息节点模板中的每个循环都有以下内容:
<xsl:for-each select="*">
<xsl:choose>
<xsl:when test="not( name() = 'importantNode')">
USELESS
</xsl:when>
<xsl:otherwise>
IMPORTANT
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
无用的
重要的
输出是“无用的重要”。如果重要节点不存在,则输出为
“无用的”。实际上,我需要的不是“无用无用无用”而是一个提示,它表明重要节点不在那里,例如“无用无用重要_缺失”
我尝试在for-each循环中设置一个变量,如果进入-case并尝试
在for each循环外部检查此项会引发错误,即变量$importantFound未声明或超出其范围。我认为在for-each循环之前声明它会有所帮助。因为我不能在for each循环之前声明变量,并在循环内部的其他情况下更改它的值,所以我不知道如何解决这个难题
我希望对我的问题的解释足够清楚,可以理解。
提前谢谢大家
如果没有importandNode,我必须在for-each循环之外显示它的缺失
那么,你为什么不能做到这一点呢?例如:
<xsl:template match="information">
<xsl:for-each select="*">
<xsl:choose>
<xsl:when test="not(self::importantNode)">USELESS </xsl:when>
<xsl:otherwise>IMPORTANT </xsl:otherwise>
</xsl:choose>
</xsl:for-each>
<xsl:if test="not(importantNode)">IMPORTANT_MISSING</xsl:if>
</xsl:template>
无用的
重要的
重要人物失踪
这是双重检查,作为一名软件工程师,我不习惯这样做,但使用XSLT显然是不可避免的。我必须习惯它。谢谢这非常明显,并且完全符合我的要求。实际上,这不是重复检查,因为xsl:for-each
不是一个循环。如果需要,可以使用递归命名模板,并在迭代之间传递额外的参数。但这将是更多的代码,更尴尬。