0

この質問は次のとおりです: DITA-OT を使用してカスタム ANT パラメーターをカスタム プラグインに渡すことは可能ですか?

DITA-OT/plugins フォルダーの下にcom.mymods.pdfというプラグイン フォルダーがあります。以下では、構造とファイルについて簡単に説明します (この例に厳密に従いますhttp://dita-ot.github.io/1.8/readme/dita2pdf-customization.html )。プラグインは機能しますが、ANT コマンド ライン パラメーターを mycustom.xsl に渡したいと思います。

com.mymods.pdf/
  cfg/
    common/
      vars/
        en.xml
    fo/
      attrs/
        mycustom.xsl
      xsl/
        mycustom.xsl
    catalog.xml
  integrator.xml
  plugin.xml
  build_mymods_pdf_template.xml (dita2com.mymods.pdf.init   target is here and it depends on dita2pdf2)
  build.xml (<project><import file="build_mymods_pdf.xml"/></project>)
  insertParameters.xml (see the linked question for contents)

では、どこに変更を適用したり、新しいファイルを追加したりする必要があるのでしょうか?

「dita2mymodsPDF」を使用するためのターゲットとトランスタイプを持つ「mainANT.xml」を使用して、別の場所からプラグインを使用します。

plugin.xml コード:

<?xml version='1.0' encoding='UTF-8'?>
<plugin id="com.mymods.pdf">
<require plugin="org.dita.pdf2" />
<feature extension="dita.conductor.transtype.check" value="com.mymods.pdf" />
<feature extension="dita.transtype.print" value="com.mymods.pdf" />
<feature extension="dita.conductor.target.relative" file="integrator.xml" />
<feature extension="dita.conductor.com.mymods.pdf.param" file="insertParameters.xml"/>
<extension-point id="dita.conductor.com.mymods.pdf.param" name="PDF XSLT parameters"/>
</plugin>

build_mymods_pdf_template.xml コード:

<?xml version='1.0' encoding='UTF-8'?>
<project name="com.mymods.pdf" default="com.mymods.pdf">
<property name="transtype" value="com.mymods.pdf"/>

<target name="dita2com.mymods.pdf.init">
<property location="${dita.plugin.com.mymods.pdf.dir}/cfg" name="customization.dir" />
<property location="${dita.plugin.com.mymods.pdf.dir}/xsl/fo/topic2fo_shell_fop.xsl" name="args.xsl.pdf" />
<property name="args.chapter.layout" value="BASIC" />
<property name="args.bookmark.style" value="COLLAPSED" />
<!--property name="args.fo.include.rellinks" value="nofamily" /-->
</target>
<target depends="dita2com.mymods.pdf.init, dita2pdf2" name="dita2com.mymods.pdf" />
</project>

また、integrator.xml コード:

<?xml version='1.0' encoding='UTF-8'?>
<project name="com.mymods.pdf">
<target name="dita2com.mymods.pdf.init">
<property location="${dita.plugin.com.mymods.pdf.dir}/cfg" name="customization.dir" />
<property location="${dita.plugin.com.mymods.pdf.dir}/xsl/fo/topic2fo_shell_fop.xsl" name="args.xsl.pdf" />
<property name="args.chapter.layout" value="BASIC" />
<property name="args.bookmark.style" value="COLLAPSED" />
<!--property name="args.fo.include.rellinks" value="nofamily" /-->
</target>
<target depends="dita2com.mymods.pdf.init, dita2pdf2" name="dita2com.mymods.pdf" />
</project>

integrator.xml または build_mymods_pdf_template.xml が実際にそうあるべきかどうかは完全にはわかりません。しかし、このファイルセットは機能し、mycustom.xsl を使用します (属性には other、XSLT オーバーライドには other)。ここでの問題は、プラグインがその値を認識できるように、独自のカスタム ANT パラメータを取得する方法です。

これは pdf2 プラグインの場合は非常に簡単ですが、まだcom.mymods.pdf内で動作させることはできません。正常に動作している「mycustom.xsl」ファイルがどこにあるかを示すだけなので、catalog.xml を投稿する必要はないと思います。

4

3 に答える 3

1

これを行うための最もクリーンな方法ではなく、本当に簡単な方法は次のとおりです。

注: これは、DITA-OT 1.8.4 の他のバージョンに対する適合性チェックに適用されます。

  1. http://dita-ot.github.io/1.8/readme/dita2pdf-customization.htmlの説明に従って、カスタム PDF プラグインを作成します。

  2. 次のように「insertParameters.xml」を作成します: http://dita-ot.github.io/1.8/dev_ref/plugin-xsltparams.html

私の場合、次のカスタム パラメーターを使用します。

<?xml version='1.0' encoding='UTF-8'?>
<dummy>
 <!-- EXAMPLE: <param name="paramNameinXSLT" expression="${antProperty}" if="antProperty"/> -->
<param name="custom.data1" expression="${custom.data1}" if="custom.data1"/>
<param name="custom.data2" expression="${custom.data2}" if="custom.data2"/>
</dummy>
  1. この「insertParameters.xml」をDITA-OT\plugins\org.dita.pdf2にドロップします。

  2. xsl\custom.xsl配下の custom.xsl に処理を作成します。

custom.xsl のコード スニペットの例を次に示します。

<?xml version='1.0' encoding='UTF-8'?>
<snippet>
<xsl:param name="custom.data1"/>
<xsl:param name="custom.data2"/>
<fo:block><xsl:value-of select="$custom.data1"/></fo:block>
<fo:block><xsl:value-of select="$custom.data2"/></fo:block>
</snippet>
  1. Integrator.xml を実行して、変更を DITA-OT に統合します。

  2. 次のような PDF シナリオを実行するためのコマンド ライン コマンドを指定します。

  3. プロセスを実行して PDF を作成すると、パラメーターが表示されます。

この質問が実際に達成しようとしていたことは、カスタム プラグインでこれらすべてが 100% 機能するように設定するための段階的な指示を取得することであり、DITA-OT デフォルト プラグインに追加する必要があるものは 1 つもありません (pdf2 に単一のファイルを追加する必要はありません)。このソリューションのようなフォルダー)。これにより、今後の DITA-OT の更新が非常に簡単になる可能性があります。

于 2014-04-07T13:16:30.783 に答える
1

クリーナー?このアプローチの代替手段は

  • insertParameters.xmlDITA-OT 1.8.5 のルートにプレースホルダーを追加します。このファイルは、標準の DITA-OT 1.8.5 には存在しません

    <?xml version='1.0' encoding='UTF-8'?>
    <dummy>
        <param name="dummy" expression="{$dummy} if="dummy"/>
    </dummy>
    
  • オーバーライドinsertParameters.xmlをプラグインのルートに追加します

    <?xml version='1.0' encoding='UTF-8'?>
    <dummy>
        <param name="my.runtime.parameter" expression="{$my.runtime.parameter} if="my.runtime.parameter"/>
    </dummy>
    

次に実行しますant -f integrator.xml

于 2015-12-03T19:13:59.437 に答える