Я пытаюсь преобразовать файл XML в CSV, и мне помогают следующие ссылка, но попал в место, где мне нужно получить значение из родительского тега и определенного дочернего тега из XML-файла. Мой входной XML выглядит так:
<?xml version="1.0" encoding="UTF-8"?>
<Payslip>
<StaffNumber>123456</StaffNumber>
<StaffName>ALIBABA</StaffName>
<Sex/>
<PayDetails>
<PayType>NORMAL</PayType>
<AmountNet>2100</AmountNet>
<ComponentDetails>
<ComponentType>SALARY</ComponentType>
<ComponentSource/>
<Code>SAL</Code>
</ComponentDetails>
<ComponentDetails>
<ComponentType>DED</ComponentType>
<ComponentSource/>
<Code>DEN</Code>
</ComponentDetails>
</PayDetails>
<LeaveTaken>
<StartDate/>
<EndDate/>
<Balance>0</Balance>
</LeaveTaken>
</Payslip>
Мой xsl-файл выглядит так, пожалуйста, обратите внимание, что я указал несколько жестко закодированных значений для некоторых других требований.
Я новичок в XSLT, поэтому извините за возможный вопрос новичка. Любое руководство будет оценено здесь. Заранее спасибо.
стиль.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="/"> Worker,Pay_Group,Pay_Period_End_Date,Payment_Date,Net_Amount,Gross_Amount,Currency,Ck_Number,Display_Date
<xsl:for-each select="//Payslip">
<xsl:value-of select="concat(StaffNumber,',','PAY_GROUP',',','2017-09-24-00:00',',','2017-09-27-00:00',',',AmountNet,',','AmountGross',',','AUD',',','393',',','SLP000393_',StaffNumber,'.pdf',',','
')"/>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
В приведенном выше коде, если я использую
<xsl:for-each select="//Payslip">
то я получаю только поля StaffNumber и staffName, но если я использую
<xsl:for-each select="//Payslip//PayDetails">
для получения значения из тега AmountNet, то ему не удается получить значение из тега StaffNumber.