2017-02-21 54 views
0

Я создал пользовательский Xhtml плагин как этогосоздания плагина пользовательского XHTML не index.html осуществление

моего plugin.xml код

<?xml version="1.0" encoding="UTF-8"?> 
<!-- 
    This file is part of the DITA Open Toolkit project. 
    See the accompanying license.txt file for applicable licenses. 
--> 
<plugin id="com.custom.xhtml"> 
    <!-- extensions --> 
    <feature extension="dita.xsl.xhtml" file="xslhtml/dita2xhtml.xsl"/> 
    <feature extension="dita.conductor.transtype.check" value="xhtml-custom" type="txt"/> 
    <feature extension="dita.conductor.target.relative" file="build.xml"/> 
    <!-- change value to match your custom transtype --> 
</plugin> 

код build.xml является

<?xml version="1.0" encoding="UTF-8"?> 
<project name="com.custom.xhtml"> 
    <import file="build_transtype-custom.xml"/> 
</project> 

build_transtype-custom.xml is

<project name="xhtml-custom" default="dita2xhtml-custom"> 
<property name="transtype" value="xhtml-custom"/> 
<target name="dita2xhtml-custom"> 
<echo>custom HTML transform</echo> 
<!-- Set properties here --> 
<antcall target="dita2xhtml"/> 
</target> 
</project> 

тогда я приклеил папку Xsl база плагина подгонял плагин я изменил Xsl имени dita2xhtml.xsl

<?xml version="1.0" encoding="UTF-8" ?> 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> 

<xsl:import href="dita2html-base.xsl"/> 

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

<xsl:variable name="source-chars" select="'ABCDEFGHIJKLMNOPQRSTUVWXYZ .'"/> 
<xsl:variable name="target-chars" select="'abcdefghijklmnopqrstuvwxyz__'"/> 



<xsl:template match="task"> 
<div class="topic"> 
<xsl:attribute name="id"> 
<xsl:value-of select="attribute::id"/> 
</xsl:attribute> 
<xsl:apply-templates/> 
</div> 
</xsl:template> 



<xsl:template match="task/title"> 
<h1>Chapter <xsl:number count="task"/>. <xsl:apply-templates/><xsl:text>&#x00A0;</xsl:text><script type="text/javascript" language="JavaScript" src="find5.js"><xsl:text>&#x200B;</xsl:text></script></h1> 
</xsl:template> 

<xsl:template match="section"> 
<div class="section" id="{translate(title, $source-chars, $target-chars)}"> 
<xsl:apply-templates/> 
</div> 
</xsl:template> 


<xsl:template match="taskbody"> 
<div> 
<xsl:apply-templates/> 
</div> 
</xsl:template> 

<xsl:template match="title"> 

<h2 class="sectiontitle"> 
<xsl:apply-templates/> 
</h2> 

</xsl:template> 


<xsl:template match="p"> 
<p> 
<xsl:apply-templates/> 
</p>  
</xsl:template> 

<xsl:template match="steps"> 
<ol> 
<xsl:apply-templates/> 
</ol>  
</xsl:template> 

<xsl:template match="step"> 
<li> 
<xsl:apply-templates/> 
</li>  
</xsl:template> 

<xsl:template match="cmd"> 
<span> 
<xsl:apply-templates/> 
</span>  
</xsl:template> 

<xsl:template match="b"> 
<strong> 
<xsl:apply-templates/> 
<xsl:text>&#x200B;</xsl:text> 
</strong>  
</xsl:template> 

<xsl:template match="menucascade"> 
<span class="menucascade"> 
<xsl:apply-templates/> 
</span>  
</xsl:template> 

<xsl:template match="uicontrol"> 
<span class="uicontrol"> 
<xsl:apply-templates/> 
</span>  
</xsl:template> 

<xsl:template match="filepath"> 
<span class="filepath"> 
<xsl:apply-templates/> 
</span>  
</xsl:template> 

<xsl:template match="xref"> 
<xsl:apply-templates/> 
</xsl:template> 

<xsl:template match="info"> 
<div> 
<xsl:apply-templates/> 
</div>  
</xsl:template> 

<xsl:template match="i"> 
<em> 
<xsl:apply-templates/> 
</em>  
</xsl:template> 








<!-- Add both lang and xml:lang attributes --> 
<xsl:template match="@xml:lang" name="generate-lang"> 
<xsl:param name="lang" select="."/> 
<xsl:attribute name="xml:lang"> 
<xsl:value-of select="$lang"/> 
</xsl:attribute> 
<xsl:attribute name="lang"> 
<xsl:value-of select="$lang"/> 
</xsl:attribute> 
</xsl:template> 




</xsl:stylesheet> 

затем изменила XSL шаблона с именем map2htmtocImpl.xsl именем, как генерировать-TOC в xslhtml \ map2htmtoc папки как как этот шаблон

изменения только сделали

