XSLT - новая строка / возврат каретки не отображается при развертывании (Oracle SOA 11g)

У меня есть таблица стилей XSL, которая должна преобразовывать XML в простой текст с помощью преобразования Oracle SOA 11g BPEL. Преобразование простого текста работает нормально, но всякий раз, когда я пытаюсь добавить новую строку или возврат каретки, вывод текста не отражает это. Я пробовал несколько способов добавить разрыв строки, но ни один из них не сработал. Это XSLT, который я использую для тестирования:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:a="urn:oracle:b2b:X12/V4010/850" version="1.0">

<xsl:output method="text" omit-xml-declaration="yes" indent="no"/>
<xsl:template match="/a:Transaction-850">

  <!-- New line -->
  <xsl:variable name='newline'><xsl:text>
    </xsl:text></xsl:variable>

  <xsl:value-of select="a:Internal-Properties/a:Data-Structure/a:Property[@Name='InterchangeUsageIndicator']" />

  <xsl:text>&#xd;</xsl:text>
  <xsl:value-of select="$newline" />
  <xsl:text>&#xA;</xsl:text>
  <xsl:text>&#13;</xsl:text>
  <xsl:text>&#10;</xsl:text>
  <xsl:text>2000ITITM</xsl:text>

</xsl:template>

</xsl:stylesheet>

Когда я опробую его в онлайн-инструменте тестирования XSLT, он выдаст ожидаемый результат:

P




2000ITITM

При развертывании композита я заметил, что XSLT в хранилище MDS игнорирует разрывы строк, &#xAи т. д. и просто закрывает <xsl:text/> теги:

<?xml version='1.0' encoding='UTF-8'?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:a="urn:oracle:b2b:X12/V4010/850" version="1.0">
<xsl:output method="text" omit-xml-declaration="yes" indent="no"/>
<xsl:template match="/a:Transaction-850">
  <xsl:variable name="newline">
    <xsl:text/>
  </xsl:variable>
  <xsl:value-of select="a:Internal-Properties/a:Data-Structure/a:Property[@Name='InterchangeUsageIndicator']"/>
  <xsl:text/>
  <xsl:value-of select="$newline"/>
  <xsl:text/>
  <xsl:text/>
  <xsl:text>2000ITITM</xsl:text>
</xsl:template>
</xsl:stylesheet>

И так, из-за этого, он просто дает мне следующий вывод:

P2000ITITM

Я понятия не имею, почему он игнорирует символы новой строки, поэтому любое руководство будет оценено.

Спасибо всем за помощь и время!


Изменить: я попытался объединить следующим образом:

<xsl:value-of select="concat('36','&#xA;')"/>
<xsl:value-of select="concat('24','&#xD;')"/>

... который отображается как есть, когда я смотрю на него в хранилище MDS, однако текстовый вывод по-прежнему не показывает разрывов строк...

1 ответ

Решение

Ах, я такой новичок.:s Я смог сделать это со следующим:

<xsl:variable name="newline" select="'&#xD;&#xA;'" />

Это также будет правильно отображаться в хранилище MDS.

Другие вопросы по тегам