XmlListener обеспечивает вывод отчета приложения, по умолчанию реализованный через ListenerType 4 (XML-вывод ). Свойства включают многочисленные установки, вы можете использовать их, чтобы настраивать XML-схемы, чтобы настраивать вывод для других целей. Например, если вы посылаете ваш отчет XML другому приложению, для импорта в базу данных, Вы можете не нуждаться в верхнем и нижнем колонтитулах в отчете. Эти части отчета предоставляются в промежутках, основанных на физическом размере страницы отчета, и не могут связываться непосредственно со строками данных в отчете.
VFP Report XML включает данные, описывающие отчет или название файлового формата информации ( frx или lbx таблица), а также установочные параметры прогона REPORT FORM, установок принтера, открытия таблиц и связей. Эта секция XML структуры известна как VFP-RDL, или Visual FoxPro Report Definition Language. Схема элементов для этих пунктов отличается от элементов сгенерированных для выражений времени выполнения программы, линий и остальных элементов управления отчетом как Report Engine предоставляет каждую запись в течение REPORT FORM команд.
Более полную информацию о VFP Reporting XML схеме, смотрите Using VFP Report Output XML.
Категория | Составление отчетов |
---|---|
Default Catalog |
Visual FoxPro Catalog\Foundation Classes\Output\Report Listeners |
Class |
XmlListener |
Base Class |
ReportListener |
Class Library |
_REPORTLISTENER.vcx |
Parent Class |
UtilityReportListener (ReportListener Utility and File-handling Foundation Class) |
XmlListener и Report Continuation
XmlListener использует ключевое слово NOPAGEEJECT в командах REPORT FORM , выполненных в последовательности,так что один VFP отчет документа XML может включать информацию о многочисленных запусках отчетов.
Искомое ключевое слово NOPAGEEJECT доступно только из программ (Не будет эффекта , если Вы вызываете команду REPORT FORM в коммандном окне). Вы должны использовать свойство в noPageEject в XmlListener,а не стандартное ключевое слово, если Вы хотите интерактивно попроблвать эту способность.
![]() |
---|
You must observe the same constraints when applying continuation to XML generation as you would use when printing. You are responsible to issue a final REPORT FORM without a NOPAGEEJECT clause to tell XmlListener to stop writing to the file, just as you would need the final REPORT FORM command to close the print queue. Тем не менее, если Вы забудете сделать это, Destroy метод класса закончит работу выхода и закроет файл. |
XmlListener handles the REPORT FORM command's RANGE clause. However, in report documents containing multiple reports through use of the continuation feature, it only handles RANGE if you do not also use the NORESET clause.
XmlListener's XML Generation Process
XmlListener использует смешанные методы достижения XML результатов. Класс Visual FoxPro XMLAdapter обеспечивает часть схемы, которая описывает FRX и описывает премя прогона метаданных (the VFP-RDL). Он также использует объекты MSXML, чтобы усилить узлы VFP-RDL. Класс генерирует данные схемы, используя "raw" метод, который посылает данные низкоуровным файловым функциям Visual FoxPro, и имея полное преимущество на другой string-handling возможностью оперировать normal encoding chores.
![]() |
---|
Вы можете перекомпилировать класс, чтобы регулировать объекты MSXML, которыми пользуется XmlListener, и Вы также можете выбрать объекты MSXML последовательно, а не "raw" методом , который используется по умолчанию для обеспечения the data portions of the output. Использование объектов MSXML во время обработки может облегчить некоторые сценарии, в которых результат отчета требует двоичное кодироваие данных. Для того чтобы регулировать процесс, измените значение заголовка файла XmlListener, REPORTLISTENERS.H. По умолчанию знчение показано ниже: |
![]() | |
---|---|
#DEFINE OUTPUTXML_RAW 0 #DEFINE OUTPUTXML_DOM 1 #DEFINE XMLOUTPUT OUTPUTXML_RAW #DEFINE OUTPUTXML_DOMDOCUMENTOBJECT ; "Msxml2.FreeThreadedDOMDocument.4.0" #DEFINE OUTPUTXML_DOMFREETHREADED_DOCUMENTOBJECT ; "Msxml2.FreeThreadedDOMDocument.4.0" #DEFINE OUTPUTXML_XSLT_PROCESSOROBJECT ; "Msxml2.XSLTemplate.4.0" |
XmlListener и XSLT
Как только Вы сгенерировали XML документ, Вы часто должны будете менять его формат. XmlListener обеспечивает возможность Extensible Stylesheet Language Transformations (XSLT).Вы можете загрузить XSLT документ и запрсить, чтобы XmlListener выдавал конечный результат ваших проебразований, а не исконную схему отчета VFP документа XML.
XmlListener и его конфигурационная таблица
Подобно своим суперклассам UtilityReportListener, XmlListener используют такую же конфигурационную табличную структуру что и Report Output Application. Он резервирует диапазон величин в OBJTYPE (1100 до 1199)как путь поиска XML узлов, названных в честь отчетных элементов. Использование конфигурационной структуры для хранения узловых имен является путем локализации элементов XML для удобства прочтения. Например, по умолчанию значение PH
как имя для заголовка страницы не могло быть понятно разработчику на владеющим английским, или разработчик мог предпочесть более краткую нотацию. Поскольку XmlListener может прочитать значения во время выполнения, схема Xml отчета VFP должна быть просчитана как структурная модель; фактические имена во времени выполнения могли быть другими.
XmlListener загружает эту информацию в конфигурационную таблицу в зависимости от схемы, которую Вы видите в следующей таблице.
Поле | Использование |
---|---|
OBJTYPE |
Хранит в оригинальной таблице FRX значение OBJTYPE для value for the type of band or layout object the XML element describes, добавляя 1100. Например, Picture layout control в FRX имеет OBJTYPE 17, так запись хранящаяся в узле XML, названная Picture layout control имеет значение 1117. |
OBJCODE |
Имеет тоже значение , что и запись того же типа в FRX. Например, запись, хранящая XML имя для Detail Footer имеет такой же OBJCODE, что и DetailFooter, записанная в FRX. |
OBJNAME |
Не используется XmlListener |
OBJVALUE |
Хранит узловое имя. |
OBJINFO |
Хранит описательное значение для типа данных в FRX. Например, |
Если XMLListener - подкласс UtilityReportListener, который генерирует регистрационную таблицу по ходу выполнения,или если он не может найти необходимые записи в ранее существовавшей регистрационной таблице, он добавит подходящие записи для всех элементов, если это необходимо. Он также добавит если необходимо специализированные индексные ключи.
Заметки
XmlListener добавляет открытые следующие свойства и методы в его родительский класс, UtilityReportListener.
Свойства и методы | Описание | ||||||||
---|---|---|---|---|---|---|---|---|---|
applyUserTransform Property |
Indicates whether XMLListener should automatically apply a user-defined XSLT transform at the conclusion of a report run.
По умолчанию
Заметки: Когда Вы установили это свойство на |
||||||||
applyXslt Method |
Обеспечивает общие средства для применения XSLT на XML.
Синтаксис:
Возврвтные значения:
Параметры: vSource может быть файлом, удерживающим исходный документ XML, строкой, хранящей документ XML, или объектом документа DOM. vProcessor может быть файлом, хранящим документ процессора XSLT, строкой, хранящей документ XSLT, или объект процессора XSLT. vParamCollection дополнительный объект для типа Collection. Если доступно , этот метод adds the members of the collection to the XSLT processor instance as global parameters before applying the XSLT transformation to the source document. Он использует ключи collection как именя параметра, и соответствующие значения collection как значения параметра. XmlListener обеспечивает свойство, xsltParameters, Вы можете использовать его для хранения этих параметров между вызовами.. Заметки: Оба источник XML и объект процессора XSLT опрелены в REPORTLISTENERS.H. Вы можете отредактировать этот заголовок файла и перекомпилировать класс, чтобы выбирать другую обработку объектов. |
||||||||
contAttr Property |
Supplies the name of the attribute used to show continuation type for a layout object that can span bands or pages.
По умолчанию
|
||||||||
currentDocument Property |
Хранит информацию о документе XML для которого результат генерируется пока отчет работает..
По умолчанию
|
||||||||
heightAttr Property |
Поставляет имя атрибута XML, использованного , чтобы показать высоту(длину) объекта.
По умолчанию
|
||||||||
idAttribute Property |
Поставляет имя атрибута used to provide the FRX record number for a layout object or page number of a formatting band (column or page) object.
По умолчанию
|
||||||||
idrefAttribute Property |
Supplies the name of the XML attribute used to provide the current page for a layout object or FRX record number of a formatting band (column or page) object.
По умолчанию
|
||||||||
includeBandsWithNoObjects Property |
Показывает независимо band-level информацию для полос с пустым содержанием, которые должны быть включены XML.
По умолчанию
|
||||||||
includeBreaksInData Property |
Независимо определяет, форматируемые полосы (страницы и колонки) должны ли они быть включены в результат , если должны, использует эту структуру.
По умолчанию
|
||||||||
includeDataSourcesInVfpRdl Property |
Указывает независимо информацию об исходных таблицах, отношениях, индексах, и т.д., которадая должна быть включена в секцию метаданных VFPRDL отчета XML.
По умолчанию
|
||||||||
includeFormattingInLayoutObjects Property |
Указывает форматируемую информацию такую как позиционирование атрибутов должно быть включено в сообщение XML.
По умолчанию
|
||||||||
leftAttr Property |
Поставляет имя атрибута XML, использованного для показа самой левой позиции формата объекта.
По умолчанию
|
||||||||
noPageEject Property |
Показывает, что во всяком случае XML Listener должен рассматривать, что запущенный отчет, должен быть завершен. Может использоваться без NOPAGEEJECT в коданде REPORT FORM.
По умолчанию
|
||||||||
resetDocument Method |
Документ XML будет восстановлен после тогоа, когда отчет запустили.
Синтаксис:
Возвращаемые значения: нет Параметры: нет |
||||||||
topAttr Property |
Поставляет имя атрибута XML, используя его чтобы показать самую верхнюю позицию формата объекта.
По умолчанию
|
||||||||
verifyNCName Method |
Обеспечивает общий метод, чтобы подтверждать строки как стандарт XML NCNames.
Синтаксис:
Возвращаемое значение:
Параметры: cName - строка, которую Вы проверяете на достоверность, как величину NCName.
Заметки: В XML, NCName или non-colonized name is a legal value for either the namespace or the non-prefixed (local) name of a node. Например, в узловом имени |
||||||||
widthAttr Property |
Поставляет имя атрибута XML, использованного для отображения ширины формата объекта.
По умолчанию
|
||||||||
xmlMode Property |
Определяет, что какие части VFP сообщения схемы XML включены в результат.
по умолчанию
|
||||||||
xsltParameters Property |
Holds an optional parameter collection passed to the ApplyXSLT method when XmlListener automatically applies a user XSLT transformation at the conclusion of a report run.
По умолчанию
Замечание: Кодовый пример в ReportListener HTML Foundation Class использует xsltParameters явно, чтобы установить |
||||||||
xsltProcessorRdl Property |
Содержит a Report Definition Language (RDL) - специфический объект процессора.
По умолчанию
Заметки: Зарезервировано для будущего использования. Вы можите загрузить объект процессора XSLT в совйства, используя такую же технику, описанную для свойств xslProcessorUser. |
||||||||
xsltProcessorUser Property |
Содержит определяемый пользователем объект процессора который, заполнен и долступен для запуска, может быть использован автоматически XML Listener для преобразования сырого XML документа на требуемый.
По умолчанию
Зметки: Для изменения этого документа у Вас есть несколько опций:
Если Вы сохранили документ как строка или имя файла, XmlListener создаст объект процессора для Вас и загрузит таблицу стилей. |
Пример
В примере код настрайвает свойства XmlListener, чтобы подходить сценарию конкретных передачи данных ( список клиента, передаваемый между Visual FoxPro и CRM приложением, переведенным в другой среде).
Код обеспечиает объектными свойствами xsltProcessUser пригодным документом проебразования XSLT, использую один из трех методов для загрузки объекта процессора описанных выше. Он инструктирует объект для применения XSLT трансформации автоматически после запуска отчета. Затем выполняется отчет. Результирующий XSLT соответствует требованиям CRM приложения и может быть импортирован без последующего редактирования.
![]() | |
---|---|
oXml = NEWOBJECT("XmlListener","_REPORTLISTENER") WITH oXml .xmlMode = 0 && data only, && no RDL is needed for this && particular transform .xsltProcessorUser = "Customer.xslt" .applyUserTransform = .T. ENDWITH REPORT FORM Customer OBJECT oXml MODIFY FILE (oXml.TargetFileName) |