красиво печатать XML в кристаллических отчетах

У меня есть кристаллический отчет, который включает некоторые данные XML. Эта строка XML хранится в столбце базы данных (Oracle 10g). Прямо сейчас отчет просто отображает всю строку в одном большом уродливом беспорядке. Есть ли какой-нибудь хороший способ распечатать xml (разместить теги в отдельных строках, возможно, вложить вложенные теги с отступом) или даже отформатировать xml, как и другие данные в отчете?

Моя текущая лучшая идея (где лучшее не означает хорошего) - просто заменить строку везде, где я вижу> ‹, чтобы по крайней мере каждый тег был в отдельной строке.

Что было бы замечательно, так это способ передать эту XML-строку во вложенный отчет и использовать этот XML-файл в качестве источника данных. Что было бы почти так же хорошо для моих целей, это была бы функция prettyprintXML где-нибудь в кристалле, которая просто красиво форматировала бы необработанный xml. У меня есть доступ к Crystal 11. Спасибо.

РЕДАКТИРОВАТЬ - я ценю помощь до сих пор, но я уже знаю 37 различных способов сделать это за пределами Crystal. Я ищу решение, которое работает в самом инструменте проектирования Crystal Reports.


person Peter Recore    schedule 25.09.2009    source источник


Ответы (2)


Если вы используете это на веб-странице, я считаю, что вы сможете отформатировать его с помощью файла css. Но вместо этого вы также можете использовать XSLT вне Crystal Reports. Ниже приведены ссылки, которые могут помочь.

Ссылка для отображения XML с помощью CSS

Ссылка на css с вопросом отчетов о кристаллах на SO

Ссылка на пример XSLT вместо Crystal Reports

person Dusty    schedule 25.09.2009
comment
Мне это нужно, чтобы работать с самими кристаллическими отчетами. Отчет включает данные из других таблиц / столбцов, не являющихся xml. Если бы я делал это вне кристалла, было бы тривиально просто проанализировать xml и делать с ним все, что я хочу. но в этом случае явной целью является создание криптографического отчета. - person Peter Recore; 26.09.2009

Отправьте результат XML с помощью XSLT преобразования идентичности с атрибутом output indent, установленным на yes.
Будет выведено то же содержимое, но "красиво напечатано"

<xsl:stylesheet version="1.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>

<xsl:template match="node() | @*">
   <xsl:copy>
      <xsl:apply-templates select="@*|node()"/>
   </xsl:copy>
</xsl:template>

</xsl:stylesheet>
person Mads Hansen    schedule 28.09.2009
comment
Как выполнить XSL-преобразование строки из Crystal? Чтобы прояснить, мой вопрос не только в том, как красиво печатать XML - я мог бы сделать это, стоя на голове, если бы не было других ограничений. Это затрудняет то, что я пытаюсь сделать это из Crystal Reports. - person Peter Recore; 28.09.2009