Как выбрать значение тега, который генерируется динамически с использованием XSLT - PullRequest
0 голосов
/ 26 мая 2018

Я хочу преобразовать файл XML в CSV, но моя проблема в том, что я не знаю, как выбрать тег, родительский тег которого генерируется динамически, и он может встречаться несколько раз с одним и тем же именем, но его содержание меняется,Я имею в виду, что тег ComponentDetails может появляться для каждого сотрудника один или несколько раз.В моем случае для staffNumber 12345 ComponentDetails появляются 2 раза, а для staffNumber 45555 ComponentDetails 3 раза, и я хочу выбрать значение из тега зарплаты, но не могу его идентифицировать.Я присвоил тэгу идентификатор, но основная проблема заключается в том, что, поскольку 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>

1 Ответ

0 голосов
/ 27 мая 2018

Как я вижу, ComponentDetails элементы являются частью вашего исходного XML .Они не генерируются динамически, по крайней мере, вы не опубликовали ни один сценарий XSLT, который их сгенерировал.

Если каждый элемент PayDetails содержал только один ComponentDetails, вы можете ссылаться на него в XSLT, используя только егоname.

Но так как он содержит несколько ComponentDetails и вы хотите сослаться на элемент "salary" only , вы можете написать:

select="ComponentDetails[ComponentType='SALARY']"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...