การพิมพ์ชื่อหนังสือในส่วนหัวของ pdf ด้วย fop / docbook / xslt


2

สตริงที่เหมาะสมที่จะใช้ใน XSLT ของฉันคือทำให้ FOP พิมพ์ชื่อหนังสือในส่วนหัวหรือไม่ ฉันไม่สามารถค้นพบสิ่งนี้ได้ทุกที่และความช่วยเหลือใด ๆ ก็ได้รับการชื่นชม!

แก้ไข :

ดังนั้น,

<xsl:when test="$sequence = 'even' and $position = 'right'">
        <xsl:apply-templates select="." mode="titleabbrev.markup"/> 
      </xsl:when>

จะพิมพ์ชื่อส่วน / บทที่ย่อ ฉันต้องการทำสิ่งเดียวกัน แต่สำหรับชื่อหนังสือ


เพื่อชี้แจงสิ่งต่าง ๆ : คุณมีข้อความในรูปแบบ docbook และตอนนี้กำลังพัฒนาไฟล์. xsl เพื่อแปลงมันผ่าน fop เป็น xyz?
akira

ใช่. ฉันนำเข้า docbook เริ่มต้น 5 xslt ไปยังชีตของฉันและฉันนั่งทับค่าเริ่มต้น ฉันเห็นสตริงสำหรับพิมพ์ส่วนหรือชื่อบท แต่ไม่มีอะไรเกี่ยวกับชื่อหนังสือหรือชื่อหนังสือ
Mica

ระบุข้อมูลตัวอย่างในคำถามของคุณที่ซึ่งคุณ "fop" ส่วนหัวของหน้า ...
akira

คำตอบ:


2

ใช้สิ่งนี้:

<xsl:when test="$sequence = 'even' and $position = 'right'">
 <xsl:value-of select="ancestor-or-self::d:book/d:bookinfo/d:title"></xsl:value-of>
</xsl:when>

ชื่อในกรณีนี้ซ้อนอยู่ภายใต้ <bookinfo>. d: ต้องมีฉลาก แต่เพื่อให้แน่ใจว่าคุณได้นำเข้าเนมสเปซในจุดเริ่มต้นของสไตล์ชีท:

<?xml version='1.0'?>
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:fo="http://www.w3.org/1999/XSL/Format"
xmlns:d="http://docbook.org/ns/docbook"
exclude-result-prefixes="d"
version="1.0">

หลังจากบรรทัดนี้คุณสามารถนำเข้า docbook.xsl

ตัวอย่างจุดเริ่มต้นของ docbook ที่มีชื่อหนังสือ:

<?xml version="1.0"?>
<book xmlns="http://docbook.org/ns/docbook" version="5.0">
<bookinfo>
<title>THIS IS THE TITLE OF THE BOOK</title>
</bookinfo>
...
...
</book>

ดูเหมือนว่าจะใช้งานได้ แต่ฉันได้ดำเนินการต่อจากโครงการนั้นมานาน ขอบคุณสำหรับคำตอบ.
Mica


1

สายไปหน่อย แต่ฉันเจอคำถามของคุณในขณะที่ฉันกำลังมองหาวิธีที่จะทำสิ่งนี้

หลังจากค้นหาบางฉันก็จบลงด้วย:

ใน <xsl:template name="header.content"> มาตรา:

<xsl:when test="$position = 'left'">
   <xsl:value-of select="//d:book/d:title"/>, 
   <xsl:value-of select="//d:book/d:subtitle"/>
</xsl:when>

เมื่อชื่อเรื่องไม่พอดีกับส่วนด้านซ้ายของส่วนหัวคุณสามารถทำให้ส่วนด้านซ้ายกว้างขึ้น (100% ในตัวอย่างนี้) โดยใช้:

<xsl:param name="header.column.widths">1 0 0</xsl:param>

บางแห่งในคุณกำหนดค่า xslt


0

สามารถแสดงส่วนหัวได้ <fo:region-before> สิ่งที่กำหนดพื้นที่ด้านบนของหน้า

ฉันเห็นได้จากตัวอย่างที่คุณทดสอบว่า 'คู่' ฉันเชื่อว่าคุณแค่ต้องการชื่อเรื่องนี้ในหน้าคู่ คุณสามารถทำได้โดยการกำหนดมาสเตอร์เพจอื่น ( <fo:simple-page-master master-name="even"> ) - มองหา <fo:page-sequence-master> และ <fo:conditional-page-master-reference> มีหน้าคี่ / คู่ ในมาสเตอร์เพจนี้คุณกำหนดขอบเขตที่ต่างกันของเพจ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.