Как изменить значение атрибута на основе количества значений в файле XML с помощью XSLT - PullRequest
0 голосов
/ 18 декабря 2018

У меня есть приведенный ниже пример XML-файла, и мне просто нужно изменить значения тега testng-results, например, передано, Не удалось, пропущено на основе значения «status» в XML

Пример ввода:

<?xml version="1.0" encoding="UTF-8"?>
  <testng-results skipped="0" failed="0" total="10" passed="10">
    <test-method status="FAIL" is-config="true" duration-ms="4"
        started-at="2018-08-16T21:43:38Z" finished-at="2018-08-16T21:43:38Z">
        <params>
            <param index="0">
                <value>                <![CDATA[org.testng.TestRunner@31c2affc]]>
                </value>
            </param>
        </params>
        <reporter-output>
        </reporter-output>
     </test-method> <!-- setParameter -->
      <test-method status="PASS" is-config="true" duration-ms="4"
        started-at="2018-08-16T21:43:38Z" finished-at="2018-08-16T21:43:38Z">
        <params>
            <param index="0">
                <value>                <![CDATA[org.testng.TestRunner@31c2affc]]>
                </value>
            </param>
        </params>
        <reporter-output>
        </reporter-output>
     </test-method> <!-- setParameter -->
      <test-method status="SKIPPED" is-config="true" duration-ms="4"
        started-at="2018-08-16T21:43:38Z" finished-at="2018-08-16T21:43:38Z">
        <params>
            <param index="0">
                <value>                <![CDATA[org.testng.TestRunner@31c2affc]]>
                </value>
            </param>
        </params>
        <reporter-output>
        </reporter-output>
     </test-method> <!-- setParameter -->
  </testng-results>

Для приведенного выше примера у нас есть один статус PASS, FAIL и SKIPPED ().Сначала нам нужно получить счетчик PASS, FAIL, SKIPPED во входном XML-файле и соответствующим образом изменить значения в теге testng-results.И выходные данные для вышеуказанного значения тега полезной нагрузки должны быть обновлены, как показано ниже:

 <testng-results skipped="1" failed="1" total="3" passed="1">

«total» - это состояние всех.

Возможно ли это сделать с помощью XSLT?

1 Ответ

0 голосов
/ 18 декабря 2018

Вы можете просто использовать:

<testng-results skipped="{count(//test-method/@status='SKIPPED')}" failed="{count(//test-method/@status='FAIL')}" total="{count(//test-method)}" passed="{count(//test-method/@status='PASS')}">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...