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

У меня есть следующее XML-сообщение, которое мне нужно в парах имя / значение, и мне нужно заполнить определенные значения только в том случае, если в атрибуте name тега extendedDataElements присутствует значение «Payment». Если значение равно «Оплата», то:

  • Создается новое имя / пара с именем Status в качестве имени, а значением являются данные, которые находятся в situQualifier
  • Затем в полеQualifier добавляется некоторое статическое значение, которое я буду жестко кодировать
  • Тег количества в имени / значении затем изменяется на trnAmount с соответствующим значением.

Если значение атрибута name отличается от «Payment», то оно просто возвращается к базовому преобразованию «element_attribute = value». Я выполнил базовое преобразование для получения пар имя-значение, но у меня возникли большие проблемы с условным шагом для применения этих модификаций на основе этого значения 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 Ответ

0 голосов
/ 22 октября 2011

Вы пытались определить шаблон, подобный приведенному ниже, для определения пользовательской обработки данных? Я думаю, что это должно справиться с этим делом отлично. Это декларативный способ решения проблемы.

<xsl:template match="extendedDataElements[@name='Payment']">

</xsl:template>    
...