Я хочу преобразовать XML-файл в CSV и выбрать какое-либо значение из тега, который уже существует с тем же именем:
Пример содержимого файла XML:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<PayrunDetails>
<PayrunNumber>000777</PayrunNumber>
</PayrunDetails>
<PayLocation>
<LocationCode>ACT</LocationCode>
<LocationDescription>ACT</LocationDescription>
<CompanyDetails>
<CName>APPLE Limited</CName>
<Payslip>
<StaffNumber>12345</StaffNumber>
<PayDetails>
<AmountGross>9999</AmountGross>
<ComponentDetails>
<ComponentType ID="SALARY">
<Amount>1999</Amount>
<YTDAmount>10616</YTDAmount>
</ComponentType>
</ComponentDetails>
<ComponentDetails>
<ComponentType ID="TAX">
<Amount>7305</Amount>
<YTDAmount>76703</YTDAmount>
</ComponentType>
</ComponentDetails>
</PayDetails>
</Payslip>
</CompanyDetails>
</PayLocation>
</root>
В приведенном выше XML-файле вы можете увидеть ComponentType с идентификатором 'SALARY', поэтому я проверяю его с помощью условия if, но во время выбора значения 'Amount' он выбирает значение из идентификатора ComponentType 'SALARY.', а также из' TAX '.
Мой XSL-файл:
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" >
<xsl:output method="text" omit-xml-declaration="yes" indent="no"/>
<xsl:template match="/">
<xsl:text> Amount 
</xsl:text>
<xsl:for-each select="root">
<xsl:for-each select="//Payslip">
<xsl:if test="PayDetails/ComponentDetails/ComponentType/@ID='SALARY'">
<xsl:apply-templates select="PayDetails/ComponentDetails/ComponentType/Amount"/>
</xsl:if>
<xsl:text>
</xsl:text>
</xsl:for-each>
</xsl:for-each>
</xsl:template>
<xsl:template match="*[contains(., ',')]">
<xsl:text>"</xsl:text>
<xsl:value-of select="." />
<xsl:text>"</xsl:text>
</xsl:template>
</xsl:stylesheet>
В приведенном выше xsl-коде я использую условие' if 'для проверки ComponentType= 'SALARY', и если он совпадает с именем тега, он выберет значение из своего подтега 'salary, но мне не удалось выбрать только тег зарплаты для ComponentType =' SALARY.Он выбирает все существующие значения с именем «зарплата» в файле XML.Пожалуйста, помогите мне выйти из проблемы и скажите, как выбрать определенный тег в xsl.