Я использую xslt для преобразования моего xml таким образом, что в теге отображаются только те элементы, которые отображаются в теге <AffectedItems>
. <Changes>
. Я новичок в xslt, поэтому, пожалуйста, расскажите, что я делаю неправильно здесь.
Вот XML:Не удается запустить оператор if в вложенном цикле в xslt
<Product>
<Items>
<Item itemIdentifier="1102607">
</Item>
<Item itemIdentifier="1890456">
</Item>
</Items>
<Changes>
<Change>
<AffectedItems>
<AffectedItem itemIdentifier="1102607">
</AffectedItem>
</AffectedItems>
</Change>
</Changes>
</Product>
Вот соответствующая часть в XSLT в:
<xsl:for-each select="Product">
<xsl:variable name="var3_current" select="."/>
<Items>
<xsl:for-each select="Items/Item">
<xsl:for-each select="Changes/Change/AffectedItems/AffectedItem">
<xsl:if test="floor(@itemIdentifier) = floor(Changes/Change/AffectedItems/AffectedItem/@itemIdentifier)">
<Item>
<xsl:attribute name="itemIdentifier">
<xsl:value-of select="floor(@itemIdentifier)"/>
</Item>
</xsl:if>
</xsl:for-each>
</xsl:for-each>
</Items>
<Changes>
<Change>
<AffectedItems>
<AffectedItem>
<xsl:attribute name="itemIdentifier">
<xsl:value-of select="floor(Changes/Change/AffectedItems/AffectedItem/@itemIdentifier)"/>
</AffectedItem>
</AffectedItems>
</Change>
</Changes>
</xsl:for-each>
Он проходит через все пункты, но не ставит ни в выходной XML. Таким образом, полученный xml имеет пустой тег элементов
<Items/>
Можете ли вы показать свой ожидаемый результат в этом случае? Вы пытаетесь вывести элементы 'Item', чей' itemIdentifier' указан в 'AffectedItems'? Благодаря! –
Да, это именно то, что я хочу. Мой ожидаемый результат был бы просто «item», где «itemIdentifier» соответствует. –