Разработка технической документации и технические писатели Технические писатели и разработка технической документации технические писатели в Телеграм 

 obmen_soobsheniyami.png Чат для технических писателей 
 Зарегистрируйтесь
Страницы: 1 2 След.
RSS
Установка и инсталляция DITA
 
Ссылки
IBM передала DITA под ведомство организации OASIS в марте 2004 г., и теперь эта архитектура поддерживается Техническим Комитетом OASIS DITA ( http://www.oasis-open.org/committees/dita/). В апреле 2005 г. OASIS утвердила Версию 1.0 спецификации DITA, состоящую из следующих документов:

Спецификация языка OASIS DITA: http://xml.coverpages.org/DITAv10-OS-La ... 050509.pdf
Архитектурная спецификация OASIS DITA: http://xml.coverpages.org/DITAv10-OS-Ar ... 050509.pdf
Сводный zip-файл со всеми спецификациями, DTD и схемами, открыто доступный в разделе документов на сайте Технического Комитета OASIS DITA: http://www.oasis-open.org/committees/do ... 91/cd2.zip
Опорная реализация набора инструментов для обеих версий DITA (developerWorks и OASIS 1.0) доступна на сайте проекта DITA Open Toolkit: http://dita-ot.sourceforge.net. Этот набор инструментов заменяет все предыдущие версии, опубликованные на developerWorks; последняя из них была известна под названием «dita132».

Узнайте больше о DITA из смежной статьи « Специализация типов тем в DITA», объясняющей, как реализовать специализацию в DITA (developerWorks, дополнено в сентябре 2005)
Прочитайте статью Эрика Хеннема « Специализация словарей в DITA», показывающую, как при помощи расширяемых DTD в DITA возможно определить новые области знаний (developerWorks, дополнено в сентябре 2005)
Узнайте, как присоединиться к обсуждению в форуме DITA (модераторы Дон Дэй и Майкл Пристли)
Заходите на сам форум DITA (модераторы Дон Дэй и Майкл Пристли)
Загрузите последние версии DTD, таблиц стилей и примеров документов для DITA.
Загляните в DITA FAQ (developerWorks, дополнено в сентябре 2005)
Ознакомьтесь с обзорами информационной архитектуры на сайтах Центра информационной архитектуры Argus и 10 вопросов об информационной архитектуре.
 
Спасибо за ссылки, а как ее установить?
 
Занимаюсь внедрением DITA в своей компании вкупе с XML CMS (SiberSafe XML CMS).
Что касается установки, настройки и азам работы советую почитать DITA for SOLO Writers
http://www.lone-dita.com/Portals/0/dita/ditaguide.pdf

Смотрите тут обсуждения DITA с форума Философт
http://forum.philosoft.ru/cgi-bin/forum/ikonboard.cgi?s=24d90f0785a72ec00d13be2c12395860;act=SF;f=37


Вообще говоря материала у меня масса (ессесено на английском). Есть и мои презентации. Если готовы настроить XSLT и почитать Reference Guide то все не так уж сложно, но это все однопользовательский режим. Могу сказать что для таких XML технологий как DocBook, DITA, S1000D и т. д. рекомендуется дополнительно XML CMS.
 
Вот с английским языком я не совсем дружу((. Есть ли русская документация на эту тему? Как ее установить и внедрить? Для начала мн7е бы хотя бы просто понять с чего начинать.
 
Скачать можно отсюда насколько я понял. http://sourceforge.net/project/showfile ... _id=595983
Быть или не быть?
 
А инсталировать надо на сервер, правильно? То есть распаковать папку и закинуть все на сервер так?
Быть или не быть?
 
Цитата
Вот с английским языком я не совсем дружу((. Есть ли русская документация на эту тему? Как ее установить и внедрить? Для начала мн7е бы хотя бы просто понять с чего начинать.
Без английского языка DITA не освоить... Материала на русском нет и думаю в ближайшем будущем не придвидется...

Цитата
А инсталировать надо на сервер, правильно?
Хватит и обычного компа
Ресурсы будет есть паблишинг когда будет реализовано все и будет достаточно большой объем вывода

Цитата
Скачать можно отсюда насколько я понял. http://sourceforge.net/project/showfile ... _id=595983
Брать от туда - делай по той доке там все написано
 
Цитата
Без английского языка DITA не освоить...
НЕ надо пугать народ  :lol:  Без знания языка можно освоить.
Цитата
Материала на русском нет и думаю в ближайшем будущем не придвидется...
Предвидится  8)
 
Цитата
Скачать можно отсюда насколько я понял. http://sourceforge.net/project/showfiles.php?group_id=132728&package_id=145774&release_id=595983
Цитата
А инсталировать надо на сервер, правильно? То есть распаковать папку и закинуть все на сервер так?
В теме "Общая информация" начал писать, но не знаю как перенести сообщения...  :D  

Лучше наверное описать установку в этой теме.

Цитата
Думаю, что для начала надо скачать инструментарий и установить.
1. Качаем дистрибутив DitaOT http://sourceforge.net/projects/dita-ot/ (full easy install. Доп.утилиты и Ant уже включены в состав дистрибутива последних релизов)
2. Качаем последнюю Java  http://www.oracle.com/technetwork/java/javase/downloads/jre-6u25-download-346243.html (желательно не инсталляцию, а исходники)
а. Создаем (на своем компе/диске, не на сервере) папку c:\builder  (от англ. "сборщик"). В этой папке будут строиться все переменные и устанавливаться все вспомогательные утилиты.
б. Распаковываем dita в эту папку (c:\builder\ditaot ).
в. Туда же распаковываем Java  (c:\builder\JRE ).
г. Там же создаем папку [i:3j7vf92a]cfg[/i:3j7vf92a] для разных версий кастомизаций, шрифтов и т.п. = cfg (c:\builder\cfg).
д. Задаем вопросы, если вдруг возникли трудности из за незнания английского языка  :lol:

Далее напишу как создать батник и конфигурационный файл.
 
Цитата
Цитата
Без английского языка DITA не освоить...
НЕ надо пугать народ  :lol:  Без знания языка можно освоить.
Цитата
Материала на русском нет и думаю в ближайшем будущем не придвидется...
Предвидится  8)[/quote

Имелось ввиду что без знания тех английского самостоятельно не освоить ибо вся документация на нем...
С моего поста прошло более 3 лет - эт и есть ближайшее будущее - да и пока о достойных материалах на русском не слышал...
 
:)
 
Да, а я вот так и не освоил ее. Очень жаль что документации на русском нет совсем((
Быть или не быть?
 
Цитата
Очень жаль что документации на русском нет совсем((
Если "школьного" английского недостаточно, то есть http://translate.google.ru. Если его мало, то есть множество разных плагинов для разных браузеров для перевода страниц on-line. Пусть не идеальный текст, но понятно о чем речь.
Если и этого мало, то есть форум. Задавайте вопросы, на чем вы запнулись. Если нет вопросов, то скорее всего даже не скачивали дистрибутив и не думали это сделать.  :D

Документация на русском к архиваторам, редакторам xml не нужна также, как и к OC Windows. Что реально нужно переводить в dita - не понятно (там набор утилит и их параметры).  :roll:
 
До конфигурационного файла надо выполнить то, что описано в теме "Технология адаптации Dita", а именно локализацию. Настроить все что требуется для работы с кириллицей.
 
Цитата
Над его сюда положить но в нем есть фразы типа положите файл такойто тудато - придется и файлы выложиnm
Думаю многим это бы помогло, выкладывайте.
 
Цитата
XEP тогда давал лучший результат но он платен а это зло...
Сейчас XEP не дает лучший результат.  fop 0.94 и 0.95 и ссылки в оглавлении делает и алфавитный указатель и все, с чем были проблемы три года назад  :D
 
Цитата
пользуюсь dita for solo writers(15 стр). Команда ant -f integrator.xml выполняется успешно, но скомпилировать sample_pdf2.xml не получается ant -f sample_pdf2.xml
Как называется ваш ант-скрипт?
В документе написано [code:1sjyfwmt][b]2. Copy and paste the following ANT script into the new file:[/b][/code:1sjyfwmt]
По умолчанию он должен был называться build.xml. А в нем должен быть текст, который предлагается скопировать из примера dita for solo writers (15-16 стр).

<?xml version="1.0" encoding="UTF-8" ?>
<project name="sample_pdf2" [color=#FF0000:1sjyfwmt][b:1sjyfwmt]default="sample2pdf2"[/b:1sjyfwmt][/color:1sjyfwmt] basedir=".">
......тра-ля-ля ....
</project>
Значит надо:
1. Либо выполнять [b:1sjyfwmt]ant -f ant_script_filename.xml[/b:1sjyfwmt] и будет браться аругмент по умолчанию default="sample2pdf2"
2. Либо выполнять [b:1sjyfwmt]ant -f sample2pdf2[/b:1sjyfwmt] если файл называется build.xml
3. Если так тоже не получилось, то нужно в команде  ant -f build.xml  добавить параметр [b:1sjyfwmt]log.log[/b:1sjyfwmt] в конце для получения лога (ant -f build.xml log.log). После выполнения компиляции (неуспешной) открыть файл в любом редакторе, найти текст BUILD FAILED и отправить текст первые 10-15 строк после BUILD FAILED
 
Помогите решить проблему с получением документа в формате pdf. пользуюсь dita for solo writers(15 стр). Команда ant -f integrator.xml выполняется успешно, но скомпилировать sample_pdf2.xml не получается ant -f sample_pdf2.xml    :(
С лицензией на XEP PERSONAL EDITION я скачала и использовала при установке! заранее большое спасибо!
 
Цитата
С лицензией на XEP PERSONAL EDITION я скачала и использовала при установке!
Зачем нужен XEP, если есть бесплатный fop уже в составе полного дистрибутива Dita-ot?
 
Цитата
Помогите решить проблему с получением документа в формате pdf. пользуюсь dita for solo writers(15 стр). Команда ant -f integrator.xml выполняется успешно, но скомпилировать sample_pdf2.xml не получается ant -f sample_pdf2.xml    :(
С лицензией на XEP PERSONAL EDITION я скачала и использовала при установке! заранее большое спасибо!

Еще года 3 назад начиная с тулкита 1.5 кажись уже в составе Dita идет fop и Idiom плагин - XEP тогда давал лучший результат но он платен а это зло... Software like a sex - It's good when it's free
Короче говоря пользуйтесь FOP
Есть неплохой док про настройку PDF (Customizing PDF output in the DITA Open Toolkit) - [u:r6bba14z]http://www.scriptorium.com/whitepapers/ditaotpdf/DITA-PDF-tweaks.pdf[/u:r6bba14z]
Лог в студию...

Вообще говоря в отделе документации я уже не работаю последние 3 года... Ушел в отдел разработок телекомплатформы - Соответственно DITA сейчас не касаюсь. Поддерживаю ток для отдела документации несколько конвертеров из различных источников (например грабилка из БД Oracle) в формат DITA мною же написанных или если с настройками при выходе нового тулкита чего объяснить попросят...

В принципе я для них даже сделал некий НАБРОСОК какие изменения в скриптах над сделать чтобы все работало...
Над его сюда положить но в нем есть фразы типа положите файл такойто тудато - придется и файлы выложить...

уже давал настроенный под наш шаблон  тулкит как пример - кто-то просил...
 
Вот мои рекомендации по настройке тулкита версии 1.5.2
дает только представление  - что да как делалось – сами изменения в определенных файлах планировалось представить в листингах но руки не дошли… Поэтому можно только посмотреть на эти изменения в моем тулките (скажем путем сравнения в чем различия между моим тулкитом и скачанным)… мой уже настроенный по этим рекомендациям тулкит версии 1.5.2 выложу следущим постом...

[b:3411rvba]Установка DITA-тулкита[/b:3411rvba]
Скачиваем свежий DITA-тулкит с [u:3411rvba]http://sourceforge.net/projects/dita-ot/[/u:3411rvba],
Распаковываем на его на диск С:
Указываем в JAVA_HOME в C:\DITA-OT1.5.2\startcmd.bat вашь путь к яве. У меня например такой C:\Program Files\Java\jdk1.6.0_07

[b:3411rvba]Настройка шаблона и русского языка для PDF[/b:3411rvba]
Начиная с версии тукита кажется 1.5 в его составе уже идет плагин Idiom предназначенный для получения PDF. Т.о. действия по интеграции этого плагина в DITA-тулкит описанные в документе DITA for Solo Writers, которые приходилось проделать для тулкитов ранних версий более не нужны. Соответственно идеология этого плагина подразумевает что вся кастомизация, осуществляется в каталоге Customization.  

В папку C:\DITA-OT1.5.2\demo\fo\cfg\common\index добавили файл ru_RU.xml
В папку C:\DITA-OT1.5.2\demo\fo\Customization добавили файл catalog.xml
В папку C:\DITA-OT1.5.2\demo\fo\Customization\common\index добавили файл ru_RU.xml
В папку C:\DITA-OT1.5.2\demo\fo\Customization\common\vars добавили файлы en_US.xml и ru_RU.xml

В папку C:\DITA-OT1.5.2\demo\fo\Customization\fo добавили файлы font-mappings.xml и layout-masters.xml
В папку C:\DITA-OT1.5.2\demo\fo\Customization\fo\attrs добавили файл custom.xsl
В папку C:\DITA-OT1.5.2\demo\fo\Customization\fo\i18n добавили файл ru_RU.xml
В папку C:\DITA-OT1.5.2\demo\fo\Customization\fo\xsl добавили файл custom.xsl

[b:3411rvba]Настройка переносов на русском языке в PDF[/b:3411rvba]
Для переносов на русском языке надо добавить для FOP файл fop-hyph.jar ([u:3411rvba]http://offo.sourceforge.net/hyphenation/index.html[/u:3411rvba]) и настроить fop.xcon.
В папку C:\DITA-OT1.5.2\demo\fo\fop\conf добавили файл fop.xconf, старый переименовали в !OLDfop.xconf
В папку C:\DITA-OT1.5.2_\demo\fo\fop\lib добавили файл fop-hyph.jar
В CLASSPATH startcmd.bat добавили %DITA_DIR%demo\fo\fop\lib\fop-hyph.jar; старый переименовали в !OLDstartcmd.bat.xconf


[b:3411rvba]Настройка указателя на русском в HTMLHelp[/b:3411rvba]
В первую очередь поставили HTML Help Workshop, файл htmlhelp.exe.
Т.к. HTML Help Workshop не поддерживает русский в кодировке UTF-8, требуется использовать кодировку Windows-1251. Содержание и поиск на русском работают, но алфавитный указатель (index) не работает. Так как для промежуточного файла индекса (файл hhk) задана неверная кодировка.
Для установки кодировки чтобы работал алфавитный указатель (индекс) можно воспользоваться XSLT-преобразованием (плагином) plus-htmlhelp-currentencoding входящий в бесплатный набор "Plus" Plugins.

Для установки набора "Plus" Plugins надо в папку C:\DITA-OT1.5.2\plugins надо разархивировать файл dita-plus-20080625.zip. Скачан с [u:3411rvba]http://tech.groups.yahoo.com/group/dita-users/files/Demos[/u:3411rvba].
После этого стартуем тулкит (т.е. запускаем startcmd.bat) и набраем команду
[code:3411rvba]ant -f integrator.xml[/code:3411rvba]
Результат
[code:3411rvba]integrate:
[integrate] Using XERCES.
[integrate] java.net.SocketException: Connection reset
BUILD SUCCESSFUL
Total time: 43 seconds[/code:3411rvba]
Таким образом XSLT-преобразования входящие в "Plus" Plugins интегрируются в основной билд тулкита - build.xml
Для получения HTMLHelp с использованием "Plus" Plugins необходимо использовать таргет HTMLHelp+ (в отличие от оригинального тулкитовского таргета HTMLHelp) в стартовом билде документа.
При этом при попытке сборки возникает следующиая ошибка
[i:3411rvba]taskdef A class needed by class com.moldflow.jeuclid.ant.MathML2SVG cannot be found: org/apache/batik/svggen/SVGGraphics2D[/i:3411rvba]
Для ее исправления в папку C:\DITA-OT1.5.2\tools\batik-1.7 надо установить Batik 1.7. Скачан с [u:3411rvba]http://xmlgraphics.apache.org/batik/download.cgi, файл batik-1.7.zip[/u:3411rvba]
Также необходимо указать путь к Batik 1.7 в CLASSPATH  (задается в стартовом скрипте тулкита - startcmd.bat).
У меня путь к нему задан так
%DITA_DIR%tools\batik-1.7\batik-ttf2svg.jar;.

[b:3411rvba]Настройка поиска на русском в HTMLHelp[/b:3411rvba]
Файл chm собирается но поиск русских слов не работает. Опытным путем установлено что это можно победить заменой XSLT-процессора XALAN на XSLT-процессор SAXON.
В папку C:\DITA-OT1.5.2\tools\saxonb9-1-0-5j установили SAXON XSLT processor 9.1.0.5. Скачан с [u:3411rvba]http://saxon.sourceforge.net/#F9.1SA, файл saxonb9-1-0-5j.zip[/u:3411rvba]. Можно взять и самый свежий
В CLASSPATH startcmd.bat добавили %DITA_DIR%tools\saxonb9-1-0-5j\saxon9.jar;%DITA_DIR%tools\saxonb9-1-0-5j\saxon9-dom.jar;
Важно это прописать до записи %DITA_DIR%lib\xalan.jar;, либо вообще убрать запись %DITA_DIR%lib\xalan.jar;.


[b:3411rvba]Установка плагинов TOC Navigation Plugin и HTMLSearch Plugin[/b:3411rvba]
Эти плагины нужны  для "нормального" меню навигации и поиска в XHTML
В папку C:\DITA-OT1.5.2\demo\tocjs установили JavaScript TOC Navigation Plugin. Скачан с [u:3411rvba]http://tech.groups.yahoo.com/group/dita-users/files/Demos[/u:3411rvba], файл tocjs-plugin-1.1.zip
В папку C:\DITA-OT1.5.2\demo\htmlsearch установили HTMLSearch Plugin. Скачан с [u:3411rvba]http://tech.groups.yahoo.com/group/dita-users/files/Demos[/u:3411rvba], файл htmlsearch1.04.zip

Запустили файл startcmd.bat и набрали команду
[code:3411rvba]ant -f integrator.xml[/code:3411rvba]
Результат
[code:3411rvba]integrate:
[integrate] Using XERCES.
[integrate] java.net.SocketException: Connection reset
BUILD SUCCESSFUL
Total time: 43 seconds[/code:3411rvba]
Таким образом XSLT-преобразования входящие в TOC Navigation Plugin и HTMLSearch Plugin интегрируются в основной билд тулкита - build.xml

[b:3411rvba]Настройка изображений логотипов и т.д.[/b:3411rvba]
В каталог C:\DITA-OT1.5.2\demo добавили каталог img. В этом каталоге создали подкаталоги с именами как в свойстве document.style в стартовом билде документа.
[code:3411rvba]

<property name="document.style" value="bercut" />
[/code:3411rvba]
В каждом таком каталоге создали файлы:
[list:3411rvba]
[*:3411rvba]bgsearch.gif - подложка под полем поиска в формате XHTML[/*:m:3411rvba]
[*:3411rvba]button.gif - кнопка начала поиска в XHTML[/*:m:3411rvba]
[*:3411rvba]cover_footer.jpg - изображение в нижнем колонтитуле в формате PDF[/*:m:3411rvba]
[*:3411rvba]logo_big.png - логотип на титульный лист для формата PDF[/*:m:3411rvba]
[*:3411rvba]logo_small.gif - логотип на титульный лист для форматов XHTML и HTMLHelp[/*:m:3411rvba]
[*:3411rvba]slogan.gif - слоган на титульный лист в правом углу верхнего колонтитула в форматах XHTML и HTMLHelp[/*:m:3411rvba][/list:u:3411rvba]
Не следует давать им другие имена. Если вам надо создать свои дайте им такие же имена... иначе вам придется копаться по тулкиту и искать где именно они указаны...

[b:3411rvba]XSLT-преобразование титульной страницы для форматов XHTML и HTMLHelp[/b:3411rvba]
В каталоге C:\DITA-OT1.5.2\xsl создали файл map2cover.xsl.  Это XSLT-преобразование, которое будет генерить файл cover.html на основе информации из карты документа (DITA map). Именно его будет вызывать таргет generate-cover.
Т.к. файл cover.html будет генериться автоматически, то старый C:\DITA-OT1.5.2\demo\htmlsearch\basefiles\sub\cover.html удалим т.к. он более нен нужен.
[code:3411rvba]
<?xml version="1.0" encoding="UTF-8"?>
<!-- This file is inteded for creating Cover from document MAP.
Created by Oleg Alekseev.
E-mail: o_alekseev@mail.ru-->

<!DOCTYPE xsl:stylesheet [
<!ENTITY gt ">">
<!ENTITY lt "<">
<!ENTITY rbl " ">
<!ENTITY nbsp " ">

<!ENTITY quot """>
<!ENTITY copyr "©">
]>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:saxon="http://icl.com/saxon" extension-element-prefixes="saxon">
<!-- map2htmltoc.xsl   main stylesheet
    Convert DITA map to a simple HTML table-of-contents view.
    Input = one DITA map file
    Output = one HTML file for viewing/checking by the author.

    Options:
       OUTEXT  = XHTML output extension (default is '.html')
       WORKDIR = The working directory that contains the document being transformed.
                  Needed as a directory prefix for the @href "document()" function calls.
                  Default is './'
-->

<xsl:output method="html" indent="no" encoding="UTF-8"/>

<xsl:param name="OUTEXT" select="'.html'"/>

<xsl:param name="WORKDIR" select="'./'"/>
<xsl:param name="DITAEXT" select="'.xml'"/>
<xsl:param name="contenttarget" select="'contentwin'"/>
<xsl:param name="CSS"/>
<xsl:param name="CSSPATH"/>

<xsl:variable name="newline">
<xsl:text>
</xsl:text>
</xsl:variable>
<xsl:variable name="VersionStr">
<xsl:choose>
<xsl:when test="//*[contains(@class, ' map/map ')]/@xml:lang = 'ru-RU'">Версия </xsl:when>

<xsl:when test="//*[contains(@class, ' map/map ')]/@xml:lang = 'ru-ru'">Версия </xsl:when>
<xsl:when test="//*[contains(@class, ' map/map ')]/@xml:lang = 'ru_RU'">Версия </xsl:when>
<xsl:when test="//*[contains(@class, ' map/map ')]/@xml:lang = 'ru_ru'">Версия </xsl:when>
<xsl:otherwise>Version </xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="DocVersionStr">
<xsl:choose>
<xsl:when test="//*[contains(@class, ' map/map ')]/@xml:lang = 'ru-RU'">Версия документа </xsl:when>

<xsl:when test="//*[contains(@class, ' map/map ')]/@xml:lang = 'ru-ru'">Версия документа </xsl:when>
<xsl:when test="//*[contains(@class, ' map/map ')]/@xml:lang = 'ru_RU'">Версия документа </xsl:when>
<xsl:when test="//*[contains(@class, ' map/map ')]/@xml:lang = 'ru_ru'">Версия документа </xsl:when>
<xsl:otherwise>Document version </xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="RightsStr">
<xsl:choose>
<xsl:when test="//*[contains(@class, ' map/map ')]/@xml:lang = 'ru-RU'"> Все права защищены</xsl:when>

<xsl:when test="//*[contains(@class, ' map/map ')]/@xml:lang = 'ru-ru'"> Все права защищены</xsl:when>
<xsl:when test="//*[contains(@class, ' map/map ')]/@xml:lang = 'ru_RU'"> Все права защищены</xsl:when>
<xsl:when test="//*[contains(@class, ' map/map ')]/@xml:lang = 'ru_ru'"> Все права защищены</xsl:when>
<xsl:otherwise> All rights reserved</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<!-- *********************************************************************************
    Cover processing
    ********************************************************************************* -->
<xsl:template match="/">
<html>
<xsl:value-of select="$newline"/>
<head>
<xsl:value-of select="$newline"/>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<style type="text/css"/>
<link rel="stylesheet" type="text/css" href="{$CSSPATH}{$CSS}" />
<title>Cover (Welcome) DITA htmlsearch plugin</title>
</head>
<xsl:value-of select="$newline"/>
<body>




<img border="0" src="img/logo_small.gif" height="66"/>

<img src="img/slogan.gif" height="24"/>
<hr/>
<div style="margin-top: 7%; margin-bottom: 7%; text-align:left;  font-family: arial;">
<h1>
<xsl:value-of select="//*[contains(@class, ' topic/prodname ')]/text()"/>
</h1>
<h2>
<xsl:value-of select="//*[contains(@class, ' map/map ')]/@title"/>
</h2>
<h2>
<xsl:value-of select="$VersionStr"/>
<xsl:value-of select="//*[contains(@class, ' topic/vrm ')]/@version"/>
</h2>
<h2>
<xsl:value-of select="//*[contains(@class, ' topic/othermeta ') and @name='component']/@content"/>
</h2>
<h2>
<xsl:value-of select="//*[contains(@class, ' topic/othermeta ') and @name='doctype']/@content"/>
</h2>
</div>
<div style="margin-top: 7%; margin-bottom: 7%; text-align:left;  font-family: arial;">


<xsl:value-of select="//*[contains(@class, ' map/shortdesc ')]/text()"/>


<xsl:value-of select="$DocVersionStr"/>
<xsl:value-of select="//*[contains(@class, ' topic/othermeta ') and @name='docedition']/@content"/>

</div>
<hr/>
<div style="text-align:left; color:#0053AC">


©r; 1995-<xsl:value-of select="//*[contains(@class, ' topic/copyryear ')]/@year"/> <xsl:value-of select="//*[contains(@class, ' topic/copyrholder ')]/text()"/>
<xsl:value-of select="$RightsStr"/>
</div>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
[/code:3411rvba]

[b:3411rvba]Настройка таргета generate-cover для XHTML[/b:3411rvba]
В файл C:\DITA-OT1.5.2\build_dita2xhtml.xml добавили таргет generate-cover и его вызов Этот таргет вызывает наше XSLT-преобразование map2cover.xsl, генерящее cover.html на основе информации из карты документа. Старый файл переименовали в !OLDbuild_dita2xhtml.xml.
[code:3411rvba]<?xml version="1.0" encoding="UTF-8"?>
<!-- This file is part of the DITA Open Toolkit project hosted on
    Sourceforge.net. See the accompanying license.txt file for
    applicable licenses.-->

<project name="dita2xhtml" default="dita2xhtml">
   <property name="transtype" value="xhtml"/>
   
   <import file="build_init.xml" />
   <import file="build_preprocess.xml" />
   <import file="build_general.xml" />

   <target name="dita2xhtml" depends="build-init, preprocess, generate-cover, copy-revflag, copy-css , dita.topics.xhtml, dita.inner.topics.xhtml, dita.outer.topics.xhtml">
   </target>

   <target name="generate-cover" unless="noMap" description="Build HTML cover file">
       <xslt processor="trax"
             basedir="${dita.temp.dir}"
             destdir="${output.dir}"
             includesfile="${dita.temp.dir}${file.separator}${user.input.file.listfile}"
             classpathref="dost.class.path"
             style="${dita.script.dir}${file.separator}map2cover.xsl">
           <param name="DITAEXT" expression="${dita.ext}" if="dita.ext" />
           <mapper type="glob" from="${dita.input.filename}" to="cover.html" />
       </xslt>
   </target>
</project>[/code:3411rvba]

[b:3411rvba]Настройка таргета generate-cover для HTMLHelp[/b:3411rvba]
В файл C:\DITA-OT1.5.2\plugins\plus-transtype-htmlhelp\build_plus-transtype-htmlhelp.xml добавили таргет generate-cover и его вызов. Этот таргет вызывает наше XSLT-преобразование map2cover.xsl, генерящее cover.html на основе информации из карты документа. Старый файл переименовали в !OLDbuild_plus-transtype-htmlhelp.xml.
[code:3411rvba]
<project name="plus-transtype-htmlhelp" default="dita2htmlhelp+">

   <dirname property="plus-transtype-htmlhelp.dir" file="${ant.file.plus-transtype-htmlhelp}"></dirname>

   <property name="transtype" value="htmlhelp+"></property>
   
   <import file="../../build_init.xml"></import>
   <import file="../../build_preprocess.xml"></import>

   <target name="dita2htmlhelp+" depends="build-init,preprocess, plus-transtype-htmlhelp.map.basic, generate-cover, copy-css,plus-htmlhelp-topics-twopass.dispatch,plus-htmlhelp-topics-twopass.dispatch,plus-transtype-htmlhelp.topics.basic,plus-transtype-htmlhelp.compile.perform">
   </target>
   
    <target name="generate-cover"
           unless="noMap"
           description="Build HTMLHelp cover file">
       <xslt processor="trax"
             basedir="${dita.temp.dir}"
             destdir="${output.dir}"
             includesfile="${dita.temp.dir}${file.separator}${user.input.file.listfile}"
             classpathref="dost.class.path"
             style="${dita.script.dir}${file.separator}map2cover.xsl">
           <param name="DITAEXT" expression="${dita.ext}" if="dita.ext" />
           <param name="OUTEXT" expression="${out.ext}" if="out.ext" />
           <param name="CSS" expression="${args.css.file}" if="args.css.file" />
<param name="CSSPATH" expression="${user.csspath}" if="user.csspath" />
           <mapper type="glob" from="${dita.input.filename}" to="cover${out.ext}" />
       </xslt>
   </target>

   <target name="plus-transtype-htmlhelp.map.basic" depends="plus-transtype-htmlhelp.map.basic.class.fallback,plus-transtype-htmlhelp.map.basic.init,plus-htmlhelp-currentencoding.defaultencoding,plus-transtype-htmlhelp.map.basic.hhp,plus-htmlhelp-currentencoding.hhp.convert,plus-transtype-htmlhelp.map.basic.hhc,plus-htmlhelp-currentencoding.hhc.convert,plus-transtype-htmlhelp.map.basic.hhk,plus-htmlhelp-currentencoding.hhk.convert"></target>

   <target name="plus-transtype-htmlhelp.map.basic.class.fallback">
     <condition property="plus.map.class.basic">
       <or>
         <not>
           <isset property="plus.map.class"></isset>
         </not>
         <equals arg1="${plus.map.class}" arg2="basic"></equals>
       </or>
     </condition>
   </target>

   <target name="plus-transtype-htmlhelp.map.basic.init" description="Init properties for HTMLHelp" if="plus.map.class.basic">
       <condition property="out.ext" value=".html">
           <not>
               <isset property="out.ext"></isset>
           </not>
       </condition>
   </target>

   <target name="plus-transtype-htmlhelp.map.basic.hhp" depends="plus-transtype-htmlhelp.map.basic.init" if="plus.map.class.basic" description="Build HTMLHelp HHP file">
       <xslt processor="trax" basedir="${dita.temp.dir}" destdir="${output.dir}" includes="${user.input.file}" extension=".hhp" style="${plus-transtype-htmlhelp.dir}/xsl/map2hhp.xsl" classpathref="dost.class.path">
           <param name="DITAEXT" expression="${dita.ext}" if="dita.ext"></param>
           <param name="OUTEXT" expression="${out.ext}" if="out.ext"></param>
           <param name="HHCNAME" expression="${dita.map.filename.root}.hhc"></param>
           <param name="INCLUDEFILE" expression="${args.htmlhelp.includefile}" if="args.htmlhelp.includefile"></param>
       </xslt>
   </target>

   <target name="plus-transtype-htmlhelp.map.basic.hhc" depends="plus-transtype-htmlhelp.map.basic.init" if="plus.map.class.basic" description="Build HTMLHelp HHC file">
       <xslt processor="trax" basedir="${dita.temp.dir}" destdir="${output.dir}" includes="${user.input.file}" extension=".hhc" style="${plus-transtype-htmlhelp.dir}/xsl/map2hhc.xsl">
           <param name="DITAEXT" expression="${dita.ext}" if="dita.ext"></param>
           <param name="OUTEXT" expression="${out.ext}" if="out.ext"></param>
       </xslt>
   </target>

   <target name="plus-transtype-htmlhelp.map.basic.hhk" depends="plus-transtype-htmlhelp.map.basic.init" if="plus.map.class.basic" description="Build HTMLHelp HHK file">
       <pipeline message="Extract index term." module="IndexTermExtract" basedir="${basedir}" tempdir="${dita.temp.dir}" inputmap="${user.input.file}" extparam="output=${output.dir}${file.separator}${user.input.file};targetext=${out.ext};indextype=htmlhelp;${index.ext.param.encoding}"></pipeline>
   </target>

   <target name="plus-transtype-htmlhelp.topics.basic" if="plus.topics.class.basic" depends="plus-transtype-htmlhelp.topics.basic.class.fallback,plus-transtype-htmlhelp.topics.basic.perform"></target>

   <target name="plus-transtype-htmlhelp.topics.basic.class.fallback">
     <condition property="plus.topics.class.basic">
       <or>
         <not>
           <isset property="plus.topics.class"></isset>
         </not>
         <equals arg1="${plus.topics.class}" arg2="basic"></equals>
       </or>
     </condition>
   </target>

   <target name="plus-transtype-htmlhelp.topics.basic.perform" if="plus.topics.class.basic">
     <antcall target="plus-transtype-htmlhelp.topics.basic.all"></antcall>
     <antcall target="plus-transtype-htmlhelp.topics.basic.inner"></antcall>
     
   </target>

   <target name="plus-transtype-htmlhelp.topics.basic.all" if="old.transform">
     <antcall target="plus-allhtml-topic2html.html.nomapper">
       <param name="includes" value="${fullditatopiclist} ${chunkedtopiclist}"></param>
       <param name="destdir" value="${output.dir}"></param>
       <param name="args.xsl" value="${plus-transtype-htmlhelp.dir}/xsl/dita2html-shell.xsl"></param>
     </antcall>
   </target>

   <target name="plus-transtype-htmlhelp.topics.basic.inner" if="inner.transform">
     <antcall target="plus-allhtml-topic2html.html.regexpmapper">
       <param name="includes" value="${fullditatopiclist} ${chunkedtopiclist}"></param>
       <param name="destdir" value="${output.dir}"></param>
       <param name="args.xsl" value="${plus-transtype-htmlhelp.dir}/xsl/dita2html-shell.xsl"></param>
       <param name="mapperfrom" value="^(${tempdirToinputmapdir.relative.value})(.*?)(\.(xml|dita))$$"></param>
       <param name="mapperto" value="\2${out.ext}"></param>
     </antcall>
   </target>

   <target name="plus-transtype-htmlhelp.compile.perform" if="HTMLHelpCompiler" description="Compile HTMLHelp output">
       <exec executable="${HTMLHelpCompiler}" failonerror="${failonerror}" failifexecutionfails="${failonerror}">
           <arg value="${dita.map.output.dir}${file.separator}${dita.map.filename.root}.hhp"></arg>
       </exec>
   </target>

</project>
[/code:3411rvba]

[b:3411rvba]Добавление титульной страницы в состав HTMLHelp[/b:3411rvba]
Для того что бы сгенеренная титульная страница (cover.html) попала в состав HTMLHelp (файл с расширением .chm) ее необходимо добавить в файл проекта (имеет расширением .hhp) на основании которого HTML Help WorkShop уже создает конечный файл справки (имеет расширением .chm).
Для этого подредактируем XSLT-преобразование C:\DITA-OT1.5.2\xs\map2hhp.xsl, именно оно ответственно за генерацию файла проекта на основе карты документа. Cтарый переименовали в !OLDmap2hhp.xsl.
полностью не привожу т.к. много места займет.
В строках 159, 160 поменяли
[code:3411rvba]<xsl:text>
Default topic=</xsl:text>[/code:3411rvba]
на
[code:3411rvba]<xsl:text>Default topic=cover.html
</xsl:text>[/code:3411rvba]

Строку 162 закоментировали
[code:3411rvba][/code:3411rvba]

После строки 194 добавили новую строку и написали в ней - cover.html
[code:3411rvba][FILES]
cover.html
</xsl:text>[/code:3411rvba]

[b:3411rvba]Настройка фреймов для XHTML[/b:3411rvba]
Подредактировали файл C:\DITA-OT1.5.2\demo\htmlsearch\basefiles\frameset.html
[code:3411rvba]
<html>
<head><META http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<!--
 This file is part of the DITA Open Toolkit project hosted on
 Sourceforge.net. See the accompanying license.txt file for
 applicable licenses.
 
 © Copyright Shawn McKenzie, 2007. All Rights Reserved.
 *-->
   <title>TOCS</title>
   <link rel="stylesheet" type="text/css" href="css/commonltr.css"/>
 </head>
 <frameset cols="250px,*">
   <frameset rows="60,*" cols="*">  
<frame name="searchwin" src="searchbox.html" scrolling="no" />
<frame name="indexwin" src="tocnav.html"/>
</frameset>
   <frame name="contentwin" src="cover.html"/>
 </frameset><noframes></noframes>
</html>
[/code:3411rvba]

Также подредактировали файл C:\DITA-OT1.5.2\demo\htmlsearch\basefiles\search\indexLoader.js
[code:3411rvba]
/*----------------------------------------------------------------------------
* NexWave javascript for NSI search
*----------------------------------------------------------------------------
 This file is part of the htmlsearch plugin for the DITA-OT
 adapted for NSI documentation.
 Copyright © 2007-2008 NexWave Solutions All Rights Reserved.
  www.nexwave.biz Nadege Quaine
*/
if (true) {
   var tab = new Array("htmlFileList","htmlFileInfoList","0","1","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z");
   
   var headEl = parent.frames['searchwin'].document.getElementsByTagName('head').item(0);
   for (el in tab) {
       script = parent.frames['searchwin'].document.createElement('script');
   
       var scriptTag = document.getElementById('loadScript' + tab[el]);
       if(scriptTag) headEl.removeChild(scriptTag);
       
       script.src = "search/" + tab[el]+ ".js";
       script.id = 'loadScript'+tab[el];
       script.type = 'text/javascript';
       script.defer = true;
       headEl.appendChild(script);
   }
}
[/code:3411rvba]


[b:3411rvba]Настройка каскадных таблиц стилей (CSS) для XHTML и HTMLHelp[/b:3411rvba]
Представление задается в следующих CSS:
[list:3411rvba]
[*:3411rvba]C:\DITA-OT1.5.2\demo\htmlsearch\css\search.css - поисковая панель и результаты поиска[/*:m:3411rvba]
[*:3411rvba]C:\DITA-OT1.5.2\demo\tocjs\basefiles\css\screen.css - панель оглавления (TOC)[/*:m:3411rvba]
[*:3411rvba]C:\DITA-OT1.5.2\demo\tocjs\basefiles\css\[i:3411rvba]<subfolder>[/i:3411rvba]\tree.css - дерево оглавления (TOC)[/*:m:3411rvba]
[*:3411rvba]C:\DITA-OT1.5.2\css\[i:3411rvba]<document.style>[/i:3411rvba].css - Заглавная страница и содержимое топиков. Создайте файл соответствующий свойству document.style стартового билда документа.[/*:m:3411rvba][/list:u:3411rvba]

[b:3411rvba]Настройка локализации навигационного и поискового интерфейса для XHTML[/b:3411rvba]
Для настройки представленя навигационного интерфейса (кнопки в TOC, подсказки от поискового движка) в XHTML на необходимом языке, в зависимости от свойства document.locale в билде документа, надо добавить создать каталог navstrings в директории DITA-OT1.5/demo. В этом каталоге создали файлы en_US.js, ru_RU.js, содержащими строки локализации навигационного и поискового интерфейса.

Внесли изменения в файл C:\DITA-OT1.5.2\build_dita2xhtml.xml - его итак меняли для обложки а теперь еще и добавили туда таргет copy-navstrings котрый копирует нужный файла локализации (en_US.js, ru_RU.js) из паки DITA-OT1.5/demo/navstrings в файл navstrings.js в выходном каталоге документа.

[code:3411rvba]<?xml version="1.0" encoding="UTF-8"?>
<!-- This file is part of the DITA Open Toolkit project hosted on
    Sourceforge.net. See the accompanying license.txt file for
    applicable licenses.-->

<project name="dita2xhtml" default="dita2xhtml">
<property name="transtype" value="xhtml"/>
<import file="build_init.xml"/>
<import file="build_preprocess.xml"/>
<import file="build_general.xml"/>
<target name="dita2xhtml" depends="build-init, preprocess, generate-cover, copy-revflag,
                    copy-css , copy-navstrings, dita.topics.xhtml, dita.inner.topics.xhtml, dita.outer.topics.xhtml">
   </target>
<target name="generate-cover" unless="noMap" description="Build HTML cover file">
<xslt processor="trax" basedir="${dita.temp.dir}" destdir="${output.dir}" includesfile="${dita.temp.dir}${file.separator}${user.input.file.listfile}" classpathref="dost.class.path" style="${dita.script.dir}${file.separator}map2cover.xsl">
<param name="DITAEXT" expression="${dita.ext}" if="dita.ext"/>
<param name="style" expression="${document.style}"/>
<param name="CSS" expression="${args.css.file}" if="args.css.file" />
<param name="CSSPATH" expression="${user.csspath}" if="user.csspath" />
<mapper type="glob" from="${dita.input.filename}" to="cover.html"/>
</xslt>
</target>
<target name="copy-navstrings" description="Copy navigation strigs file">
<copy file="${dita.dir}${file.separator}demo${file.separator}navstrings${file.separator}${document.locale}" tofile="${output.dir}${file.separator}navstrings.js" failonerror="false" overwrite="true"/>
</target>
</project>[/code:3411rvba]

Подредактировали файл C:\DITA-OT1.5.2\demo\tocjs\basefiles\tocnav.html. Т.е. тем самым мы сделали вместо статических элементов управления на английском языке (Expand all/Collapse all) установку их содержимого посредством JavaScript из файла navstrings.js
[code:3411rvba]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!--
 This file is part of the DITA Open Toolkit project hosted on
 Sourceforge.net. See the accompanying license.txt file for
 applicable licenses.
 
 © Copyright Shawn McKenzie, 2007. All Rights Reserved.
 *-->
<html>

<head>
 <title>tocnav</title>
 <link rel="stylesheet" type="text/css" href="css/screen.css"/>
 <link rel="stylesheet" type="text/css" href="css/local/tree.css"/>
 <script type="text/javascript" src="./navstrings.js"></script>
</head>
 
<body>
<div id="container">

 <div id="containerTop">
   
   <div id="main">


 <div id="content">
   <form name="mainForm" action="javscript:;">
   <div class="newsItem">
     

     <div id="expandcontractdiv">
       <script language="JavaScript">
   <!--
   document.write(txt_expand_all);
   // -->
</script>

       <script language="JavaScript">
   <!--
   document.write(txt_collapse_all);
   // -->
</script>

     </div>
     <div id="treeDiv1"></div>

   </div>
   </form>
 </div>
   
     <div id="footerContainer">
       <div id="footer">
<!-- Support<br>
About       --> </div>
     </div>
   </div>
 </div>
</div>

<script type="text/javascript" src="yahoo.js" ></script>
<script type="text/javascript" src="event.js"></script>
<script type="text/javascript" src="treeview.js" ></script>
<script type="text/javascript" src="toctree.js"></script>
</body>
</html>
[/code:3411rvba]

Также перенесли файл searchbox.html из каталога C:\DITA-OT1.5.2\demo\htmlsearch\basefiles\sub в C:\DITA-OT1.5.2\demo\htmlsearch\basefiles и внесли в него изменения. Здесь тоже слово Search/Поиск берется посредством JavaScript из файла navstrings.js. Теперь каталог C:\DITA-OT1.5.2\demo\htmlsearch\basefiles\sub удалим т.к. он пуст (файл cover.html мы в нем уже удаляли).
[code:3411rvba]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head><META http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<link href="./css/search.css" type="text/css" rel="stylesheet"/>
<title>DITA search plugin</title>
<script type="text/javascript" src="./search/addition.js"></script>
<script type="text/javascript" src="./search/indexLoader.js"></script>
<script type="text/javascript" src="./search/nwSearchFnt.js"></script>
<script type="text/javascript" src="./navstrings.js"></script>
</head>
<body>
<div align ="center">
<form onsubmit="Verifie(ditaSearch_Form);return false" name="ditaSearch_Form" class="searchForm">
<center>

<script language="JavaScript">
   <!--
   document.write(txt_search);
   // -->
</script>  
<input name="textToSearch" type="text" class="searchText" id="textToSearch"/><input onclick="Verifie(ditaSearch_Form)" type=image src="img/button.gif" style="width:30px;height:27px" alt="Найти">
</center>
</form>
</div>
</body>
</html>
[/code:3411rvba]
Также внесли изменения в файл C:\DITA-OT1.5.2\demo\htmlsearch\basefiles\search\nwSearchFnt.js,
т.е. здесь тоже все сообщения берутся посредством JavaScript из из файла navstrings.js
[code:3411rvba]htmlfileList="htmlFileList.js";
htmlfileinfoList="htmlFileInfoList.js";

/* Cette fonction verifie la validite de la recherche entrre par l utilisateur */
function Verifie (ditaSearch_Form) {
   
   // Check browser compatibitily
   if (window.opera || navigator.userAgent.indexOf("Konquerer")>-1) {
       
       alert(txt_browser_not_supported);
       return ;
   }

   
   expressionInput=parent.frames['searchwin'].document.ditaSearch_Form.textToSearch.value

   if (expressionInput.length < 1) {

       // expression invalide (vide)      
       alert(txt_enter_at_least_1_char);
       // reactive la fenetre de search (utile car cadres)
       parent.frames['searchwin'].document.ditaSearch_Form.textToSearch.focus() ;
   }
   else {

       // Effectuer la recherche
       Effectuer_recherche(expressionInput);

       // reactive la fenetre de search (utile car cadres)
      parent.frames['searchwin'].document.ditaSearch_Form.textToSearch.focus() ;
   }
}


/* This function parses the search expression, loads the indices and displays the results*/
function Effectuer_recherche(expressionInput) {
     
     /* Display a waiting message */
     //DisplayWaitingMessage();

     /*data initialisation*/
       searchFor=""       // expression en lowercase et sans les caracteres speciaux
       //w = new Object();  // hashtable, key=word, value = list of the index of the html files
       scriptLetterTab = new scriptfirstchar(); // Array containing the first letter of each word to look for
       var scriptsarray =new Array(); // Array with the name of the scripts to load
       var wordsList = new Array(); // Array with the words to look for
       var cleanwordsList = new Array(); // Array with the words to look for after removing spaces
       var listNumerosDesFicStr = "";
       var ou_recherche = true;
       var linkTab = new Array();
       var et_recherche = false;
       var fileAndWordList = new Array();
       var txt_wordsnotfound = "";

       /*nqu: expressionInput, la recherche est lower cased, plus remplacement des char speciaux*/
       searchFor = expressionInput.toLowerCase().replace(/<\//g,"_st_").replace(/\$_/g,"_di_").replace(/\.|%2C|%3B|%21|%3A|@|\/|\*/g," ").replace(/(%20)+/g," ").replace(/_st_/g,"</").replace(/_di_/g,"%24_")

       searchFor = searchFor.replace(/  +/g," ")
       searchFor = searchFor.replace(/ $/,"").replace(/^ /,"")
       wordsList = searchFor.split(" ")
       wordsList.sort();
       
       /* wordsList est la liste des mots de la recherhces separes par des espaces*/
       for (t in wordsList) {
           wordsList[t]=wordsList[t].replace(/(%22)|^-/g,"")
           if (wordsList[t] != "%20") {
               scriptLetterTab.add(wordsList[t].charAt(0));
               cleanwordsList.push(wordsList[t]);
           }
       }

       //load the scripts with the indices: the following lines do not work on the server. To be corrected
       /*if (IEBrowser) {
           scriptsarray = loadTheIndexScripts (scriptLetterTab);
       } */


       var tempTab = new Array();
       for (t in cleanwordsList) {
           if (w[cleanwordsList[t].toString()] == undefined) {
               txt_wordsnotfound +=  cleanwordsList[t] + " ";
           }     else {
               tempTab.push(cleanwordsList[t]);
           }
       }
       cleanwordsList = tempTab;
       
   
       if (cleanwordsList.length) {

           // recherche 'et' et 'ou' en une fois
           fileAndWordList = SortResults(cleanwordsList);
           
           cpt = fileAndWordList.length;
           for (i = cpt-1;i>=0;i--) {
               if (fileAndWordList[i] != undefined) {

                   linkTab.push("

" + txt_results_for + " " + "<span class=\"searchExpression\">" + fileAndWordList[i][0].motsliste + "</span>" + "

");

linkTab.push("
    ");
                       for (t in fileAndWordList[i]) {
                           //DEBUG: alert(": "+ fileAndWordList[i][t].filenb+" " +fileAndWordList[i][t].motsliste);
                           //linkTab.push("
  • <a href=\"../"+fl[fileAndWordList[i][t].filenb]+"\">"+fl[fileAndWordList[i][t].filenb]+"</a></li>");


                           tempInfo = fil[fileAndWordList[i][t].filenb];
                           pos1 = tempInfo.indexOf("@@@");
                           pos2 = tempInfo.lastIndexOf("@@@");
                           tempPath = tempInfo.substring(0, pos1);
                           tempTitle = tempInfo.substring(pos1+3, pos2);
                           tempShortdesc =  tempInfo.substring(pos2+3, tempInfo.length);
                           
                           linkString = "
  • <a href=\""+tempPath+"\">"+tempTitle+"</a>";
                           if ((tempShortdesc!="null")) {
                               linkString += "\n<div class=\"shortdesclink\">"+tempShortdesc+"</div>" ;
                           }
                           linkString += "</li>";
                           
                           linkTab.push(linkString);

                       }
    linkTab.push("
");
               }
           }
       }

     /* Display results */
       with (parent.frames['contentwin'].document) {
               writeln("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">\n<html><head>");
               writeln("<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">");
               writeln("<link href=\"css/commonltr.css\" type=\"text/css\" rel=\"stylesheet\">" );
               writeln("<link rel=\"stylesheet\" type=\"text/css\" href=\"./css/search.css\">") ;
               writeln("<title>"+txt_filesfound+"</title></head>");
               writeln("<body onload = \"self.focus()\">");
               //writeln("<h2>" + txt_search_result + " " + "" + wordsList + "" + "</h2>");
               
               // If no results, display a message
             if ( txt_wordsnotfound != "" ) {writeln("

"+ txt_no_results + "<span class=\"searchExpression\">" + txt_wordsnotfound + "</span>" +"

")}
               
               // If results: display them
               if (linkTab.length > 0  ) {
               
                   /*writeln ("

" + txt_results_for + " " + "<span class=\"searchExpression\">"  + cleanwordsList + "</span>" + "<br/>"+"

");*/
                   write("

");
                   //write("<ul class='searchresult'>");
                   for (t in linkTab) {
                          writeln(linkTab[t].toString())
                   }
                   writeln("

");
               }
               
               writeln ("</body></html>");
               close() ;

       }
}


/* scriptfirstchar: to gather the first letter of index js files to upload */
function scriptfirstchar () {
   this.strLetters="";
   this.add = addLettre ;
}

function addLettre (caract) {

       if (this.strLetters == 'undefined') {
           this.strLetters = caract;
       } else if (this.strLetters.indexOf(caract) < 0) {
           this.strLetters += caract;
       }
       
       return 0;
}
/* end of scriptfirstchar */

/*main loader function*/
/*tab contains the first letters of each word looked for*/
function loadTheIndexScripts (tab) {
       
       //alert (tab.strLetters);
       scriptsarray = new Array();
       
       for (i=0; i<tab.strLetters.length; i++) {

           scriptsarray[i]= "..\/search" + "\/" +tab.strLetters.charAt(i)+ ".js";
       }
       // add the list of html files
       i++;
       scriptsarray[i] = "..\/search" + "\/" + htmlfileList;

       //debug
       for (t in scriptsarray) {
           //alert (scriptsarray[t]);
       }

       tab = new scriptLoader ();
       for (t in scriptsarray) {
         tab.add(scriptsarray[t]);
       }
       tab.load();
       //alert ("scripts loaded");
       return (scriptsarray);
}

/* scriptloader: to load the scripts and wait that it's finished */
function scriptLoader(aScriptList){
   this.cpt = 0;
   this.scriptTab = new Array();
   this.add = addAScriptInTheList ;
   this.load = loadTheScripts ;
   this.onScriptLoaded = onScriptLoadedFunc;
}

function addAScriptInTheList (scriptPath) {
   this.scriptTab.push(scriptPath);
}

function loadTheScripts () {
   var script;
   var head;
   
   head = parent.frames['searchwin'].document.getElementsByTagName('head').item(0);
   
   //script = document.createElement('script');
   
   for (el in this.scriptTab) {
       //alert (el+this.scriptTab[el]);
       script = parent.frames['searchwin'].document.createElement('script');
       script.src = this.scriptTab[el];
       script.type = 'text/javascript';
       script.defer = false;
       
       head.appendChild(script);
   }

}

function onScriptLoadedFunc (e) {
 e = e || window.event;
 var target = e.target || e.srcElement;
 var isComplete = true;
 if (typeof target.readyState != undefined) {

   isComplete = (target.readyState == "complete" || target.readyState == "loaded");
 }
 if (isComplete) {
   ScriptLoader.cpt++;
   if (ScriptLoader.cpt == ScriptLoader.scripts.length) {
       ScriptLoader.onLoadComplete();
   }
 }
}

function onLoadComplete () {
   alert("loaded !!");
}

/* End of scriptloader functions */

/* Array functions */
/*function unique (tab){
for(var y=0;y<tab.length;++y){
for(var z=(y+1);z<=tab.length;++z){
if(tab[y]==tab[z]){
tab.splice(z,1)
}
}
}
   return tab;
} */
// Array.unique( strict ) - Remove duplicate values
function unique ( tab ) {
    var a = new Array();
    var i;
    var l = tab.length;

    if (tab[0] != undefined) {a[0]=tab[0];}
    else {return -1}
   
    for( i=1; i<l; i++ ) {
         if( indexof(a, tab[i], 0 ) < 0 ) {
             a.push( tab[i] );
         }
    }
    return a;
};


function indexof(tab,element,begin) {
   for (i = begin; i<tab.length; i++) {
       if (tab[i] == element) {
           return i;
       }
   }
   return -1;

}
/* end of Array functions */


/*
Param: mots= list of words to look for.
This function creates an hashtable:
- The key is the index of a html file which contains a word to look for.
- The value is the list of all words contained in the html file.

Return value: the hashtable fileAndWordList
*/
function SortResults (mots) {
   
   var fileAndWordList = new Object();
   var fileAndWordList2 = new Object();

   if (mots.length == 0) {
       return null;
   }

   for (t in mots) {
       // get the list of the indices of the files.
       listNumerosDesFicStr = w[mots[t].toString()];
       //alert ("listNumerosDesFicStr "+listNumerosDesFicStr);
       tab = listNumerosDesFicStr.split(",");

       //for each file (file's index):
       for (t2 in tab) {
           temp = tab[t2].toString();
           if (fileAndWordList[temp] == undefined) {
               
               fileAndWordList[temp] = ""+mots[t];
           } else {
                 
               fileAndWordList[temp] += ","+mots[t];
           }
       }
   }

   fileAndWordListValuesOnly = new Array();
   
    // sort results according to values
   var temptab = new Array();
   for (t in fileAndWordList) {
       tab = fileAndWordList[t].split(',');
       temptab.push(new resultPerFile(t,fileAndWordList[t],tab.length));
       fileAndWordListValuesOnly.push(fileAndWordList[t]);
   }
   
   
   //alert("t"+fileAndWordListValuesOnly.toString());
       
   fileAndWordListValuesOnly = unique(fileAndWordListValuesOnly);
   fileAndWordListValuesOnly = fileAndWordListValuesOnly.sort(compare_nbMots);
   //alert("t: "+fileAndWordListValuesOnly.join(';'));

   var listToOutput = new Array();

   for (j in fileAndWordListValuesOnly) {
       for (t in temptab) {
           if (temptab[t].motsliste == fileAndWordListValuesOnly[j]) {
               if (listToOutput[j] == undefined) {
                  listToOutput[j] = new Array(temptab[t]);
               }else {
                  listToOutput[j].push(temptab[t]);
               }

           }
       }
   }

   return listToOutput;
}

function resultPerFile (filenb, motsliste, motsnb) {
   this.filenb = filenb;
   this.motsliste = motsliste;
   this.motsnb = motsnb;
}

function compare_nbMots (s1, s2){
   var t1 = s1.split(',');
   var t2 = s2.split(',');
   //alert ("s1:"+t1.length + " " +t2.length)
   if (t1.length == t2.length) {
       return 0;
   }else if (t1.length > t2.length) {
       return 1;
   }else {
       return -1;
   }
   //return t1.length - t2.length);
}
/* User interfaces functions */
function DisplayWaitingMessage () {

   with (parent.frames['contentwin'].document) {
           writeln("<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html><head>");
           writeln("<meta content=\"text/html; charset=utf-8\" http-equiv=\"Content-Type\" />");
           writeln("<link rel=\"stylesheet\" type=\"text/css\" href=\"./css/commonltr.css\">") ;
           writeln("<link rel=\"stylesheet\" type=\"text/css\" href=\"./css/search.css\">");
           writeln("<title>"+ txt_please_wait +"</title></head>");
           writeln("<body onload = \"self.focus()\">");
           writeln("<h2>"+ txt_please_wait +"</h2></body></html>");
           close();
   }

}
[/code:3411rvba]
 
Пример документа в формате DITA - DITA_OT_Tuning.rar  (DITA-сорцы гайда по настройке тулкита и файл билда) - [u:82c9gi07]http://rghost.ru/18876221[/u:82c9gi07] (на 30 дней выложил 22.08.11)

DITA-OT1.5.2.rar - уже настроенный по гайду тулкит версии 1.5.2 (на декабрь 2010 под наш корпоративный шаблон) - [u:82c9gi07]http://rghost.ru/19010801[/u:82c9gi07] (на 30 дней выложил 23.08.11)

Вообще надо показывать как с ним работать и как перенастраивать…
Кратко опишу  (на примере винды, под линух его тож не проблема использовать - но я не проверял т.к. наши техписы привыкли к винде)
- Распаковываем пример документа DITA_OT_Tuning.rar на диск D:
- Распаковываем тулкит (DITA-OT1.5.2.zip скачанный по ссылке) на диск С:
- Указываем в JAVA_HOME в C:\DITA-OT1.5.2\startcmd.bat вашь путь к яве. У меня например такой C:\Program Files\Java\jdk1.6.0_07
- Запускаем консоль
- Переходим на  C:\DITA-OT1.5.2
[code:82c9gi07]С:
cd C:\DITA-OT1.5.2[/code:82c9gi07]
- запускаем  тулкит
[code:82c9gi07]startcmd.bat[/code:82c9gi07]
- В новом открывшемся окне консоли переходим в папку с моим примером - D:\DITA_OT_Tuning  (нас интересует антовский билд - DITA_OT_Tuning.xml)
[code:82c9gi07]D:
cd DITA_OT_Tuning[/code:82c9gi07]
- Запускаем билд на сборку
[code:82c9gi07]ant –f DITA_OT_Tuning.xml[/code:82c9gi07]

- дожидаемся BUILD SUCCESSFUL

Смотрим что получилось
- В формате HTMLHelp -  D:\DITA_OT_Tuning\Output\htmlhelp\DITA_OT_Tuning.chm
- В формате PDF -  D:\DITA_OT_Tuning\Output\pdf\DITA_OT_Tuning.pdf
- В формате XHTML -  D:\DITA_OT_Tuning\Output\xhtml\frameset.html
- В формате OpenOffice - D:\DITA_OT_Tuning\Output\odt\ (не доделано кажется)

У меня получается вот такой XHTML - xhtml.rar, [u:82c9gi07]http://www.getzilla.net/files/1347181/xhtml.rar.html[/u:82c9gi07]
такой HTMLHelp - DITA_OT_Tuning.chm, [u:82c9gi07]http://www.getzilla.net/files/1347186/dita_ot_tuning.chm.html[/u:82c9gi07]
и такой PDF - DITA_OT_Tuning.pdf, [u:82c9gi07]http://www.getzilla.net/files/1347188/dita_ot_tuning.pdf.html[/u:82c9gi07]

Что бы понять как все это работает потребуются хотя бы средненькие знания XML/XSLT и ANT. Стоит начать с моего стартового билда документа- DITA_OT_Tuning.xml - именно его ма указываем сборщику (ant) и отсюда все начинает собираться -  вызываются другие билды те в свою очередь запускают XSLT-преобразования... и т.д.

[b:82c9gi07]Стартовый билда документа[/b:82c9gi07]
Дабы все наши изменения в тулките работали так как ожидается надо использовать следующий стартовый билд документа.
[code:82c9gi07]<?xml version="1.0" encoding="UTF-8" ?>




<project name="DITA_OT_Tuning" default="all" basedir=".">

<property name="args.input" value="D:\DITA_OT_Tuning\DITA_OT_Tuning.ditamap"/>


<property name="com.output.dir" value="D:\DITA_OT_Tuning\Output"/>





<property name="dita.dir" value="C:\DITA-OT1.5.2"/>


<property name="args.draft" value="no"/>


<property name="document.locale" value="ru_RU"/>


<property name="document.style" value="bercut"/>



















<target name="all">
       <antcall target="xhtml"/>
       <antcall target="htmlhelp"/>
       <antcall target="pdf"/>
       <antcall target="odt"/>
   </target>


<target name="xhtml">
<ant antfile="${dita.dir}${file.separator}build.xml" target="init">

<property name="transtype" value="xhtml"/>


<property name="output.dir" value="${com.output.dir}${file.separator}xhtml"/>


<property name="disableRelatedLinks" value="no" />


<property name="args.css" value="${dita.dir}${file.separator}css${file.separator}${document.style}.css"/>


<property name="args.copycss" value="yes"/>


<property name="args.csspath" value="css"/>









</ant>


<ant antfile="${dita.dir}${file.separator}build.xml" target="indexer">

<property name="htmlrootdir" value="${com.output.dir}${file.separator}xhtml"/>
</ant>
               
               
               <ant antfile="${dita.dir}${file.separator}build.xml" target="dita2tocjs">

<property name="transtype" value="tocjs"/>


<property name="content.frame" value="contentwin"/>


<property name="output.file" value="${com.output.dir}${file.separator}xhtml${file.separator}toctree.js"/>
</ant>


<copy overwrite="true" todir="${com.output.dir}${file.separator}xhtml${file.separator}css">
<fileset dir="${dita.dir}${file.separator}demo${file.separator}htmlsearch${file.separator}css">
<include name="**/*"/>
</fileset>
</copy>


<copy overwrite="true" todir="${com.output.dir}${file.separator}xhtml">
<fileset dir="${dita.dir}${file.separator}demo${file.separator}tocjs${file.separator}basefiles">
<include name="**/*"/>
</fileset>
</copy>

<copy overwrite="true" todir="${com.output.dir}${file.separator}xhtml${file.separator}img">
<fileset dir="${dita.dir}${file.separator}demo${file.separator}img${file.separator}${document.style}">
<include name="**/*"/>
</fileset>
</copy>
</target>



<target name="htmlhelp">

<copy overwrite="true" todir="${com.output.dir}${file.separator}htmlhelp${file.separator}img">
<fileset dir="${dita.dir}${file.separator}demo${file.separator}img${file.separator}${document.style}">
<include name="**/*"/>
</fileset>
</copy>

<ant antfile="${dita.dir}${file.separator}build.xml" target="init">

<property name="transtype" value="htmlhelp+"/>


<property name="output.dir" value="${com.output.dir}${file.separator}htmlhelp"/>


<property name="args.css" value="${dita.dir}${file.separator}css${file.separator}${document.style}.css"/>


<property name="args.copycss" value="yes"/>


<property name="args.csspath" value="css"/>


<property name="plus.topics.class" value="basic"/>


<property name="disableRelatedLinks" value="no" />


<property name="plus.htmlhelp.encoding" value="windows-1251"/>


<property name="plus.topics.encoding" value="windows-1251"/>
</ant>
</target>



<target name="pdf">

<copy overwrite="true" todir="${com.output.dir}${file.separator}pdf${file.separator}Configuration${file.separator}OpenTopic${file.separator}cfg${file.separator}common${file.separator}artwork">
<fileset dir="${dita.dir}${file.separator}demo${file.separator}img${file.separator}${document.style}">
<include name="**/*"/>
</fileset>
</copy>
<ant antfile="${dita.dir}${file.separator}build.xml" target="init">

<property name="transtype" value="pdf2"/>

<property name="retain.topic.fo" value="no" />


<property name="output.dir" value="${com.output.dir}${file.separator}pdf"/>


<property name="disableRelatedLinks" value="no" />
</ant>
</target>


<target name="odt">
<ant antfile="${dita.dir}${file.separator}build.xml" target="init">

<property name="transtype" value="odt"/>

<property name="args.odt.include.rellinks" value="none" />


<property name="output.dir" value="${com.output.dir}${file.separator}odt"/>


<property name="disableRelatedLinks" value="no" />
</ant>
</target>

</project>
[/code:82c9gi07]

Немного объясню суть моего стартовго билда документа, что бы было понятно как вы можете его настроить под ваши нужды. Вам необходимо будет подготавливать такой билд для каждого вашего документа, хотя эту работу могут взять и автоматизированные средства на основе например WEB-интерфеса.
Стартовый билд документа является XML-форматом в синтаксисе понятном сборщику ANT. Поэтому чтобы лучше разобраться с его синтасисом следует почитать документации на ANT.
Начинается он с элемента project:
[code:82c9gi07]<project name="DITA_OT_Tuning" default="all" basedir=".">[/code:82c9gi07]
У него есть два атрибута
[list:82c9gi07]
[*:82c9gi07]default - так называемай таргет по умолчанию - "all", т.е. это та точка в нашем билде куда перейдет управление если вызывать ANT с нашим стартовым билдом и не указывать дополнительных параметров)[/*:m:82c9gi07]
[*:82c9gi07]basedir - путь от которого следует начинать отсчет - тут видно что задан текущий каталог - "." (шеловский синтаксис Unix/Linux)[/*:m:82c9gi07][/list:u:82c9gi07]

Далее следуют глобальные свойства которые "видны" для любого таргета в нашем стартовом билде документа
[list:82c9gi07]
[i:82c9gi07]args.input[/i:82c9gi07] - путь к карте документа;
[i:82c9gi07]com.output.dir[/i:82c9gi07] - путь куда складывать вывод - собсно здесь и появляются наши целевые форматы;
[i:82c9gi07]dita.input.valfile[/i:82c9gi07] - путь к val-файлу - для условной обработки и выделений в тексте (если вы этим пользуетесь);
[i:82c9gi07]dita.dir[/i:82c9gi07] - путь к тулкиту;
[i:82c9gi07]args.draft[/i:82c9gi07] - выводить черновые коментарии или нет - это то что в документе помечается тегом draft;
[i:82c9gi07]document.locale[/i:82c9gi07] - язык документа;
[i:82c9gi07]document.style[/i:82c9gi07] - стиль документа - меняя его получаем разные шаблоны, колонтитулы, заглавные страницы, лого и т.д.
[/list:u:82c9gi07]

[code:82c9gi07]

<property name="args.input" value="D:\DITA_OT_Tuning\DITA_OT_Tuning.ditamap"/>


<property name="com.output.dir" value="D:\DITA_OT_Tuning\Output"/>





<property name="dita.dir" value="C:\DITA-OT1.5.2"/>


<property name="args.draft" value="no"/>


<property name="document.locale" value="ru_RU"/>


<property name="document.style" value="bercut"/>















[/code:82c9gi07]
Далее следуют таргеты задающие сборки в различные форматы. Их порядок не важен.
так таргет "all" (именно его мы указали таргетом по умолчанию в атрибутах проекта) указывает что надо вызвать все остальные таргеты. Т.е. если при вызове нашего билда не указыват дополнительные параметры то просто произойдет сборка во всех форматах сразу...
[code:82c9gi07]

<target name="all">
       <antcall target="xhtml"/>
       <antcall target="htmlhelp"/>
       <antcall target="pdf"/>
       <antcall target="odt"/>
   </target>
[/code:82c9gi07]
Если же при вызове сборки мы укажем дополнительный параметр (совпадающий с именем какого-либо таргета в нашем стартовом билде)то именно, он и запускается и мы получаем документ только в этом формате)
Например так
[code:82c9gi07]ant -f DITA_OT_Tuning.xml xhtml[/code:82c9gi07]

Каждый из таргетов соответствующий определенному выходному формату вызывает некий начальный таргет (target="init") в основном билде тулкита - C:\DITA-OT1.5.2\build.xml.
Это делается с помощью элемента с одноименным названием ant. Вот так
[code:82c9gi07]<ant antfile="${dita.dir}${file.separator}build.xml" target="init">[/code:82c9gi07]
При этом в элементе ant могут задаваться различные свойства с различными свойствами специфичными для каждого формата. Есть и общие свойства например свойство transtype - определяющие формат, свойство output.dir - выходной каталог и т.д.

Например для получения в формате OpenOffice у меня имеется следующий таргет "odt"
[code:82c9gi07]

<target name="odt">
<ant antfile="${dita.dir}${file.separator}build.xml" target="init">

<property name="transtype" value="odt"/>

<property name="args.odt.include.rellinks" value="none" />


<property name="output.dir" value="${com.output.dir}${file.separator}odt"/>


<property name="disableRelatedLinks" value="no" />
</ant>
</target>
[/code:82c9gi07]

для получения PDF таргет "pdf"
[code:82c9gi07]

<target name="pdf">

<copy overwrite="true" todir="${com.output.dir}${file.separator}pdf${file.separator}Configuration${file.separator}OpenTopic${file.separator}cfg${file.separator}common${file.separator}artwork">
<fileset dir="${dita.dir}${file.separator}demo${file.separator}img${file.separator}${document.style}">
<include name="**/*"/>
</fileset>
</copy>
<ant antfile="${dita.dir}${file.separator}build.xml" target="init">

<property name="transtype" value="pdf2"/>

<property name="retain.topic.fo" value="no" />


<property name="output.dir" value="${com.output.dir}${file.separator}pdf"/>


<property name="disableRelatedLinks" value="no" />
</ant>
</target>
[/code:82c9gi07]
Тут transtype задан как pdf2, что говорит о том что используется плагин Idiom

Для получения HTMLHelp таргет "htmlhelp"
[code:82c9gi07]

<target name="htmlhelp">

<copy overwrite="true" todir="${com.output.dir}${file.separator}htmlhelp${file.separator}img">
<fileset dir="${dita.dir}${file.separator}demo${file.separator}img${file.separator}${document.style}">
<include name="**/*"/>
</fileset>
</copy>

<ant antfile="${dita.dir}${file.separator}build.xml" target="init">

<property name="transtype" value="htmlhelp+"/>


<property name="output.dir" value="${com.output.dir}${file.separator}htmlhelp"/>


<property name="args.css" value="${dita.dir}${file.separator}css${file.separator}${document.style}.css"/>


<property name="args.copycss" value="yes"/>


<property name="args.csspath" value="css"/>


<property name="plus.topics.class" value="basic"/>


<property name="disableRelatedLinks" value="no" />


<property name="plus.htmlhelp.encoding" value="windows-1251"/>


<property name="plus.topics.encoding" value="windows-1251"/>
</ant>
</target>
[/code:82c9gi07]

Тут видно что помимо вызова таргета init в основном билде тулкита - build.xml со свойствам transtype=htmlhelp+("+" говорит о том что мы хотим вызвать сборку HTMLHelp с использованием набора плагинов "Plus" Plugins) происходит еще копирование некого каталога с именем ${document.style} (оно задется в глобальных свойства проекта нашего же стартового билда документа) в каталог img выходного каталога. Таким образом происходит включение нужного нам (т.е. заданного глобальным свойством ${document.style}) лого в HTMLHelp.

Для получения XHTML я использую вот такой таргет
[code:82c9gi07]
<target name="xhtml">
<ant antfile="${dita.dir}${file.separator}build.xml" target="init">

<property name="transtype" value="xhtml"/>


<property name="output.dir" value="${com.output.dir}${file.separator}xhtml"/>


<property name="disableRelatedLinks" value="no" />


<property name="args.css" value="${dita.dir}${file.separator}css${file.separator}${document.style}.css"/>


<property name="args.copycss" value="yes"/>


<property name="args.csspath" value="css"/>









</ant>


<ant antfile="${dita.dir}${file.separator}build.xml" target="indexer">

<property name="htmlrootdir" value="${com.output.dir}${file.separator}xhtml"/>
</ant>

<ant antfile="${dita.dir}${file.separator}build.xml" target="dita2tocjs">

<property name="transtype" value="tocjs"/>


<property name="content.frame" value="contentwin"/>


<property name="output.file" value="${com.output.dir}${file.separator}xhtml${file.separator}toctree.js"/>
</ant>


<copy overwrite="true" todir="${com.output.dir}${file.separator}xhtml${file.separator}css">
<fileset dir="${dita.dir}${file.separator}demo${file.separator}htmlsearch${file.separator}css">
<include name="**/*"/>
</fileset>
</copy>


<copy overwrite="true" todir="${com.output.dir}${file.separator}xhtml">
<fileset dir="${dita.dir}${file.separator}demo${file.separator}tocjs${file.separator}basefiles">
<include name="**/*"/>
</fileset>
</copy>

<copy overwrite="true" todir="${com.output.dir}${file.separator}xhtml${file.separator}img">
<fileset dir="${dita.dir}${file.separator}demo${file.separator}img${file.separator}${document.style}">
<include name="**/*"/>
</fileset>
</copy>
</target>
[/code:82c9gi07]
Тут видно что помимо вызова таргета init в основном билде тулкита - build.xml со свойствам transtype=xhtml (т.е. в данном случае плагины "Plus" Plugins не используются), еще вызываются таргеты indexer и dita2tocjs (это таргеты соответственно для плагина HTMLSearch Plugin и TOC Navigation Plugin. Я их интегрировал внутрь основного build-файла тулкита на этапе настройки DITA-тулкита).
Также происходит копирование трех каталогов в выходной каталог - это каталог стилями CSS, лого определяемоемое посредством ${document.style} и наконец JavaScript-файлы TOC-навигации.




[b:82c9gi07]Настройка карты документа[/b:82c9gi07]
В карте документа ditamap нужно задать метаданные
удобно просто добавить их в темплейт вашего XML-редактора
Эти метаданные в конечном счете попадают на заголовочные страницы и в колонтитулы
[code:82c9gi07]<topicmeta>
   <shortdesc>В данном документе представлено описание настройки DITA
   OT.</shortdesc>

   <author type="creator">Олег Алексеев</author>

   <source/>

   <publisher>Bercut ltd.</publisher>

   <copyright>
     <copyryear year="2010"/>

     <copyrholder>Bercut Ltd.</copyrholder>
   </copyright>

   <critdates>
     <created date="01.01.2010"/>
   </critdates>

   <prodinfo>
     <prodname>Настройка DITA OT</prodname>

     <vrmlist>
       <vrm version="1.1"/>
     </vrmlist>
   </prodinfo>

   <othermeta content="Руководство по настройке" name="doctype"/>

   <othermeta content="1.0" name="docedition"/>
 </topicmeta>[/code:82c9gi07]
Ну и не забываем указать язык в карте
[code:82c9gi07]<map id="dita_tuning" xml:lang="ru-ru">[/code:82c9gi07]

[b:82c9gi07]Рекомендации по работе с редактром XML-Mind [/b:82c9gi07]
(кстати у нас таки прикупили лецензии на Oxigen author)

Настроим автоматическое сохраннение в кодировке UTF-8
Options->Preferences->Save->Encoding=UTF-8

Добавим поддержку DITA DTD. Для этого надо установить с сайта разработчиков  XML-Mind плагин (в их терминалогии Add-ons) - DITA configuration based on OASIS DTD


Что бы длинные слова (например длинные имена переменных на аглийском) не залазили на соседние ячейки таблицы и не выходили за пределы страницы в PDF предлагается использовать специальный символ пробела нулевой длины  (zero width spaces, U+200B или ​).

Проблема в том что поиск такого слова не будет работать. В chm он отображается квадратиком т.к. Microsoft HTMLHelp WorkShop не поддерживает русский Unicode (мы используем кодировку Windows 1251 в которой этого символа нету). Поэтому для удаления этого символа из содержимого при сборке в htmlhelp (и до кучи в xhtml) я добавил в C:\DITA-OT1.5.2\xsl\xslhtml\ dita2htmlImpl.xsl

такой шаблон

[code:82c9gi07]
 <xsl:template match="text()">
       <xsl:value-of select="translate(.,'​','')" />
 </xsl:template>[/code:82c9gi07]

Шаблон удаляет (транслирует) этот символ в пустой символ ‘’.


P.S. если кому надо настроить под ваш шаблон и показать как это делается  - обращайтесь, обсудим - o_alekseev@mail.ru
Oleg.alekseev@bercut.com
 
Цитата
Цитата
XEP тогда давал лучший результат но он платен а это зло...
Сейчас XEP не дает лучший результат.  fop 0.94 и 0.95 и ссылки в оглавлении делает и алфавитный указатель и все, с чем были проблемы три года назад  :D
Ну я два-три года назад и использовал  FOP 0.95
Алфавитный указатель точно в FOP нормально не работал - по моему и щас на русском не особо получается - над уточнит у отдела документации
Были еще у FOP траблы с полной поддержкой спецификации  XSLT - с переносами из-за этого выстраивал костыли в XSLT-преобразованиях - дабы сборка нормально отрабатывала - стреляло ток при определенных условиях...

Также примечания предупреждения глоссарий - это представляется как XSL FO табличные структуры  - Xep поддерживает разные ширины колонок и они хорошо в конечном счете выглядят в pdf - e FOP так не получается сделать...


ща не помню уже что да как - но могу вспомнить сли интересует что там делалось...
 
Цитата
FOP T - с переносами
Я не мог их делать в Ditaot 1.2 с любой версией fop. В 1.5* можно "играться" в XSLT с настройками переносов.
Цитата

Также примечания предупреждения глоссарий - это представляется как XSL FO табличные структуры  - Xep поддерживает разные ширины колонок и они хорошо в конечном счете выглядят в pdf
С таблицами тоже все отлично, но надо править стили. В общем чтобы не платить, надо чуток "подпилить"  :D
Ведь XEP это такой же "допиленный" кем-то  FOP.
 
Цитата
С таблицами тоже все отлично, но надо править стили. В общем чтобы не платить, надо чуток "подпилить"  :D
Ведь XEP это такой же "допиленный" кем-то  FOP.
Ну с таблицами все Ok - вот проблема с примечанием, когда в них имеется префикс-картинка...
[attachment=0:2ijuweyb]samle2.png[/attachment:2ijuweyb]

Причем я просматривал получающийся FO файл  - который потом ест FOP - с ним все Ok
XEP его же обрабатывет и нормальный PDF выдает

Сдвинуть не проблема (добавлял в XSLT-отрицательную отбивку) но проблема в том что тогда плывет глоссарий
возможно решение и есть но это будет костыль, закрывающий  баг - спеку почитал - ну не должно быть так -

А теперь если это примечание вставить внутри таблицы то оно вообще кудато уезжает в PDF - пришлось отказаться от использования примечаний и т.д. внутри таблиц. С XEP усе ok было... и рекламу нелицензионной версии  преодолеть оказалось просто - делаем побольше размер страницы и нижнего поля, а когда получился PDF - отрезаем (на самом деле скрываем) участок с рекламой - муторно оно канешн

И так эт все и осталось т.к. с DITA я завершил эксперименты на тот момент

думаю что XEP как и антенахаус не использовал исходники FOP. - иначе это было бы нарушение открытой лицензии
Страницы: 1 2 След.
Читают тему