Я использую XSLT для создания CSV-файла из XML-файла.Строка Манипуляция с использованием XSLT
В настоящее время мой файл XML выглядит
<VWSRecipeFile>
<PDCScaling User="" Version="1.0" Description="PDCTesting" LastChange="41984.7673783102">
<Values>
<Ch1_MLC_Application_GVLPDC_PDC_Body_Sca_GrossWeightTopFlash_Set Item="Upper flash_set" Unit="kg" Type="4" Hex="00000000" Value="0"/>
<Ch1_MLC_Application_GVLPDC_PDC_Body_Sca_GrossWeightTopFlash_Act Item="Upper flash_act" Unit="kg" Type="4" Hex="00000000" Value="0"/>
<Ch1_MLC_Application_GVLPDC_PDC_Body_Sca_GrossWeightTopFlash_TolUpp Item="Upper flash_max" Unit="kg" Type="4" Hex="00000000" Value="0"/>
</Values>
</PDCScaling>
</VWSRecipeFile>
И мой XSLT выглядит
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text" indent="no"/>
<xsl:template match="/VWSRecipeFile">
<xsl:for-each select="PDCScaling/Values/*">
<xsl:value-of select="concat(@Item,';')" />
</xsl:for-each>
<xsl:text>
</xsl:text>
<xsl:for-each select="PDCScaling/Values/*">
<xsl:value-of select="concat(@Unit,';')" />
</xsl:for-each>
<xsl:text>
</xsl:text>
<xsl:for-each select="PDCScaling/Values/*">
<xsl:value-of select="concat(@Value,';')" />
</xsl:for-each>
<xsl:text>
</xsl:text>
</xsl:template>
</xsl:stylesheet>
Теперь есть изменения в XML-файле, и это выглядит как
<VWSRecipeFile>
<PDCScaling User="" Version="1.0" Description="PDCTesting" LastChange="41984.7673783102">
<Values>
<Ch1_MLC_Application_GVLPDC_PDC_Body_Sca_GrossWeightTopFlash_Set Item="Upper flash_set_kg" Type="4" Hex="00000000" Value="0"/>
<Ch1_MLC_Application_GVLPDC_PDC_Body_Sca_GrossWeightTopFlash_Act Item="Upper flash_act_kg" Type="4" Hex="00000000" Value="0"/>
<Ch1_MLC_Application_GVLPDC_PDC_Body_Sca_GrossWeightTopFlash_TolUpp Item="Upper flash_max_kg" Type="4" Hex="00000000" Value="0"/>
</Values>
</PDCScaling>
</VWSRecipeFile>
Что изменилось в , в текущем файле «Item» и «Unit» объединяются и передаются как «Item_unit». Я хочу создать тот же результат, что и раньше. Для чего перед созданием CSV мне нужно разбить «Item» на «Item» и «Unit», а затем создать CSV. Может ли кто-нибудь сказать мне эффективный способ сделать это. Любая помощь приветствуется
* «дается как„Item_unit“*» В вашем примере, вы показываете «it_em_unit», т.е. символом _ не только разделяет элемент и единицу, но также может отображаться в имени элемента. Это верно? –
Да, но «_» также присутствовал в предыдущем значении «item». В новом сценарии «Item» и «Unit» сгруппированы/объединены с помощью «_» – akshat
Ну, это не умное изменение. Он вводит излишнюю сложность и создает больше возможностей для ошибок. В любом случае, Том дал вам ответ ниже. –