Проблема: у меня есть атрибуты в двух разных местах. Я хочу использовать только 1 из этих мест на выходе. Поэтому мне нужно сопоставить (?) Соответствующий атрибут/ID с ElementAttributeID.Простое отображение и преобразование XPath (очень простое)
Это XML Я пытаюсь преобразовать:
<ID>Testdata</ID>
<Attributes>
<Attribute>
<ID>Time</ID>
<Name>Time</Name>
</Attribute>
<Attribute>
<ID>Place</ID>
<Name>Place</Name>
</Attribute>
<Attribute>
<ID>Sense</ID>
<Name>Sense</Name>
</Attribute>
</Attributes>
<Elements>
<Element>
<ID>First</ID>
<Name>First</Name>
<MGs>
<MG>
<Attributes>
<Attribute>
<ElementAttributeID>Time</ElementAttributeID>
</Attribute>
<Attribute>
<ElementAttributeID>Place</ElementAttributeID>
</Attribute>
</Attributes>
</MG>
</MGs>
</Element>
</Elements>
мне удалось написать эту космическую часть XSL
<xsl:template match="MGs/MG/Attributes/Attribute">
<xsl:for-each select=".">
<xsl:if test="./node() = parent::Attributes/Attribute">
<xsl:value-of select="concat(CubeAttributeID,' Matches ',parent::Attributes/Attribute) " /> From template
</xsl:if>
</xsl:for-each>
</xsl:template>
После преобразования я обнаружил, что она отображается только найденное Атрибуты, но он не будет правильно отображаться в качестве выхода:
Time Matches Time
Place Matches Time
как желаемый ou tput будет:
Time Matches Time
Place Matches Place
Нужен ли мне один вложенный для каждого?