XML (TEI 스키마 사용)으로 복사 된 큰 중세 원고가 있습니다. xsl : fo와 Apache FOP를 사용하여 PDF로 처리하고 있습니다. 파일은 아래와 같이 중첩 된 <body>
, <p>
, <seg>
을 사용하여 생성됩니다. 때로는 <add>
이 여백 메모로 사용됩니다.XSL : 여백 노트를 표시하기위한 FO float - 쉼표 문서
<body>
<p>
<title>title here</title>
<seg>Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Quisque a orci non mauris convallis imperdiet consequat nec
purus. Cras mollis lacus vel lectus facilisis, non
hendrerit velit tempor. Phasellus tempor urna vel accumsan
dignissim.</seg>
<seg>Aliquam porta eu nunc sed laoreet.
Sed<add type='margin_gloss'>Some margin note here</add>
non nulla consectetur, lobortis tortor ac,
placerat nunc. Nulla viverra finibus est nec efficitur. Donec
nisi nisl, tincidunt dapibus purus pretium, rhoncus volutpat
tortor. Cras fringilla tellus tortor, at
ultricies mi cursus at. Nulla facilisi.</seg>
<seg>Quisque id mi nisl. In in mauris id leo malesuada hendrerit.
Orci varius natoque
penatibus et magnis dis parturient montes, nascetur ridiculus
mus. Nulla sit amet
commodo mauris.</seg>
</p>
</body>
XML 파일은 대규모이기 때문에 전체 원고를 작성하기 위해이 문서의 수백을 가지고 <xi:include>
의를 사용하여 하나 개의 마스터 XML 파일이 있습니다.
:
<xsl:template match="/">
<fo:root>
<fo:layout-master-set>
<fo:simple-page-master
master-name="page-recto"
page-height="29.7cm" page-width="21cm"
margin-top="2cm" margin-bottom="2cm"
margin-left="2cm" margin-right="1cm">
<fo:region-body
region-name="xsl-region-body"/>
</fo:simple-page-master>
</fo:layout-master-set>
<fo:page-sequence master-reference="page-recto">
<fo:flow flow-name="xsl-region-body"
font-family="Times" font-weight="normal"
font-size="8pt" space-before="8pt" space-after="8pt"
text-align="justify" end-indent="120pt">
<xsl:apply-templates/>
</fo:flow>
</fo:page-sequence>
</fo:root>
</xsl:template>
<xsl:template match="body/p">
<fo:block
page-break-inside="avoid"
font-size="9pt" font-weight="bold"
padding-bottom="1cm" end-indent="120pt">
<xsl:value-of select="tei:title"/>
<xsl:apply-templates/>
</fo:block>
</xsl:template>
<xsl:template match="seg">
<fo:block id="@xml:id"
font-family="Times" font-weight="normal"
font-size="8pt" space-before="8pt"
space-after="8pt" text-align="justify"
end-indent="120pt">
<xsl:apply-templates/>
</fo:block>
</xsl:template>
이 나에게이 페이지를 좋아 성공적인 결과를 제공합니다 : I 오른쪽 들여 쓰기 한
을 측면 (끝) 여백 메모를위한 공간을 만들기 위해. 예를 들어, 첫 번째 <p>
의 네 번째 <seg>
에는 여백 메모 'Fabri +'가 있습니다.
<xsl:template match="body/p//add[@type='margin_gloss']">
<fo:float float="end">
<fo:block-container>
<fo:block>
<xsl:value-of select="./s/text()"/>
</fo:block>
</fo:block-container>
</fo:float>
</xsl:template>
그리고이 재해 (/ 화살표 문제에 대한 나의 가이드 빨간색 텍스트 있습니다) 얻을 : 그것은
내가 '부동'여백 광택에 다음 템플릿을 추가 <add type=margin_gloss>Fabri +</add>
을 인코딩됩니다. 플로트가있는 템플릿은 내가 추측 할 수없는 3 가지 작업을 수행했습니다. float은 네 번째 세그먼트 옆에 나타나야하지만 그 대신 아래에 있으며 <p>
과 병합됩니다. 제 4 회 <seg>
가 사라졌습니다. 뒤에 오는 <p>
의 들여 쓰기가 감소됩니다.
플로트는 오른쪽에 넣어 종료 옳지 않다되어야한다. –
@KevinBrown 나는 그것을 시도했다, 그것은 들여 쓰기에만 2cm 차이를 만들었다. - 그것은 누락 된 부분을 돌려 보내지 않았고, 가장자리쪽으로 marginalia를 뜨지 않았다. – idjet
템플릿에 ./s/text()가 있고 요소가 없습니다. –