XSLT 2.0 for 循环一 XML 节点与其他 XML 中的数据匹配
XSLT 2.0 for loop one XML node which matches with data in other XML
我正在尝试使用下面给出的 XSLT 伪代码在与 XML A 匹配的 Root 节点上遍历 XML B 下面。由于我是 XSLT 的新手,请帮助
XML答:
<P_OUT_PARTNUMBERS>
<Row>
<Column>53</Column>
</Row>
<Row>
<Column>54</Column>
</Row>
</P_OUT_PARTNUMBERS>
XML乙:
<P_OUT_PARTNUMBERS>
<Root>
<Field>53</Field>
</Root>
<Root>
<Field>30</Field>
</Root>
</P_OUT_PARTNUMBERS>
XSLT:
<xsl:for-each select="$XMLB/Root">
<xsl:variable name="Fieldvalue" select ="/Field"/>
<xsl:if test="$XMLA/Row[Column = $Fieldvalue]/Column" >
<xsl:value-of select="position()"/>
</xsl:if>
</xsl:for-each>
我想要像下面这样的东西,因为我不想因为 if 条件而失去 position() 的值。即 position() 值应该是 1,2,3,..etc 我的逻辑是 1,3,6,8,..etc 不是连续
如果 position()
函数没有完成您期望或希望它完成的工作,如果您的解释依赖于询问 position()
,我们将很难理解您想要实现的目标它不做的事情。 input/output映射的任务是什么?
如果你想处理 P_OUT_PARTNUMBERS/Root[key('col', Field, $docA)]
那么也许只用一个键来做,例如<xsl:key name="col" match="P_OUT_PARTNUMBERS/Row" use="Column"/>
。一般来说,从嵌套 xsl:if
s 到简单谓词的移动条件可能更符合连续序列。
我正在尝试使用下面给出的 XSLT 伪代码在与 XML A 匹配的 Root 节点上遍历 XML B 下面。由于我是 XSLT 的新手,请帮助
XML答:
<P_OUT_PARTNUMBERS>
<Row>
<Column>53</Column>
</Row>
<Row>
<Column>54</Column>
</Row>
</P_OUT_PARTNUMBERS>
XML乙:
<P_OUT_PARTNUMBERS>
<Root>
<Field>53</Field>
</Root>
<Root>
<Field>30</Field>
</Root>
</P_OUT_PARTNUMBERS>
XSLT:
<xsl:for-each select="$XMLB/Root">
<xsl:variable name="Fieldvalue" select ="/Field"/>
<xsl:if test="$XMLA/Row[Column = $Fieldvalue]/Column" >
<xsl:value-of select="position()"/>
</xsl:if>
</xsl:for-each>
我想要像下面这样的东西,因为我不想因为 if 条件而失去 position() 的值。即 position() 值应该是 1,2,3,..etc 我的逻辑是 1,3,6,8,..etc 不是连续
如果 position()
函数没有完成您期望或希望它完成的工作,如果您的解释依赖于询问 position()
,我们将很难理解您想要实现的目标它不做的事情。 input/output映射的任务是什么?
如果你想处理 P_OUT_PARTNUMBERS/Root[key('col', Field, $docA)]
那么也许只用一个键来做,例如<xsl:key name="col" match="P_OUT_PARTNUMBERS/Row" use="Column"/>
。一般来说,从嵌套 xsl:if
s 到简单谓词的移动条件可能更符合连续序列。