У меня есть XML-файл, который выглядит так:
<container>
<bugs>
<bug id="b1">
<reporter>Tom</reporter>
...
</bug>
<bug id="b2">
<reporter>Jane</reporter>
...
</bug>
</bugs>
<users>
<user>
<userid>10</userid>
<username>Tom</username>
</user>
<user>
<userid>5</userid>
<username>Jane</username>
</user>
</users>
</container>
Конечный результат должен быть:
<items>
<item>
<bugid>b1</bugid>
<author id="10">Tom</author>
</item>
<item>
<bugid>b2</bugid>
<author id="5">Jane</author>
</item>
</items>
Проблема: я не могу получить правильное сравнение для поиска идентификатора.
Я предположил, что это будет так:
<xsl:template match="bug">
....
<xsl:element name="author">
<xsl:attribute name="id">
<xsl:value-of select="//users/user[username=reporter]/userid"/>
</xsl:attribute>
</xsl:element>
....
</xsl:template>
Но это возвращает пустой идентификатор (id = "").
<xsl:value-of select="//users/user[username='Tom']/userid"/>
возвращает 10
и
<xsl:value-of select="reporter"/>
возвращает Тома.
Я не вижу, что здесь не так.