Если они всегда идут как левая / правая пары, вы можете сделать следующее:
XSLT 1.0
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" omit-xml-declaration="yes" version="1.0" encoding="utf-8" indent="yes"/>
<xsl:template match="/JOB">
<table>
<tr>
<th>LPATH</th>
<th>RPATH</th>
</tr>
<xsl:for-each select="VARIABLE[contains(@NAME, 'LPATH')]">
<tr>
<td>
<xsl:value-of select="@VALUE"/>
</td>
<td>
<xsl:value-of select="following-sibling::VARIABLE[1]/@VALUE"/>
</td>
</tr>
</xsl:for-each>
</table>
</xsl:template>
</xsl:stylesheet>
или даже проще:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" omit-xml-declaration="yes" version="1.0" encoding="utf-8" indent="yes"/>
<xsl:template match="/JOB">
<table>
<tr>
<th>LPATH</th>
<th>RPATH</th>
</tr>
<xsl:for-each select="VARIABLE[position() mod 2 = 1]">
<tr>
<td>
<xsl:value-of select="@VALUE"/>
</td>
<td>
<xsl:value-of select="following-sibling::VARIABLE[1]/@VALUE"/>
</td>
</tr>
</xsl:for-each>
</table>
</xsl:template>
</xsl:stylesheet>
Добавлено:
Если они могут выйти из строя, как показано в обновленном примере, попробуйте:
XSLT 2.0
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" omit-xml-declaration="yes" version="1.0" encoding="utf-8" indent="yes"/>
<xsl:key name="r" match="VARIABLE[starts-with(@NAME, '%%FTP-RPATH')]" use="substring-after(@NAME, '%%FTP-RPATH')" />
<xsl:template match="/ROOT">
<root>
<xsl:for-each select="FOLDER/JOB[@type='T']">
<xsl:variable name="job" select="." />
<table>
<tr>
<th>LPATH</th>
<th>RPATH</th>
</tr>
<xsl:for-each select="VARIABLE[starts-with(@NAME, '%%FTP-LPATH')]">
<tr>
<td>
<xsl:value-of select="@VALUE"/>
</td>
<td>
<xsl:value-of select="key('r', substring-after(@NAME, '%%FTP-LPATH'), $job)/@VALUE"/>
</td>
</tr>
</xsl:for-each>
</table>
</xsl:for-each>
</root>
</xsl:template>
</xsl:stylesheet>
Демо : https://xsltfiddle.liberty-development.net/6pS26mt
Обратите внимание, что это по-прежнему предполагает, что они идут парами - или, по крайней мере, что значение LPATH пары всегда будет присутствовать.