<xsl:template name="generate-toc"> 
<html style="overflow-y:auto"><xsl:value-of select="$newline"/> 
<head><xsl:value-of select="$newline"/><title>Configuring Workflow</title><xsl:value-of select="$newline"/> 
<xsl:value-of select="$newline"/> 
<xsl:call-template name="generateDefaultCopyright"/> 
<xsl:call-template name="generateCharset"/> 
<xsl:if test="string-length($contenttarget)>0 and 
      $contenttarget!='NONE'"> 
<base target="{$contenttarget}"/> 
<xsl:value-of select="$newline"/> 
</xsl:if> 
<!-- initial meta information --> 
<!-- Set the character set to UTF-8 --> 
<!-- Generate a default copyright, if needed --> 
<xsl:call-template name="generateDefaultMeta"/> <!-- Standard meta for security, robots, etc --> 
<xsl:call-template name="copyright"/>   <!-- Generate copyright, if specified manually --> 
<xsl:call-template name="generateCssLinks"/> <!-- Generate links to CSS files --> 
<xsl:call-template name="generateMapTitle"/> <!-- Generate the <title> element --> 
<xsl:call-template name="gen-user-head" /> <!-- include user's XSL HEAD processing here --> 
<xsl:call-template name="gen-user-scripts" /> <!-- include user's XSL javascripts here --> 
<xsl:call-template name="gen-user-styles" /> <!-- include user's XSL style element and content here --> 
</head><xsl:value-of select="$newline"/> 

<body> 
<xsl:if test="string-length($OUTPUTCLASS) &gt; 0"> 
<xsl:attribute name="class"> 
<xsl:value-of select="$OUTPUTCLASS"/> 
</xsl:attribute> 
</xsl:if> 
<xsl:value-of select="$newline"/> 
<nav><xsl:value-of select="$newline"/> 
<div xmlns:glossdata="http://dita4publishers.org/glossdata" xmlns:mapdriven="http://dita4publishers.org/mapdriven" xmlns:enum="http://dita4publishers.org/enumerables" class="dynamic-toc"><xsl:value-of select="$newline"/> 
<div id="container" ><xsl:value-of select="$newline"/> 
<div id="containerTop"><xsl:value-of select="$newline"/> 
<div id="main"><xsl:value-of select="$newline"/> 
<div id="content"><xsl:value-of select="$newline"/> 
<form name="mainForm" action="javscript:;"><xsl:value-of select="$newline"/> 
<div class="newsItem"><xsl:value-of select="$newline"/> 
<div id="expandcontractdiv"><xsl:value-of select="$newline"/> 
<a href="javascript:tree.expandAll()" class="treetools">Expand all</a><xsl:value-of select="$newline"/> 
<a href="javascript:tree.collapseAll()" class="treetools">Collapse all</a><xsl:value-of select="$newline"/> 
</div><xsl:value-of select="$newline"/> 
<div id="treeDiv1"> </div><xsl:value-of select="$newline"/> 
</div><xsl:value-of select="$newline"/> 
</form><xsl:value-of select="$newline"/> 
</div><xsl:value-of select="$newline"/> 
</div><xsl:value-of select="$newline"/> 
</div><xsl:value-of select="$newline"/> 
</div><xsl:value-of select="$newline"/> 
</div><xsl:value-of select="$newline"/> 
<xsl:apply-templates/> 
</nav><xsl:value-of select="$newline"/> 
<iframe class="contentwin" id="contentwin" name="contentwin" src="test.html">  
</iframe><xsl:value-of select="$newline"/> 
<div id="footer" class="footer"></div><xsl:value-of select="$newline"/> 
<script xmlns:glossdata="http://dita4publishers.org/glossdata" xmlns:mapdriven="http://dita4publishers.org/mapdriven" xmlns:enum="http://dita4publishers.org/enumerables" type="text/javascript" src="yahoo.js"> </script><xsl:value-of select="$newline"/> 
<script xmlns:glossdata="http://dita4publishers.org/glossdata" xmlns:mapdriven="http://dita4publishers.org/mapdriven" xmlns:enum="http://dita4publishers.org/enumerables" type="text/javascript" src="event.js"> </script><xsl:value-of select="$newline"/> 
<script xmlns:glossdata="http://dita4publishers.org/glossdata" xmlns:mapdriven="http://dita4publishers.org/mapdriven" xmlns:enum="http://dita4publishers.org/enumerables" type="text/javascript" src="treeview.js"> </script><xsl:value-of select="$newline"/> 
</body><xsl:value-of select="$newline"/> 
</html> 
</xsl:template> 

тогда я запустить команду integrator.xml муравей -f integrator.xml в командной строке после этого я запустить преобразование имени Xhtml-обычая в кислороде, то я GE преобразование к рабу успешным, но кислород показывает некоторую ошибку, как показано ниже

System ID: E:\task\Test.ditamap 
Scenario: Test (xhtml-common) 
Input file: E:\task\Test.ditamap 
Engine name: DITA-OT 
Severity: error 
Description: Ambiguous rule match for /task/taskbody[1]/steps[1]/step[3]/cmd[1]/image[1] 

