强制页数除最后一页
Force page count except last page
也许这是一个简单的问题,希望有人能帮助我。
目前,我使用我的 PDF 在奇数页上开始每一章。通过使用代码
<xsl: attribute-set name = "__ force__page__count">
在我的 commons-attr.xsl 文件中
结果是我的 PDF 中的页数总是偶数。
但是如果我的 PDF 的页数是奇数,那么我现在怎么知道最后一页没有添加这个动作
我认为像下面的代码那样做不会有帮助
<xsl:attribute-set name="__force__page__count">
<xsl:attribute name="force-page-count">
<xsl:choose>
<xsl:when test="(position() = last())">
<xsl:value-of select="'no-force'"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="'even'"/>
</xsl:otherwise>
</xsl:choose>
</xsl:attribute>
</xsl:attribute-set>
我怀疑你的问题是从 <xsl:when test="name(/*) = 'bookmap' != last()">
开始的。您正在测试节点的名称是否不等于 last()。
你需要像 <xsl:when test="(position() != last()) and (name(/*) = 'bookmap')">
这样的东西
或者 position() != last()
可能就足够了,我希望这个属性集只在 chapter/page-sequence 开始时被调用,所以你的 bookmap
测试可能没有必要。我不熟悉你使用的框架。
当然,这是否有效,取决于XML的结构。如果你的 XML 每一章都有一个节点,并且在处理这一章节点时调用了属性集,那么它应该可以工作。
如果属性集是从其他地方调用的,或者结构不同,则 position() 测试不会给出预期的结果。
并且您目前有一个测试试图匹配除最后一章之外的每一章,因此如果测试有效,您的 'otherwise' 将只针对最后一章被调用。构造 xsl:choose
的更好方法是将异常放在 xsl:when 语句中:
<xsl:when test="position() = last()"> -match only the last chapter here-
<xsl:value-of select="'no-force'"/>
对于 xsl:otherwise
:
<xsl:value-of select="'even'"/>
在 XSL-FO 中,页数由 force-page-count 属性控制。可能的值之一是 no-force
,这具有您想要的效果:不添加任何页面。
值 'odd' 强制页面序列具有奇数页(并将添加空页以实现此目的)。
忘记 force-page-count
,而是使用 initial-page-number="auto-odd"
。参见 https://www.w3.org/TR/xsl11/#initial-page-number
当您省略 force-page-count
时,其默认值 auto
与 initial-page-number
配合得很好。参见 https://www.w3.org/TR/xsl11/#force-page-count
大家好,我们做了几次测试,结果出来了。特此代码
<xsl:attribute-set name="__force__page__count">
<xsl:attribute name="force-page-count">
<xsl:choose>
<xsl:when test="following-sibling::*[(contains(@class, 'topic/topic'))] and not(ancestor::*[contains(@class,' topic/topic ')])">
<!-- <xsl:when test="$mirror-page-margins">-->
<xsl:value-of select="'end-on-even'"/>
</xsl:when>
<xsl:when test="not(following-sibling::*[(contains(@class, 'topic/topic'))])">
<xsl:value-of select="'auto'"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="'auto'"/>
</xsl:otherwise>
</xsl:choose>
</xsl:attribute>
</xsl:attribute-set>
感谢大家分享您的智慧。
也许这是一个简单的问题,希望有人能帮助我。
目前,我使用我的 PDF 在奇数页上开始每一章。通过使用代码
<xsl: attribute-set name = "__ force__page__count">
在我的 commons-attr.xsl 文件中
结果是我的 PDF 中的页数总是偶数。
但是如果我的 PDF 的页数是奇数,那么我现在怎么知道最后一页没有添加这个动作 我认为像下面的代码那样做不会有帮助
<xsl:attribute-set name="__force__page__count">
<xsl:attribute name="force-page-count">
<xsl:choose>
<xsl:when test="(position() = last())">
<xsl:value-of select="'no-force'"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="'even'"/>
</xsl:otherwise>
</xsl:choose>
</xsl:attribute>
</xsl:attribute-set>
我怀疑你的问题是从 <xsl:when test="name(/*) = 'bookmap' != last()">
开始的。您正在测试节点的名称是否不等于 last()。
你需要像 <xsl:when test="(position() != last()) and (name(/*) = 'bookmap')">
或者 position() != last()
可能就足够了,我希望这个属性集只在 chapter/page-sequence 开始时被调用,所以你的 bookmap
测试可能没有必要。我不熟悉你使用的框架。
当然,这是否有效,取决于XML的结构。如果你的 XML 每一章都有一个节点,并且在处理这一章节点时调用了属性集,那么它应该可以工作。
如果属性集是从其他地方调用的,或者结构不同,则 position() 测试不会给出预期的结果。
并且您目前有一个测试试图匹配除最后一章之外的每一章,因此如果测试有效,您的 'otherwise' 将只针对最后一章被调用。构造 xsl:choose
的更好方法是将异常放在 xsl:when 语句中:
<xsl:when test="position() = last()"> -match only the last chapter here-
<xsl:value-of select="'no-force'"/>
对于 xsl:otherwise
:
<xsl:value-of select="'even'"/>
在 XSL-FO 中,页数由 force-page-count 属性控制。可能的值之一是 no-force
,这具有您想要的效果:不添加任何页面。
值 'odd' 强制页面序列具有奇数页(并将添加空页以实现此目的)。
忘记 force-page-count
,而是使用 initial-page-number="auto-odd"
。参见 https://www.w3.org/TR/xsl11/#initial-page-number
当您省略 force-page-count
时,其默认值 auto
与 initial-page-number
配合得很好。参见 https://www.w3.org/TR/xsl11/#force-page-count
大家好,我们做了几次测试,结果出来了。特此代码
<xsl:attribute-set name="__force__page__count">
<xsl:attribute name="force-page-count">
<xsl:choose>
<xsl:when test="following-sibling::*[(contains(@class, 'topic/topic'))] and not(ancestor::*[contains(@class,' topic/topic ')])">
<!-- <xsl:when test="$mirror-page-margins">-->
<xsl:value-of select="'end-on-even'"/>
</xsl:when>
<xsl:when test="not(following-sibling::*[(contains(@class, 'topic/topic'))])">
<xsl:value-of select="'auto'"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="'auto'"/>
</xsl:otherwise>
</xsl:choose>
</xsl:attribute>
</xsl:attribute-set>
感谢大家分享您的智慧。