XSLT use/declare 来自其他节点的变量,过滤掉不同节点的数据
XSLT use/declare variable from other node to filter out different node data
我找不到显示问题的问题 :/ 我是 xslt 的新手,也许有人可以将我转发到正确的站点。
这个任务对我来说似乎很简单:
我想声明一个变量以在一个节点中使用(用于过滤掉),该变量来自另一个节点中的检查。我习惯了 sql 和数据库,我的方法在这里可能是错误的。
情况:
<NODES1>
<NODE1 INTV="0" INDEX_ZONE="1" />
<NODE1 INTV="1" INDEX_ZONE="2" />
<NODE1 INTV="1" INDEX_ZONE="2" />
<NODE1 INTV="1" INDEX_ZONE="3" />
<NODE1 INTV="2" INDEX_ZONE="5" />
<NODE1 INTV="2" INDEX_ZONE="6" />
<NODE1 INTV="2" INDEX_ZONE="7" />
<NODE1 INTV="2" INDEX_ZONE="8" />
</NODES1>
</NODES2><
<NODE2 INTV="0" SPTYP="good" />
<NODE2 INTV="1" SPTYP="medium" />
<NODE2 INTV="2" SPTYP="bad" />
</NODES2>
在我的样式表中,我想查看数据“错误”的所有 NODE1。
属性 INTV 包含一个数字,密钥对位于 NODES2.
所以根据我的 SQL 想法,我需要某种:
<xsl:variable name="BAD" select="NODES2/@SPTYP"/> PLUS "WHERE INTV = 2" :D ;D
然后在 NODES1 中添加一个 if:
<xsl:for-each select="NODES1">
<xsl:choose>
<xsl:when test="@INTV = $BAD">
有人知道这个主意并可以帮忙吗?
我什至不知道在 xslt 中是否可以进行这种操作。
提前致谢。
要select按条件,您需要在XPath中使用方括号。
<xsl:variable name="BAD" select="//NODES2/NODE2[@INTV=2]/@SPTYP"/>
这会将变量设置为 'bad'
.
我不确定你的 XSL 代码的第二部分应该做什么,因为它缺少语句本身(when
基本上是 if/else 条件检查的 if-part)。在当前状态下,它只检查名为 INTV
的属性是否等于 $BAD
.
的变量内容
也许您可以提供示例输出,然后我将编辑问题第二部分的答案。
我找不到显示问题的问题 :/ 我是 xslt 的新手,也许有人可以将我转发到正确的站点。
这个任务对我来说似乎很简单: 我想声明一个变量以在一个节点中使用(用于过滤掉),该变量来自另一个节点中的检查。我习惯了 sql 和数据库,我的方法在这里可能是错误的。 情况:
<NODES1>
<NODE1 INTV="0" INDEX_ZONE="1" />
<NODE1 INTV="1" INDEX_ZONE="2" />
<NODE1 INTV="1" INDEX_ZONE="2" />
<NODE1 INTV="1" INDEX_ZONE="3" />
<NODE1 INTV="2" INDEX_ZONE="5" />
<NODE1 INTV="2" INDEX_ZONE="6" />
<NODE1 INTV="2" INDEX_ZONE="7" />
<NODE1 INTV="2" INDEX_ZONE="8" />
</NODES1>
</NODES2><
<NODE2 INTV="0" SPTYP="good" />
<NODE2 INTV="1" SPTYP="medium" />
<NODE2 INTV="2" SPTYP="bad" />
</NODES2>
在我的样式表中,我想查看数据“错误”的所有 NODE1。 属性 INTV 包含一个数字,密钥对位于 NODES2.
所以根据我的 SQL 想法,我需要某种:
<xsl:variable name="BAD" select="NODES2/@SPTYP"/> PLUS "WHERE INTV = 2" :D ;D
然后在 NODES1 中添加一个 if:
<xsl:for-each select="NODES1">
<xsl:choose>
<xsl:when test="@INTV = $BAD">
有人知道这个主意并可以帮忙吗? 我什至不知道在 xslt 中是否可以进行这种操作。
提前致谢。
要select按条件,您需要在XPath中使用方括号。
<xsl:variable name="BAD" select="//NODES2/NODE2[@INTV=2]/@SPTYP"/>
这会将变量设置为 'bad'
.
我不确定你的 XSL 代码的第二部分应该做什么,因为它缺少语句本身(when
基本上是 if/else 条件检查的 if-part)。在当前状态下,它只检查名为 INTV
的属性是否等于 $BAD
.
也许您可以提供示例输出,然后我将编辑问题第二部分的答案。