Wie vergleiche ich zwei XML-Knoten und erhalte ein Vergleichsergebnis mit XSLT? [geschlossen]
XML-Datei als Eingabe und erwartete Ausgabe siehe unten. Kann Link referieren ...
XSLT-Knotenwertvergleich
Ich suche nach einer Ausgabe in XML, aber es wäre großartig, wenn jemand eine XSLT-Datei erstellen würde, die ein tabellarisches Ergebnis liefert / anzeigt.
Beschreibung: Die XML-Datei enthält eine Sammlung von Operator-Station-Knoten. Jede Operator-Station verfügt über mehrere Netzwerke. Sie erfasst nun die IP-Adresse von jedem Knoten jeder Operator-Station und zeigt deren Wert und den Vergleichsstatus mit jeder Operator-Station an (siehe unten). Wenn die IP-Adresse jedes Operator-Station-Netzwerks gleich ist, wird der Status Gleich angezeigt, ansonsten Ungleich. Der Vergleich sollte mit IPAddress unter Angabe von Name und Familie erfolgen. Vergleichen Sie IPAddress von OS01 mit anderen Betriebssystemen mit derselben Familie (NetworkSettings) und demselben Namen (Network A).
XML-Datei als Eingabe
![<?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>
Erwartete Ausgabe.
Erwartete Ausgabe mit XSLT: Hier gibt es keine Option zum Hinzufügen einer Tabelle. Betrachten Sie daher <> als Trennzeichen, das zum Entwerfen einer Tabelle verwendet wird. <> Ist nicht Teil des Ergebnisses und wird nur zum Trennen von Spaltenwerten hinzugefügt. Bitte beachten Sie das folgende Ergebnis, da es in der Tabelle steht.
HeaderName <> Status <> OS01 <> OS02 <> OS03
Netzwerk A <> Gleich <> 111.11.11.1 <> 111.11.11.1 <> 111.11.11.1
Netzwerk B <> Ungleich <> 111.22.11.1 <> 111.22.11.2 <> 111.22.11.2
Netzwerk C <> Ungleich <> 111.33.11.1 <> Nicht vorhanden <> Nicht vorhanden
Netzwerk D <> Ungleich <> Nicht vorhanden <> 111.33.11.2 <> Nicht vorhanden
Netzwerk E <> Ungleich <> Nicht vorhanden <> Nicht vorhanden <> 111.33.11.3
Der folgende ODER-Code zeigt das erwartete Ergebnis in Tabellenform. Speichern Sie unter dem Code 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>