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:ifs 到简单谓词的移动条件可能更符合连续序列。