У меня следующая проблема:
<?xml version="1.0" standalone="yes"?>
<NewDataSet>
<Measurements>
<StructurePath>200-2131</StructurePath>
<MeasurementName>Visual</MeasurementName>
<StatusName>Pass</StatusName>
<P_DateTime>26/01/2020 13:08:51</P_DateTime>
</Measurements>
<Measurements>
<StructurePath>200-2131</StructurePath>
<MeasurementName>R iso</MeasurementName>
<StatusName>Pass</StatusName>
<P_DateTime>26.01.2020 13:08:56</P_DateTime>
<R_Um>525 V</R_Um>
<R_RISO_S_PAT>>199.9 MOhm</R_RISO_S_PAT>
<L_48_Limit_L_RISO_S_EE>2.00 MOhm</L_48_Limit_L_RISO_S_EE>
<P_Instrument_ID>AOAB</P_Instrument_ID>
<P_FW_ID>1.6.10</P_FW_ID>
<P_Uiso_INST_EE>500 V</P_Uiso_INST_EE>
<P_test_time_2>3 s</P_test_time_2>
<P_Type_Riso_EE>Riso-S</P_Type_Riso_EE>
</Measurements>
<Measurements>
<StructurePath>200-2131</StructurePath>
<MeasurementName>Touch Leakage</MeasurementName>
<StatusName>Pass</StatusName>
<P_DateTime>26.01.2020 13:09:28</P_DateTime>
<R_P>1.59 kW</R_P>
<R_TouchLeakage_I>0.001 mA</R_TouchLeakage_I>
<L_57_Limit_H_Touch_EE>0.50 mA</L_57_Limit_H_Touch_EE>
<P_Instrument_ID>AOAB</P_Instrument_ID>
<P_FW_ID>1.6.10</P_FW_ID>
<P_test_time_2>10 s</P_test_time_2>
<P_Leakage_change_status>YES</P_Leakage_change_status>
<P_ChangeTime>5 s</P_ChangeTime>
</Measurements>
<Measurements>
<StructurePath>200-2131</StructurePath>
<MeasurementName>Functional</MeasurementName>
<StatusName>Pass</StatusName>
<P_DateTime>26/01/2020 13:09:43</P_DateTime>
</Measurements>
</NewDataSet>
В этом наборе данных всегда присутствуют 4 значения: Structurepath MeasurementName StatusName P_DateTime
Я хочу, чтобы XSLT создал следующее:
<Data>
<Object Type="_MetrelValues" Action="InsertOrSkip">
<Property Name="Equipment" Value="200-2131"/>
<Property Name="MeasurementPoint" Value="METRELMI3360"/>
<Property Name="Date" Value="26/01/2020 13:08:51"/>
<Property Name="Name" Value="Visual"/>
<Property Name="MeasureStatus" Value="Pass"/>
<Property Name="ConcatValues" Value="Values of the other attributes"/>
</Object>
</Data>
Поскольку другие атрибуты являются полупостоянными, имена атрибутов не являются стандартными или одинаковыми для каждого измерения. Я хочу выбрать атрибуты, которые повторно создаются и объединить другие значения в 1 поле. Я просто не могу заставить его работать.
Это XSLT, который я создал до сих пор:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl">
<xsl:output method="xml" encoding="UTF-8" indent="yes"/>
<xsl:template match="*">
<Data>
<xsl:for-each select="Measurements">
<Object Type="_MetrelValues" Action="InsertOrSkip">
<Property Name="Equipment" Value="{StructurePath}"/>
<Property Name="MeasurementPoint" Value="METRELMI3360"/>
<Property Name="Date" Value="{P_DateTime}"/>
<Property Name="Name" Value="{MeasurementName}"/>
<Property Name="MeasureStatus" Value="{StatusName}"/>
<Property Name="TestTime" Value="{P_test_time_2}"/>
<Property Name="ChangeTime" Value="{P_ChangeTime}"/>
<Property Name="Um" Value="{R_Um}"/>
<Property Name="RisoSPat" Value="{R_RISO_S_PAT}"/>
<Property Name="LimitRisoS" Value="{L_48_Limit_L_RISO_S_EE}"/>
<Property Name="InstEe" Value="{P_Uiso_INST_EE}"/>
<Property Name="EisoEE" Value="{P_Type_Riso_EE}"/>
<Property Name="RP" Value="{R_P}"/>
<Property Name="TouchLeakage" Value="{R_TouchLeakage_I}"/>
<Property Name="LimitTouch" Value="{L_57_Limit_H_Touch_EE}"/>
</Object>
</xsl:for-each>
</Data>
</xsl:template>
</xsl:stylesheet>