0

prcitem1xsl fo では、 usingと呼ばれる要素にラベルを付ける/カウントする必要がありますが、 という名前の 2 番目の子孫を持つ要素xsl:numberのみをターゲットにしたいと考えています。prcitem1para

番号付けは、ラベル付けされた要素が今説明したものだけであるという意味で機能しますがprcitem1、基準に適合しない要素がある場合、ラベルが表示されなくてもカウントされます。prcitem1これにより、最初の要素が基準に適合しないにもかかわらずカウントされるため、A. ではなく B. から始まるように、番号付けが正しくなくなります。

を使用して<xsl:number count="self::*[./prcitem1/para] format="A" from="task"います。タスクはの包含要素であり、テンプレートprcitem1内からカウントしています。prcitem1誰でもこれを処理する方法を知っていますか?

4

1 に答える 1

0

あなたはこのように数える必要があるだけですprcitem1[para]

<xsl:number format="A" from="task" count="prcitem1[para]"/>

これが例です。それはあなたのものと正確に一致しないかもしれませんが、近いはずです...

XML入力

<doc>
    <task>
        <prclist1>
            <prcitem1>
                <prcitem>
                    <para>prcitem 1A</para>
                </prcitem>
            </prcitem1>
            <prcitem1>
                <prcitem>
                    <para>prcitem 2A</para>
                </prcitem>
            </prcitem1>
            <prcitem1/>
            <prcitem1>
                <prcitem>
                    <para>prcitem 4A</para>
                </prcitem>
            </prcitem1>
        </prclist1>
        <prclist1>
            <prcitem1>
                <prcitem>
                    <para>prcitem 1B</para>
                </prcitem>
            </prcitem1>
            <prcitem1/>
            <prcitem1>
                <prcitem>
                    <para>prcitem 3B</para>
                </prcitem>
            </prcitem1>
            <prcitem1>
                <prcitem>
                    <para>prcitem 4B</para>
                </prcitem>
            </prcitem1>
        </prclist1>
    </task>
</doc>

XSLT 2.0(そのまま1.0として動作します。)

<xsl:stylesheet version="2.0" xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output indent="yes"/>
    <xsl:strip-space elements="*"/>

    <xsl:template match="doc">
        <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
            <fo:layout-master-set>
                <fo:simple-page-master master-name="my-page" page-width="8.5in" page-height="11in">
                    <fo:region-body margin="1in" margin-top="1.5in" margin-bottom="1.5in"/>
                </fo:simple-page-master>
            </fo:layout-master-set>
            <fo:page-sequence master-reference="my-page">
                <fo:flow flow-name="xsl-region-body">
                    <xsl:apply-templates/>
                </fo:flow>
            </fo:page-sequence>
        </fo:root>
    </xsl:template>

    <xsl:template match="prclist1">
        <fo:list-block font-size="10pt" provisional-distance-between-starts="24pt" space-before=".1in" space-after=".1in" keep-with-next.within-page="always">
            <xsl:apply-templates/>
        </fo:list-block>
    </xsl:template>

    <xsl:template match="prcitem1[prcitem/para]">
        <fo:list-item>
            <fo:list-item-label end-indent="label-end()" font-size="12pt" font-weight="bold">
                <fo:block>
                    <xsl:number format="A" from="task" count="prcitem1[prcitem/para]"/>
                </fo:block>
            </fo:list-item-label>
            <fo:list-item-body start-indent="body-start()" font-size="12pt">
                <fo:block>
                    <xsl:apply-templates select="prcitem/para"/>
                </fo:block>
            </fo:list-item-body>
        </fo:list-item>
    </xsl:template>

</xsl:stylesheet>

FO出力

<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
   <fo:layout-master-set>
      <fo:simple-page-master master-name="my-page" page-width="8.5in" page-height="11in">
         <fo:region-body margin="1in" margin-top="1.5in" margin-bottom="1.5in"/>
      </fo:simple-page-master>
   </fo:layout-master-set>
   <fo:page-sequence master-reference="my-page">
      <fo:flow flow-name="xsl-region-body">
         <fo:list-block font-size="10pt"
                        provisional-distance-between-starts="24pt"
                        space-before=".1in"
                        space-after=".1in"
                        keep-with-next.within-page="always">
            <fo:list-item>
               <fo:list-item-label end-indent="label-end()" font-size="12pt" font-weight="bold">
                  <fo:block>A</fo:block>
               </fo:list-item-label>
               <fo:list-item-body start-indent="body-start()" font-size="12pt">
                  <fo:block>prcitem 1A</fo:block>
               </fo:list-item-body>
            </fo:list-item>
            <fo:list-item>
               <fo:list-item-label end-indent="label-end()" font-size="12pt" font-weight="bold">
                  <fo:block>B</fo:block>
               </fo:list-item-label>
               <fo:list-item-body start-indent="body-start()" font-size="12pt">
                  <fo:block>prcitem 2A</fo:block>
               </fo:list-item-body>
            </fo:list-item>
            <fo:list-item>
               <fo:list-item-label end-indent="label-end()" font-size="12pt" font-weight="bold">
                  <fo:block>C</fo:block>
               </fo:list-item-label>
               <fo:list-item-body start-indent="body-start()" font-size="12pt">
                  <fo:block>prcitem 4A</fo:block>
               </fo:list-item-body>
            </fo:list-item>
         </fo:list-block>
         <fo:list-block font-size="10pt"
                        provisional-distance-between-starts="24pt"
                        space-before=".1in"
                        space-after=".1in"
                        keep-with-next.within-page="always">
            <fo:list-item>
               <fo:list-item-label end-indent="label-end()" font-size="12pt" font-weight="bold">
                  <fo:block>A</fo:block>
               </fo:list-item-label>
               <fo:list-item-body start-indent="body-start()" font-size="12pt">
                  <fo:block>prcitem 1B</fo:block>
               </fo:list-item-body>
            </fo:list-item>
            <fo:list-item>
               <fo:list-item-label end-indent="label-end()" font-size="12pt" font-weight="bold">
                  <fo:block>B</fo:block>
               </fo:list-item-label>
               <fo:list-item-body start-indent="body-start()" font-size="12pt">
                  <fo:block>prcitem 3B</fo:block>
               </fo:list-item-body>
            </fo:list-item>
            <fo:list-item>
               <fo:list-item-label end-indent="label-end()" font-size="12pt" font-weight="bold">
                  <fo:block>C</fo:block>
               </fo:list-item-label>
               <fo:list-item-body start-indent="body-start()" font-size="12pt">
                  <fo:block>prcitem 4B</fo:block>
               </fo:list-item-body>
            </fo:list-item>
         </fo:list-block>
      </fo:flow>
   </fo:page-sequence>
</fo:root>

PDF出力

ここに画像の説明を入力してください

于 2013-03-17T01:52:54.157 に答える