Использование тегов XSLT 2.0 в Crystal Reports 2008 - PullRequest
2 голосов
/ 18 марта 2011

В рамках рабочей задачи я рассматриваю экспорт простого списка деталей из отчета Crystal Report в отдельные XML-файлы, по одному для каждой строки.

Список является основной информацией о сотруднике, т. Е. Имя, фамилия и т. Д.

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

Однако я пытаюсь использовать команду xsl: result-document, но Crystal Reports, похоже, это не нравится. Мой XSLT-файл отлично работает в SAXON и разбивает xml на отдельные файлы, но Crystal полностью игнорирует все, что находится внутри тега, и просто отображает информацию заголовка.

У кого-нибудь еще была подобная проблема?

Мне известно, что тег result-document был доступен в XSLT 2.0, поэтому я был бы прав, предполагая, что процессор в Crystal Reports 2008 работает только с XSLT 1.0? Если да, есть ли способ заставить его работать с XSLT 2.0?

Спасибо за ваше время, Бен

Ниже мой XSLT-файл:

<?xml version='1.0' ?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:b="urn:crystal-reports:schemas:report-detail">

  <xsl:template match="/b:CrystalReport">
    <Report>
      <xsl:for-each select="b:Details">
        <xsl:variable name="empnumber" select="b:Section/b:Field[@Name='EmployeeNumber1']/b:Value"/>
        <xsl:result-document href="{$empnumber}.xml">
          <Employee>
            <xsl:attribute name="ID">
              <xsl:value-of select="b:Section/b:Field[@Name='EmployeeNumber1']/b:Value"/>
            </xsl:attribute>
            <FirstName>
              <xsl:value-of select="b:Section/b:Field[@Name='FirstName1']/b:Value"/>
            </FirstName>

            <Surname>
              <xsl:value-of select="b:Section/b:Field[@Name='Surname1']/b:Value"/>
            </Surname>

            <Test>
              <xsl:value-of select="$empnumber" />
            </Test>

          </Employee>
        </xsl:result-document>
      </xsl:for-each>
    </Report>
  </xsl:template>
</xsl:stylesheet>

1 Ответ

1 голос
/ 18 марта 2011

так я был бы прав в угадывании процессор только в Crystal Reports 2008 работает с XSLT 1.0? Если так, то есть как я могу заставить его работать с XSLT 2,0

Краткий ответ: нет. Однако некоторые продукты позволяют подключаться к сторонним процессорам. Я не знаю об этой опции для Crystal Reports, хотя. Кроме того, result-document является достаточно сложной инструкцией, которую нелегко пропустить через функции расширения.

Подумайте об этом подробнее: разве вы не используете .NET для преобразования? Из коробки .NET поддерживает только XSLT 1.0 (несмотря на прошлые обещания в противном случае). Потому что может сделать - экспортировать XML из Crystal Reports и преобразовать его с помощью процессора XSLT 2.0. Saxon был портирован на .NET с использованием IKVM.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...