Мне был назначен новый проект, чтобы использовать таблицу стилей XSLT для преобразования одного XML-документа в другой формат XML.XSLT для XML-XML quandary
Я провел последние четыре часа, пробираясь через архивы на StackOverflow и в другом месте в Интернете, чтобы попытаться выяснить, как достичь желаемых результатов, но я ничего не могу найти, указывая на правильное направление.
Вот оригинальный формат документа:
<?xml version="1.0"?>
<PODOrderSheet_Main>
<estimate>
<customer>LINFNC</customer>
<jobType>5020</jobType>
<JobParts>
<JobPart>
<jobPart>01</jobPart>
<contactNum/>
<JobNotes>
<JobNote>
<department>001</department>
<jobPart>01</jobPart>
<note><![CDATA[Rush Order]]></note>
</JobNote>
</JobNotes>
</JobPart>
</JobParts>
</estimate>
<estimate>
<customer>LINFNC</customer>
<jobType>5020</jobType>
<JobParts>
<JobPart>
<jobPart>01</jobPart>
<contactNum/>
<JobNotes>
<JobNote>
<department>001</department>
<jobPart>01</jobPart>
<note><![CDATA[Rush Order]]></note>
</JobNote>
</JobNotes>
</JobPart>
</JobParts>
</estimate>
<estimate>
<customer>LINFNC</customer>
<jobType>5020</jobType>
<JobParts>
<JobPart>
<jobPart>01</jobPart>
<contactNum/>
<JobNotes>
<JobNote>
<department>001</department>
<jobPart>01</jobPart>
<note><![CDATA[Rush Order]]></note>
</JobNote>
</JobNotes>
</JobPart>
</JobParts>
</estimate>
</PODOrderSheet_Main>
А вот как это должно выглядеть:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE estimate>
<estimate>
<customer>LINFNC</customer>
<jobType>5020</jobType>
<JobParts>
<JobPart>
<jobPart>01</jobPart>
<contactNum/>
<JobNotes>
<JobNote>
<department>001</department>
<jobPart>01</jobPart>
<note><![CDATA[Rush Order]]></note>
</JobNote>
</JobNotes>
</JobPart>
<JobPart>
<jobPart>02</jobPart>
<contactNum/>
<JobNotes>
<JobNote>
<department>001</department>
<jobPart>02</jobPart>
<note><![CDATA[Rush Order]]></note>
</JobNote>
</JobNotes>
</JobPart>
<JobPart>
<jobPart>03</jobPart>
<contactNum/>
<JobNotes>
<JobNote>
<department>001</department>
<jobPart>03</jobPart>
<note><![CDATA[Rush Order]]></note>
</JobNote>
</JobNotes>
</JobPart>
</JobParts>
</estimate>
Я могу скопировать все элементы без каких-либо проблем. Где я застрял в том, что мне нужно только первое появление элементов customer
и jobType
, но все входящие JobParts
из нескольких блоков estimate
нумеруются правильно в порядке их падения в элементе jobPart
.
Я был бы очень признателен, если бы кто-нибудь мог указать мне в правильном направлении на этот проект, так как я никуда не денусь.
Это пример группировки проблемы, поэтому не должно быть слишком трудно решить. Используете ли вы XSLT1.0 или XSLT2.0, так как это имеет значение для решения проблемы? Кроме того, чтобы быть понятным, может ли клиент иметь разные элементы «jobType»? В таком случае, хотите ли вы, чтобы они группировались отдельно или вместе в одной группе? Благодаря! –
Пример ввода не соответствует выходному. Например. на вашем входе нет '' и т. д. –
Привет Тим. Спасибо за ответ. Это XSLT 1.0, и элемент jobType всегда будет тем, который был собран из первого блока оценки. –