#xml #templates #xslt #xslt-1.0
#xml #шаблоны #xslt #xslt-1.0
Вопрос:
У меня есть следующее XML-сообщение, которое мне нужно в парах имя / значение, и мне нужно заполнить определенные значения, только если в атрибуте name тега extendedDataElements присутствует значение «Оплата». Если значение равно «Оплата», то:
- Создается новое имя / пара со статусом в качестве имени и значением, являющимся данными, которые находятся в situationQualifier
- Затем situationQualifier заполняется некоторым статическим значением, которое я буду жестко кодировать
- Затем тег amount в имени / значении изменяется на trnAmount с соответствующим значением.
Если значение атрибута name отличается от «Payment», то он просто возвращается к базовому преобразованию «element_attribute=value,». Я выполнил базовое преобразование, чтобы перейти к парам значений name, но у меня возникли большие проблемы с условным шагом для применения этих изменений на основе этого значения extendedDataElements.
Спасибо за любую помощь.
XML
<cbe:CommonBaseEvent>
<sourceComponentId component="28591" />
<situationInformation extensionName="Payment">
<extendedDataElements name="Payment">
<children name="amount">
<values>100</values>
</children>
</extendedDataElements>
<situationType situationQualifier="PaymentCompletionReceived" reasoningScope="INFO"/>
</situationInformation>
</cbe:CommonBaseEvent>
Желаемый результат:
sourceComponentId_component=28591, extendedDataElements_name=Channel, trnAmount=100, Status=PaymentCompletionReceived, situationType_situationQualifier=StaticValueHere, situationType_reasoningScope=INFO
Ответ №1:
Вы пытались определить шаблон, подобный приведенному ниже, для определения пользовательской обработки данных? Я думаю, что он должен идеально справиться с этим случаем. Это декларативный способ решения проблемы.
<xsl:template match="extendedDataElements[@name='Payment']">
</xsl:template>