Xml 如何选择使用XSLT动态生成的标记的值
我想将XML文件转换为CSV,但我的问题是,我不知道如何选择一个标记,该标记的父标记是动态生成的,它可能会多次使用相同的名称,但其内容不同,我的意思是ComponentDetails标记可能会为每个员工显示一次或多次。 在我的例子中,staffNumber 12345 ComponentDetails显示2次,staffNumber 45555 ComponentDetails显示3次,我想从工资标签中选择值,但无法识别它。我已将ID分配给标记,但 主要问题是,由于ComponentDetails不同,所以我无法确定哪个ComponentType将出现在哪个位置 我的XML文件如下所示:Xml 如何选择使用XSLT动态生成的标记的值,xml,xslt,Xml,Xslt,我想将XML文件转换为CSV,但我的问题是,我不知道如何选择一个标记,该标记的父标记是动态生成的,它可能会多次使用相同的名称,但其内容不同,我的意思是ComponentDetails标记可能会为每个员工显示一次或多次。 在我的例子中,staffNumber 12345 ComponentDetails显示2次,staffNumber 45555 ComponentDetails显示3次,我想从工资标签中选择值,但无法识别它。我已将ID分配给标记,但 主要问题是,由于ComponentDetail
<?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>
000777
2018-05-15
表演
表演
苹果
苹果有限公司
12345
121212
正常的
9999
薪水
1999
10616
应纳税的
505
7703
45555
131313
正常的
9999
薪水
1999
10616
粗俗的
7305
76703
应纳税的
305
6703
如我所见,组件详细信息
元素是源XML的一部分。
它们不是动态生成的,至少您没有发布任何XSLT
生成它们的脚本
如果每个PayDetails
元素仅包含一个ComponentDetails
,
您可以在XSLT中仅使用它的名称来引用它
但由于它包含多个组件详细信息
,并且您希望引用
对于“工资”元素仅,您可以写:
select="ComponentDetails[ComponentType='SALARY']"
嗨,瓦迪欧波,我不知道;我没有XML的来源,我的任务是从XML文件中提取一些细节,并将其转换为CSV格式,因此,在将文件转换为CSV的过程中,如果发现少量标记多次出现,并且包含不同的信息,在我的例子中,ComponentDetails已经出现过多次,在这里面有一个子标记ComponentType包含与ComponentDetails相关的信息,但我不知道如何选择此字段。我可以做一件事来解决这个问题,如果我将金额YTDAmount放入ComponentDetails标记中,但我不知道如何更改XML文件的标记范围。