我想将XML文件转换为CSV但我的问题是我不知道如何选择一个动态生成父标记的标记,它可能会多次出现同名,但内容会有所不同,我的意思是每个员工可能会出现一次或多次ComponentDetails标记。 在我的情况下,staffNumber 12345 ComponentDetails出现2次,staffNumber 45555 ComponentDetails出现3次,我想从salary标签中选择值但无法识别它。我已经为标签分配了ID但是 主要的问题是,当ComponentDetails变化时,我无法弄清楚ComponentType将出现在什么位置。
我的XML文件如下:
<?xml version="1.0" encoding="UTF-8"?><root>
<PayrunDetails>
<PayrunNumber>000777</PayrunNumber>
<PaidDate>2018-05-15</PaidDate>
</PayrunDetails>
<PayLocation>
<LocationCode>ACT</LocationCode>
<LocationDescription>ACT</LocationDescription>
<CompanyDetails>
<CCode>APPLE</CCode>
<CName>APPLE Limited</CName>
<Payslip>
<StaffNumber>12345</StaffNumber>
<BankDetails>
<BankAccountNo>121212</BankAccountNo>
</BankDetails>
<PayDetails>
<PayType>NORMAL</PayType>
<AmountGross>9999</AmountGross>
<ComponentDetails ID="1">
<ComponentType>SALARY</ComponentType>
<Amount>1999</Amount>
<YTDAmount>10616</YTDAmount>
</ComponentDetails>
<ComponentDetails ID="3">
<ComponentType>TAXABLE</ComponentType>
<Amount>505</Amount>
<YTDAmount>7703</YTDAmount>
</ComponentDetails>
</PayDetails>
</Payslip>
<Payslip>
<StaffNumber>45555</StaffNumber>
<BankDetails>
<BankAccountNo>131313</BankAccountNo>
</BankDetails>
<PayDetails>
<PayType>NORMAL</PayType>
<AmountGross>9999</AmountGross>
<ComponentDetails ID="1">
<ComponentType>SALARY</ComponentType>
<Amount>1999</Amount>
<YTDAmount>10616</YTDAmount>
</ComponentDetails>
<ComponentDetails ID="2">
<ComponentType>GROSS</ComponentType>
<Amount>7305</Amount>
<YTDAmount>76703</YTDAmount>
</ComponentDetails>
<ComponentDetails ID="3">
<ComponentType>TAXABLE</ComponentType>
<Amount>305</Amount>
<YTDAmount>6703</YTDAmount>
</ComponentDetails>
</PayDetails>
</Payslip>
</CompanyDetails>
</PayLocation>
</root>
答案 0 :(得分:0)
正如我所见,ComponentDetails
元素是源XML 的一部分。
它们不是动态生成的,至少你没有发布任何XSLT
生成它们的脚本。
如果每个PayDetails
元素只包含一个ComponentDetails
,
你可以使用它的名字在XSLT中引用它。
但是因为它包含多个ComponentDetails
并且您想引用
到了工资&#34;元素仅,您可以写:
select="ComponentDetails[ComponentType='SALARY']"