My knowledge of XSLT is limited, so please forgive my ignorance. I am trying to create XML that has information about all failed steps across multiple execution servers. In the current setup,whenever a job is triggered, it can choose any of the available servers for execution. For each job failure that occurred during the day, an XML file is generated with details around the steps involved in execution. In the output summary XML, a step is considered failed based on the following rule:
<ERROR_CRITERIA>ALL</ERROR_CRITERIA> --- If the step fails across all the servers then it is considered failed.
<ERROR_CRITERIA>1</ERROR_CRITERIA> -- If it fails even on one server, it is considered failed. Here is my input XML
<ERROR>
<SERVER>
<SERVERID>1</SERVERID>
<ERROR_SUBID>1234</ERROR_SUBID>
<VALIDATION>
<STEP>1</STEP>
<PURPOSE>test</PURPOSE>
<ERROR_CRITERIA>ALL</ERROR_CRITERIA>
<STATUS>SUCCESS</STATUS>
<MESSAGE>SUCCESSFULLY EXECUTED</MESSAGE>
</VALIDATION>
<VALIDATION>
<STEP>2</STEP>
<PURPOSE>test</PURPOSE>
<ERROR_CRITERIA>1</ERROR_CRITERIA>
<STATUS>FAILURE</STATUS>
<MESSAGE>FAILED DUE TO NETWORK</MESSAGE>
</VALIDATION>
</SERVER>
<SERVER>
<SERVERID>2</SERVERID>
<ERROR_SUBID>8765</ERROR_SUBID>
<VALIDATION>
<STEP>1</STEP>
<PURPOSE>test1</PURPOSE>
<ERROR_CRITERIA>ALL</ERROR_CRITERIA>
<STATUS>FAILURE</STATUS>
<MESSAGE>FAILED DUE TO ABC</MESSAGE>
</VALIDATION>
<VALIDATION>
<STEP>2</STEP>
<PURPOSE>test1</PURPOSE>
<ERROR_CRITERIA>1</ERROR_CRITERIA>
<STATUS>SUCCESS</STATUS>
<MESSAGE>SUCCESSFULLY EXECUTED</MESSAGE>
</VALIDATION>
</SERVER>
<SERVER>
<SERVERID>3</SERVERID>
<ERROR_SUBID>8065</ERROR_SUBID>
<VALIDATION>
<STEP>1</STEP>
<PURPOSE>test2</PURPOSE>
<ERROR_CRITERIA>ALL</ERROR_CRITERIA>
<STATUS>FAILURE</STATUS>
<MESSAGE>FAILED DUE TO 123</MESSAGE>
</VALIDATION>
<VALIDATION>
<STEP>2</STEP>
<PURPOSE>test2</PURPOSE>
<ERROR_CRITERIA>1</ERROR_CRITERIA>
<STATUS>SUCCESS</STATUS>
<MESSAGE>SUCCESSFULLY EXECUTED</MESSAGE>
</VALIDATION>
</SERVER>
</ERROR>
I want to create XML with OUTPUT as:
<ERROR>
<VALIDATION>
<STEP>2</STEP>
<ERROR_CRITERIA>1</ERROR_CRITERIA>
<STATUS>FAILURE</STATUS>
<MESSAGE>SERVERID_1:FAILED DUE TO NETWORK.SERVER_2:SUCCESSFULLY EXECUTED.SERVER_3:SUCCESSFULLY EXECUTED</MESSAGE>
</VALIDATION>
</ERROR>
Since a job could have any number of steps, the solution needs to be dynamic to allow for any number of steps and servers.
Since I am not experienced with XSLT, I am not sure if custom business logic can be integrated. If not, I am most likely to use Python to accomplish it.
XSLT version 1.0