Я надеялся, что смогу немного помочь с преобразованием XSLT.Кажется, я не могу понять это правильно.
Вот пример исходного XML-документа:
<?xml version="1.0" encoding="UTF-8"?>
<Locations>
<header>
<location>Location Field</location>
<job_function>Job Function Field</job_function>
<count>Count</count>
</header>
<data>
<location>2177</location>
<job_function>ADM</job_function>
<count>1</count>
</data>
<data>
<location>2177</location>
<job_function>OPS</job_function>
<count>1</count>
</data>
<data>
<location>2177</location>
<job_function>SLS</job_function>
<count>5</count>
</data>
<data>
<location>2179</location>
<job_function>ADM</job_function>
<count>1</count>
</data>
<data>
<location>2179</location>
<job_function>SEC</job_function>
<count>1</count>
</data>
</Locations>
Я хочу преобразовать его в следующий формат:
<Locations>
<data>
<PeopleSoftID>2177</PeopleSoftID>
<ADM>1</ADM>
<OPS>1</OPS>
<SLS>5</SLS>
<TotalCount>7</TotalCount>
</data>
<data>
<PeopleSoftID>2179</PeopleSoftID>
<ADM>1</ADM>
<SEC>1</SEC>
<TotalCount>2</TotalCount>
</data>
</Locations>
Итак, как видно из примера исходного документа, есть несколько элементов, которые имеют одинаковое значение.В целевом документе теперь должна быть только одна запись (<PeopleSoftID>
элемент) на значение элемента <location>
в исходном документе.Поскольку было 3 <location>
элементов со значением 2177, в целевом документе теперь есть только 1 <PeopleSoftID>
элемент, содержащий это значение.Значение элемента <job_function>
в исходном документе становится элементом в целевом документе.Значение этого нового элемента заканчивается значением родственного элемента <count>
из исходного документа.Элемент <TotalCount>
в целевом документе представляет собой сумму значений всех новых элементов, сгенерированных из исходного элемента <job_function>
.
Надеюсь, что это объяснение никого не смутило =).
Я все еще немного новичок в XSLT, поэтому у меня возникают проблемы с правильной логикой.
Я тоже могу использовать только XSLT 1.0.
Если я не предоставил достаточно информации, дайте мне знать, и я постараюсь предоставить больше, как только смогу,
Спасибо, ребята!