Как сравнить два узла XML и получить результат сравнения с помощью XSLT? [закрыто]
Файл XML в качестве входных данных и ожидаемого вывода показан ниже. Можете сослаться на ссылку ...
Сравнение значений узлов XSLT
Я ищу вывод в xml, но было бы здорово, если бы кто-нибудь сделал файл xslt, который дает / показывает результат в табличном формате.
Описание: XML-файл содержит набор узлов операторской станции, при этом каждая операторская станция имеет несколько сетей, теперь собирает IP-адрес от каждого узла каждой операторской станции и показывает его значение и сравнивает статус с каждой операторской станцией, как показано ниже. Если IP-адрес каждой сети операторской станции равен, то он показывает статус как равный, иначе неравный Сравнение должно быть сделано с IP-адресом с учетом фамилии и имени. Подобно сравнению IP-адреса OS01 с другими ОС, имеющими такое же семейство (NetworkSettings) и Имя (Сеть A).
XML-файл в качестве входных данных
![<?xml version="1.0" encoding="utf-8"?>
<OperatorStationCollection xmlns="http://www.w3.org" >
<OperatorStation xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Name>KM-OS001</Name>
<Nodes>
<DataNodeBase xsi:type="Adaptor">
<Family>NetworkSettings</Family>
<Name>Network A</Name>
<IPAddress>111.11.11.1</IPAddress>
</DataNodeBase>
<DataNodeBase xsi:type="Adaptor">
<Family>NetworkSettings</Family>
<Name>Network B</Name>
<IPAddress>111.22.11.1</IPAddress>
</DataNodeBase>
<DataNodeBase xsi:type="Adaptor">
<Family>NetworkSettings</Family>
<Name>Network C</Name>
<IPAddress>111.33.11.1</IPAddress>
</DataNodeBase>
</Nodes>
</OperatorStation>
<OperatorStation xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Name>KM-OS002</Name>
<Nodes>
<DataNodeBase xsi:type="Adaptor">
<Family>NetworkSettings</Family>
<Name>Network A</Name>
<IPAddress>111.11.11.1</IPAddress>
</DataNodeBase>
<DataNodeBase xsi:type="Adaptor">
<Family>NetworkSettings</Family>
<Name>Network B</Name>
<IPAddress>111.22.11.2</IPAddress>
</DataNodeBase>
<DataNodeBase xsi:type="Adaptor">
<Family>NetworkSettings</Family>
<Name>Network D</Name>
<IPAddress>111.33.11.2</IPAddress>
</DataNodeBase>
</Nodes>
</OperatorStation>
<OperatorStation xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Name>KM-OS003</Name>
<Nodes>
<DataNodeBase xsi:type="Adaptor">
<Family>NetworkSettings</Family>
<Name>Network A</Name>
<IPAddress>111.11.11.1</IPAddress>
</DataNodeBase>
<DataNodeBase xsi:type="Adaptor">
<Family>NetworkSettings</Family>
<Name>Network B</Name>
<IPAddress>111.22.11.3</IPAddress>
</DataNodeBase>
<DataNodeBase xsi:type="Adaptor">
<Family>NetworkSettings</Family>
<Name>Network E</Name>
<IPAddress>111.33.11.3</IPAddress>
</DataNodeBase>
</Nodes>
</OperatorStation>
</OperatorStationCollection>
Ожидаемый результат.
Ожидаемый вывод с использованием XSLT: здесь нет возможности добавить таблицу, поэтому рассмотрите <> как разделитель, который используется для разработки таблицы, <> не является частью результата, он просто добавляется к отдельным значениям столбца. Пожалуйста, рассмотрите приведенный ниже результат, как в таблице.
заголовокИмя <> Статус <> OS01 <> OS02 <> OS03
Сеть A <> Равная <> 111.11.11.1 <> 111.11.11.1 <> 111.11.11.1
Сеть B <> Неравная <> 111.22.11.1 <> 111.22.11.2 <> 111.22.11.2
Сеть C <> Неравная <> 111.33.11.1 <> Не существует <> Не существует
Сеть D <> Неравная <> Не существует <> 111.33.11.2 <> Не существует
Сеть E <> Неравный <> Не существует <> Не существует <> 111.33.11.3
ИЛИ Код ниже показывает ожидаемый результат в табличном формате. Сохраните ниже код fileName.html.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
</head>
<body>
<table>
<tr>
<td>Name</td><td>Status</td><td>OS01</td><td>OS02</td><td>OS03</td>
</tr>
<tr>
<td>Network A</td><td>Equal</td><td>111.11.11.1</td><td>111.11.11.1</td><td>111.11.11.1</td>
</tr>
<tr>
<td>Network B</td><td>Unequal</td><td>111.22.11.1</td><td>111.22.11.2</td><td>111.22.11.2</td>
</tr>
<tr>
<td>Network C</td><td>Unequal</td><td>111.33.11.1</td><td>Not Exist</td><td>Not Exist</td>
</tr>
<tr>
<td>Network D</td><td>Unequal</td><td>Not Exist</td><td>111.33.11.2</td><td>Not Exist</td>
</tr>
<tr>
<td>Network E</td><td>Unequal</td><td>Not Exist</td><td>Not Exist</td><td>111.33.11.3</td>
</tr>
</table>
</body>
</html>