System ID: E:\task\Test.ditamap 
Scenario: Test (xhtml-common) 
Input file: E:\task\Test.ditamap 
Engine name: DITA-OT 
Severity: error 
Description: Ambiguous rule match for /task/taskbody[1]/steps[1]/step[6]/info[1]/image[1] 

System ID: E:\task\Test.ditamap 
Scenario: Test (xhtml-common) 
Input file: E:\task\Test.ditamap 
Engine name: DITA-OT 
Severity: error 
Description: Ambiguous rule match for /task/taskbody[1]/steps[1]/step[7]/stepresult[1]/image[1] 

System ID: E:\task\Test.ditamap 
Scenario: Test (xhtml-common) 
Input file: E:\task\Test.ditamap 
Engine name: DITA-OT 
Severity: error 
Description: Ambiguous rule match for /task/taskbody[1]/steps[1]/step[9]/info[1]/image[1] 

System ID: E:\task\Test.ditamap 
Scenario: Test (xhtml-common) 
Input file: E:\task\Test.ditamap 
Engine name: DITA-OT 
Severity: error 
Description: Ambiguous rule match for /task/taskbody[1]/steps[1]/step[8]/info[1]/image[1] 

System ID: E:\task\Test.ditamap 
Scenario: Test (xhtml-common) 
Input file: E:\task\Test.ditamap 
Engine name: DITA-OT 
Severity: error 
Description: Ambiguous rule match for /task/taskbody[1]/steps[1]/step[12]/cmd[1]/image[1] 

и index.html, который создается с помощью преобразующего изменения шаблона не прилагая

Пожалуйста, помогите мне по этому вопросу

ответ

2

Вы, кажешься для двух вариантов использования: 1) Настроить вывод HTML, созданный для каждой темы. 2) Настройте вывод HTML, созданный для содержимого index.html.

Ответ будет в основном примерно (1). только в вашем plugin.xml добавить это расширение:

<feature extension="dita.xsl.xhtml" file="xslhtml/dita2xhtml.xsl"/> 

ваш заказ «dita2xhtml.xsl» будет вклад как XSLT настройки стилей для всех XHTML на основе результатов. Таким образом, расширение не будет ограничиваться вашим настраиваемым transtype, даже базовый вывод XHTML будет использовать ваши изменения XSLT. Ваш собственный «dita2xhtml.xsl» не будет основной таблицей стилей XSLT при преобразовании, но шаблоны xsl: temp, которые вы пишете в нем, будут иметь приоритет над таковыми в базовых таблицах стилей XSLT. Поэтому ваш пользовательский «dita2xhtml.xsl» не должен содержать импорт в другие таблицы стилей XSLT, такие как «dita2html-base.xsl», которые вы, вероятно, скопировали из базового модуля XHTML, должны содержать только шаблоны xsl:, которые переопределяют базовую обработку. Ваша пользовательская обработка XSLT будет применяться, когда темы DITA будут преобразованы в эквивалентные HTML-файлы.

Если вы также хотите повлиять на то, как генерируется index.html (оглавление), существует еще одно расширение плагина, называемое «dita.xsl.htmltoc», которое вы можете объявить в файле plugin.xml и указать на другое пользовательская таблица стилей XSLT, которая переопределит шаблоны, указанные в базовом плагине XHTML для обработки TOC.

Но, как я уже упоминал, расширения «dita.xsl.xhtml» и «dita.xsl.htmltoc» будут применяться ко всем выходам на основе XHTML, в том числе к выходу XHTML по умолчанию.

Если вы хотите, чтобы ваши настройки XSLT применялись только для пользовательских типов трансформации, все становится сложнее, вы больше не объявляете расширения в файле plugin.xml, а в своем «build_transtype-custom.xml» вместо того, чтобы добавлять простой antcall к главной целью XHTML:

<antcall target="dita2xhtml"/> 

вы могли бы сделать что-то вроде:

<target name="dita2xhtml-custom"> 
    <echo>custom HTML transform</echo> 
    <property name="args.xsl" value="${dita.plugin.com.custom.xhtml.dir}/xslhtml/dita2xhtml.xsl"/> 
    <antcall target="dita2xhtml"/> 
</target> 

После вы сделаете это, ваш заказ «dita2xhtml.xsl» станет основной таблицы стилей XSLT применяется при производстве файла HTML для каждой теме DITA. Так что ваш заказ «dita2xhtml.xsl» нужно будет иметь импорт в обработке базы XHTML XSLT:

<xsl:import href="plugin:org.dita.xhtml:xsl/dita2xhtml.xsl"/> 
+0

Спасибо @Radu Coravu Its работает, но для toc.js поколения, frameset.html, фреймами-нав. html и graphicMap.xml, какие команды мне нужно добавить в plugin.xml, пожалуйста, дайте мне предложение об этом – User515

+0

Эти ресурсы не генерируются по умолчанию базовым XHTML-выходом. Проект DITA для издателей: https://github.com/dita4publishers имеет плагины DITA OT, которые из того, что я помню, могут использоваться для создания набора фреймов, а также генерируют файл «graphicMap.xml». –

 Смежные вопросы

  • Нет связанных вопросов^_^