Фоновый контекст
Я работаю в Microsoft Azure DevOps, веб-службе управления проектами.Сервис позволяет писать шаблоны XSLT для экспорта некоторой информации в Word в пользовательских форматах.Я совсем не разбираюсь в XSLT.
Мне нужен доступ к свойствам элемента моей структуры данных.Проблема заключается в том, что элемент можно увидеть в двух разных местах дерева, и у них нет родительских / дочерних отношений.
Структура данных
См. Вкартинка ниже.На уровне planAndSuites/testPlan/suiteHierarchy/suite
вы увидите, что набор 9506 является родителем наборов 9507, 9508, 9509 и т. Д. Идентификаторы бывают последовательными, но это не всегда так.Также может быть больше уровней наборов (нижний уровень может иметь собственных дочерних элементов, и все последующие уровни будут называться «набор»)
Если вы посмотрите на planAndSuites/testSuites/testSuite
, вы найдете тот же наборИдентификационные номера: 9506, 9507, 9508 и т. Д. На этот раз к люксам прикреплена информация testCase.
Что я хочу
Я хочу получить доступ к информации testCase, но я также хочу, чтобы выходные данные отображали уровни иерархии родительский / дочерний.Мой код выводит иерархию, но как мне ТАКЖЕ получить доступ к данным, присутствующим в planAndSuites/testSuites/testSuite
, когда в for-each на основе planAndSuites/testPlan/suiteHierarchy/suite
, учитывая, что идентификатор всегда будет соответствовать .
Что у меня есть
Текущий код:
<?xml version="1.0" encoding="utf-8" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" >
<xsl:output method="html" indent="yes" encoding="utf-8" doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" />
<xsl:template match="/">
<xsl:for-each select="planAndSuites" >
<div id="exported-data">
<xsl:for-each select="testSuites">
<xsl:for-each select="testSuite">
<br/>
Test Suite: <xsl:value-of select="@id"/>
PARENT SUITE:
<br/><hr/>
<xsl:for-each select="testCases">
<xsl:for-each select="testCase">
Test case: <xsl:value-of select="@id"/> - <xsl:value-of select="@title"/>
<br/>
</xsl:for-each>
</xsl:for-each>
</xsl:for-each>
</xsl:for-each>
Токовый выход:
Требуемый вывод:
То же, что и на изображенном выходе, за исключением того, что PARENT SUITE:
должно отображать (нет) для 9506, а для остальных - 9506.