У меня возникли некоторые проблемы при сравнении двух разных атрибутов двух разных узлов в цикле for-each.
Учитывая этот XML:
<?xml version="1.0" encoding="UTF-8"?>
<test>
<cars>
<car id="1" color="blue" misc="4"/>
<car id="2" color="red" misc="3"/>
<car id="3" color="blue" misc="2"/>
<car id="n" color="black" misc="1"/>
</cars>
<bikes>
<bike id="1"/>
<bike id="2"/>
<bike id="3"/>
<bike id="n"/>
</bikes>
</test>
XSLT:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<h2>TEST - </h2>
<xsl:variable name="bikes" select="test/bikes/bike"/>
<xsl:variable name="cars" select="test/cars/car"/>
<xsl:for-each select="$bikes">
<xsl:variable name="bikesID" select="./@id"/>
<xsl:for-each select="$cars">
<xsl:if test="$bikesID = ./@id">
<xsl:if test="./@color = 'blue'">
<xsl:value-of select="./@misc"/>
</xsl:if>
</xsl:if>
</xsl:for-each>
</xsl:for-each>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Я хочу сравнить идентификатор мотоцикла и автомобиля, если они равны, а затем сделать простую проверку с атрибутом другого автомобиля. Пожалуйста, посмотрите ожидаемый результат ниже.
ТЕСТ - 4 2
Любая помощь очень ценится.
Приветствия
PS: Реальная проблема заключалась в неправильном пространстве имен из-за недостатка внимания.Код на самом деле работает нормально, даже если выглядит не так хорошо, как можно было бы использовать XPath / XSLT 2.0.