XSL 입문 1FO의 대략적인 구조

9278 단어 xslXSLTxslfotech
XSL Advent Calendar 2020 17일자 기사입니다.지금은 19일입니다.
https://adventar.org/calendars/5027
입문을 잘 써야 할 것 같아서 XSLT 성경(Michael Kay 저, 일본어 버전은 인상이 없는 버전)을 꺼냈는데, 이게 있으면 아무것도 필요 없을 것 같아.XSLT2.0 버전에는 일본어 버전이 없기 때문에 제대로 읽지 않으면 고통스럽다.
이번에는 제 느낌을 말씀드리고 흥미가 있으면 자료를 참고하세요.

선행 사례

  • Markdown + XSL → PDF
  • CommonMark 파일을 XSL-FO에서 PDF로 변환
  • 입문 준비물

  • XSLT 처리 시스템
  • Premium 3.0 시스템
  • XSL-FO 처리 시스템
  • 아파치 FOP 범위 내에서 진행하려고 했는데 역시 비즈니스 활동이 대단하네요
  • CommonMark 프로세서
  • 편집기의 불도 높아서 없어요.VS 코드로 확대하면 XSLT는 괜찮지만, XSL-FO 지원은 아직 어렵다.

    유출된 파일 준비


    그럼 저는 Common Mark 파일과 처리 시스템이 먹는 XML AST를 준비할게요.
    # XSL入門
    
    入門用の文章。**入門**って何かは知らないけれど。
    
    
    상대방에게 이 글을 먹인 후 토해냈다.
    $ cmark -t xml doc.md > doc.xml
    
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE document SYSTEM "CommonMark.dtd">
    <document xmlns="http://commonmark.org/xml/1.0">
      <heading level="1">
        <text>XSL入門</text>
      </heading>
      <paragraph>
        <text>入門用の文章。</text>
        <strong>
          <text>入門</text>
        </strong>
        <text>って何かは知らないけれど。</text>
      </paragraph>
    </document>
    
    
    는 무슨 뜻입니까?세 줄의 글이 순식간에 열 줄로 변했다.표기의 의미에 관해서는 이전의 보도를 읽어 보시기 바랍니다.

    XSL-FO의 구조


    상당히 깎인 구조가 아래로 변했다.
    잘한 일이나 논리가 있다면 참고자료를 보십시오.
  • root
  • layout-master-set
  • page-master,page-master...
  • region,region...
  • page-sequence
  • static-content
  • block,block-container...
  • flow
  • block,block-container...
  • 우선 노선은 노선입니다.노선에서 지정할 수 있는 속성도 있지만 형식적으로 있어도 지금은 가능하다.
    다음 배치 설정입니다.이 아이에게 페이지 사이즈 등, 기초 페이지에 대한 기술의 페이지 주인 등을 쓴다.XSL1.1은 단순한 페이지 마스터로만'단순하지 않은 페이지 마스터'로 바뀌었고, AH Formeter 확장이라면 열 수 있는 페이지 마스터가 있다.페이지 마스터로는 지울 수 없는 것이지만, 페이지 순서 마스터와 흐름도 등 갑자기 기억해야 할 말이 많아 지금은 건너뛴다.
    페이지 시퀀스는 실제 변환된 XML을 총포에 주입하는 것입니다.특히 절차.흘러들어가서 흘러나왔어.
    '페이지 사이즈','글을 놓을 수 있는 곳'을 기술한 것은 페이지 메인 제어이고, 이 페이지 메인 제어의 설정에 따라 실제 기술한 것은 페이지 순서이며, 이러한 대응 관계는 대체로 문제가 없겠지요.
    페이지 모판의 페이지 크기를 제외하고master-name가 필요하며 페이지 서열은 master-reference라는 페이지 모판을 참조한다.
    일반적인 일본어 GUI 워드프로세서 소프트웨어라면 페이지 설정에서 페이지의 유형, 문자 크기, 문자 수 등을 결정할 수 있지만 XSL-FO에서는 이 위치 위에 있거나 아래에서 결정된다.또는 판단형, 페이지 간격이 페이지의 주, 문자 사이즈를 결정하는 등 페이지 순서와 측면을 고려하면 문자 처리 소프트웨어라도 모델이 배치되지 않는다.
    방금 구획을 뛰어넘었다.아, region은요.region-start,region-end,region-before,region-after,region-body가 있습니다.
    start, end, before, after에 관해서는 최근에도 CSS에서 사용할 수 있지 않습니까?(다른 한쪽 영역에도 쓸 수 있다) 한쪽에서 중간을 취하는 리건보디의 사방 영역을 지정한다."right, left, top, bottom은 안 되나요?"횡조의 주민 의식이 강하기 때문에 조금이나마 긴장을 푸세요.세로의 상하좌우가 어디인지 생각해 보세요.오른쪽에서 왼쪽까지의 어계도 있고, 아래에서 위로 빙빙 돌면서 편성된 어계도 있다.
    그렇다면 이 네 개는 무엇에 사용될까요? 이것은 페이지 서열의 서브static-content가 참고하는 구획으로 존재합니다.프로세스의static에 대해 항상 페이지에 고정된 위치에 놓인 물건이 여기에 온다.머리글, 바닥글, 페이지 번호 등등."페이지마다 내용이 바뀌나요?"근데 위치는 똑같죠?
    따라서 레이아웃 기술과 그에 대응하는 말을 다시 간단하게 나타낸다
  • 페이지 홈 페이지 시퀀스
  • region-start,end,before,after - static-content
  • region-body-흐름
  • 블록 및 인라인


    CommonMark의 DTD를 볼 때 Block과 inline이 어떤 차이가 있는지 기억하십니까?HTML도 비슷하지만 CSS display가 바뀌면 뭐든지 할 수 있어 학습 방법으로는 좀 그렇다.
    정확한 정의를 보면 좋지만, 대체로 네모난 테두리는'줄 바꿈 문자를 포함하는 대상'이죠.예를 들어paragraph는 일반적으로 다른paragraph와 줄을 분리해서 쓴다.
    블록은 하위 항목에 블록 객체 또는 인라인 객체를 포함합니다.
    다행히도 Commonmark AST의 블록과 내선 간의 편차가 적어도 현재로서는 존재하지 않기 때문에 Commonmark의 블록을 블록으로 하고 내선을 내선으로 하면 된다.
    
    <xsl:template match="/">
      ...
    </xsl:template>
    
    <xsl:template match="document">
      <xsl:apply-templates />
    </xsl:template>
    
    <xsl:template match="heading">
      <fo:block><xsl:apply-templates /></fo:block>
    </xsl:template>
    
    <xsl:template match="paragraph">
      <fo:block><xsl:apply-templates /></fo:block>
    </xsl:template>
    
    <xsl:template match="strong">
      <fo:inline><xsl:apply-templates /></fo:inline>
    </xsl:template>
    
    <xsl:template match="text">
      <xsl:apply-templates />
    </xsl:template>
    
    블록은<fo:block>,inline은<fo:inline>이다.text군은 어차피 네모나 아이라인 안쪽에 등장해서 이렇게 통과할 거예요.
    그러나 <fo:inline>로만 둘러싸면 강조할 것이 없다.heading과paragraph도 이와 같다<fo:block>.그러나 표시를 마음에 두면 제목과 단락이 블록 객체임을 나타냅니다. 예를 들어 다음 객체로 이동할 때 다른 줄로 이동됩니다.물론 줄 제목을 만들고 싶다면 하면 된다.
    이런 블록과 내선(그 파트너)은 유내gan에 주입하고, XSL-FO 프로세서에 주입이 끝난 FO 파일을 건네주면 PDF가 할 수 있는 이유다.PDF에 국한되지는 않지만.
    <fo:page-sequence master-reference="...">
      <fo:flow flow-name="xsl-region-body">
        <fo:block>XSL入門</fo:block><fo:block>入門用の文章。<fo:inline>入門</fo:inline>って何かは知らないけれど。</fo:block>
      </fo:flow>
    </fo:page-sequence>
    
    다음,attribute.6일만 있으면 애드벤트 캘린더가 끝납니다.

    참고 자료

  • https://www.w3.org/Style/XSL/
  • https://www.antenna.co.jp/AHF/ahf_publication/data/xsl-fo-v2/i01-0003.html
  • https://www.antenna.co.jp/AHF/ahf_publication/toc-xslttutorial.html
  • 좋은 웹페이지 즐겨찾기