Основная причина, по которой ваш XSLT дает сбой, заключается в том, что и ваш XML, и XSLT имеют неправильную обработку пробелов. Из-за этого выражения не совпадают!
Решение исправление разрывов строк !
Например:
Ваш соответствующий атрибут levelGuid
содержит разрыв строки и некоторые пробелы, которые делают (почти) невозможным сопоставление строковым значением подключенного выражения XPath.
Так что вам придется столкнуться с неудобной задачей исправления разрывов строк в вашем XML.
После того, как вы исправили ситуацию с разрывом строки, следующий код XSLT-1.0 даст вам несколько полезных выводов:
<xsl:template match="/Records">
<ArcherRecords>
<xsl:for-each select="Record[@levelGuid='b085b230-e20f-41df-a849-f5d6811447ea']">
<ArcherRecord>
<IssueID>
<xsl:value-of select="@contentId"/>
</IssueID>
<xsl:for-each select="Record">
<CAPID>
<xsl:value-of select="Field[@guid='ed20bfb9-d2e9-44c2-9b22-5e39d26beae4']"/>
</CAPID>
<XTrackingID>
<xsl:value-of select="Field[@guid='d378d42e-42da-4a23-906a-722fcb7d761e']"/>
</XTrackingID>
</xsl:for-each>
</ArcherRecord>
</xsl:for-each>
</ArcherRecords>
</xsl:template>
Его вывод:
<?xml version="1.0"?>
<ArcherRecords xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:arch="http://www.archer-tech.com/">
<ArcherRecord>
<IssueID>1442264</IssueID>
<CAPID>16913</CAPID>
<XTrackingID>1608202</XTrackingID>
<CAPID>16915</CAPID>
<XTrackingID>1608204</XTrackingID>
</ArcherRecord>
<ArcherRecord>
<IssueID>1445144</IssueID>
<CAPID>16914</CAPID>
<XTrackingID>1608203</XTrackingID>
<CAPID>16916</CAPID>
<XTrackingID>1608205</XTrackingID>
</ArcherRecord>
</ArcherRecords>
Это ответ на ваш вопрос.
Теперь осталось получить чистый текстовый вывод.
И шаблон для создания желаемого вывода:
<xsl:output method="text" indent="yes" />
<xsl:template match="/Records">
<xsl:text>Issue ID	CAP ID		X - Tracking ID
</xsl:text>
<xsl:for-each select="Record[@levelGuid='b085b230-e20f-41df-a849-f5d6811447ea']">
<xsl:for-each select="Record">
<xsl:value-of select="concat('Issue-',../@contentId)"/><xsl:text>	</xsl:text>
<xsl:value-of select="concat('CAP-',Field[@guid='ed20bfb9-d2e9-44c2-9b22-5e39d26beae4'])"/><xsl:text>	</xsl:text>
<xsl:value-of select="Field[@guid='d378d42e-42da-4a23-906a-722fcb7d761e']"/>
<xsl:text>	
</xsl:text>
</xsl:for-each>
</xsl:for-each>
</xsl:template>
Его вывод:
Issue ID CAP ID X - Tracking ID
Issue-1442264 CAP-16913 1608202
Issue-1442264 CAP-16915 1608204
Issue-1445144 CAP-16914 1608203
Issue-1445144 CAP-16916 1608205