SlideShare una empresa de Scribd logo
1 de 25
Understanding the DITA-OT Pipeline Aryeh Sanders, Suite Solutions
Who Are We? Our Mission To increase our customers’ profitability by significantly improving the efficiency of their  information development and delivery processes. Qualitative Advantage Content Lifecycle Implementation (CLI) is Suite Solutions’   comprehensive approach – from concept to publication – to maximizing the value of your information assets. Our professionals are with you at every phase, determining, recommending and implementing the most cost-effective, flexible and long term solution for your business.
Clients and Partners 3 Private and Confidential Suite Solutions©2009
Introduction We will discuss how the DITA-OT is constructed and why We’ll give some insight into this:
Overview Problem Statement Solution: The DITA-OT Pipeline Overview of Preprocessing Overview of XHTML Output Overview of PDF Output
A Sample DITA Topic <?xmlversion='1.0' encoding='UTF-8'?> <!DOCTYPEtopic PUBLIC "-//OASIS//DTD DITA Topic//EN" "c:itaottdopic.dtd"> <topicid="topic" xml:lang="fr-fr">   <title>Sample Topic</title>   <body>       <pconref="conrefs.xml#conrefid/intropara"/>       <p>For more information, please see <xrefhref="infotable.xml#topicid/tableid"/>.</p>       <paudience="developers">Information that only developers want to know.</p>   </body> </topic>
Items That Need Preprocessing <?xmlversion='1.0' encoding='UTF-8'?> <!DOCTYPEtopic PUBLIC "-//OASIS//DTD DITA Topic//EN" "c:itaottdopic.dtd"> <topicid="topic" xml:lang="fr-fr">   <title>Sample Topic</title>   <body>       <pconref="conrefs.xml#conrefid/intropara"/>       <p>For more information, please see <xrefhref="infotable.xml#topicid/tableid"/>.</p>       <paudience="developers">Informationthat only developers want to know.</p>   </body> </topic> 1 2 3
Items That Need Preprocessing In the previous slide we saw: Conrefs Cross References Conditional Text All of these need some modification in our final output But there’s more!
Items That Need Preprocessing Lots more! Navtitle Keyref Moving metadata from the map Reltables Sibling and Parent / Child related links Chunking Copy-to Coderef And more…
Problem: Process DITA Correctly We want a solution that delivers on all of the features in the DITA spec Our solution should make it easy to reason about correctness Our solution should use common processing for most DITA features for many output formats
Solution: DITA Pipeline	 Our Solution: We should build the DITA-OT as a pipeline Each step makes one type of change to the DITA, and the output is also DITA Output from each step is the input to the next step This makes it easier to reason about the correctness of the implementation: each step should do one thing well It doesn’t solve all of our problems We still need to make sure each step is correct, of course We need ensure the order is correct
Example of a Pipeline Step: Conref Before:  <p class="- topic/p " conref="conrefs.xml#conrefid/intropara" xtrf="C:ygwinomeamilyebinarest.xml" xtrc="p:1"></p> After: <p class="- topic/p " xtrf="C:ygwinomeamilyebinaronrefs.xml" xtrc="p:1">This is an introductory paragraph.</p> Note if you happen to try this and compare the files: this isn’t the only difference between the two files, but it’s the only meaningful difference (e.g. <xref/> vs. <xref></xref>)
Technical Details About the Log The DITA-OT is mostly implemented in a mixture of three languages: Ant Java XSLT Ant drives the whole process Not used the way that’s familiar to Java users – it is not used to manage dependencies on changed files, mostly just to run the steps in sequence java –jar dost.jar is just a wrapper around Ant, which sets up clearer logging, provides an easier way to enter some parameters, and runs integrator
Technical Details About the Log If you run via Java, your log shows messages like: Debug and filter input files... Debug and filter input files... Copy image files... Copy html files... Copy flag files... Copy subsidiary files... Copy generated files... Resolve conref push... Resolve conref in input files... If you run via Ant, your log shows messages like: debug-filter-flag-check: debug: debug-and-filter: debug-filter: copy-image-check: copy-image: copy-html-check:
Technical Details About the Log Both the Ant logs and the Java logs are reporting the same events Ant is more verbose, since it logs each “target”, some of which aren’t very interesting The Java version tries to give messages that are closer to English using the target description instead of the name The “pipeline” that we’ve been discussing isn’t logged separately The “pipeline” is implemented just as a set of steps in Ant So there’s no direct way to view the pipeline itself Confusing: There’s an Ant task called <pipeline> that runs some parts of the pipeline, but not all
Order in the Pipeline Best current source of information, from Robert Anderson: http://dita.xml.org/node/2469 Some steps must come before others: If you want to figure out the text for a cross reference to a topic, you need to know the name of the topic – but if you use navtitle and locktitle in your map, the title will change Therefore, extract the title after you process locktitle Some steps should come before others: Process conditional attributes early, so that you don’t have to waste time with other processing if you will remove the element anyway At that link, you’ll find much more detailed information about each step
Maintaining Valid DITA Each step during preprocessing outputs valid DITA This reduces the dependence between steps – if you skip a step, everything’s fine. The OT does skip steps if it knows they’re not needed, e.g. it doesn’t do conref processing if there are no conrefs This also helps catch errors, since the output gets validated at each step The DITA specification has features to help: xtrc, xtrf attributes for debugging – the toolkit fills these in at the beginning, and the values are maintained throughout processing. related-links section in each topic to hold the links gathered from reltables and generated by relationships Similar metadata that allows metadata from the map to be pushed into the topics
Goal of Preprocessing All DITA features should be processed into simpler but valid DITA Example:Conrefs are eliminated Example:Descriptions are filled in within cross references Each DITA file should stand alone All the information needed for output is now in the individual files There’s a single DITA map that stands alone All the information needed for output is in that map; all the submaps are joined together New files created from chunk and copy-to are also “ready to go” All that’s left to do with the DITA is switching to a new vocabulary – such as HTML or XSL-FO
Performance Issues In theory, the pipeline reads and processes files many times DTDs (once for every step for every file) XSLT Stylesheets (once for every time each is run) The DITA files themselves (once for every step for every file) Mitigation Latest DITA-OTs have a patch from Eliot Kimber that only reads the DTDs once and caches them Ant caches stylesheets There’s a price to pay: it costs memory – if you run out, you can shut off this cache with dita.preprocess.reloadstylesheet=true There’s no cache for the DITA files themselves yet There have been some discussions on the developer group about changing the pipeline implementation, so this might be provided as part of that
Overview of HTML Processing HTML itself is “simple” – it translates the DITA into corresponding XHTML elements The stylesheets do have to do work to change between structures that aren’t quite similar, such as between certain DITA tables and HTML tables Most are straightforward: <uicontrol> becomes <span class=“uicontrol”> Formatting is handled in the CSS file, not in processing DITA topics are processed to make the HTML files The merged map is processed to make the TOC
Overview of PDF Processing PDF processing in the toolkit is more complicated You need at least one more step – convert DITA to an intermediate format that is straightforward to convert to PDF In theory, it didn’t have to be so complicated, since you can generate PDFs from HTML and CSS In practice, CSS used to be less sophisticated than it is now, and people have more demands from their PDFs Index Language specific font control You might want your Chinese characters in a Chinese font, and your  English characters in an English font – no font covers all languages We’re not going to discuss all the things that PDF output is doing, just the steps it takes
PDF Processing Steps (1) Topicmerge – merge all the topics and the map into one big file This is a good opportunity to do certain kinds of processing, such as creating fake topics that say “MISSING TOPIC” if a topic is missing This step already does create fake topics to correspond to <topichead> in the map, since the main PDF processing is done topic by topic Note: topicmerge is done in Java, then post-processed by topicmerge.xsl in the FO plugin _MERGED.ditamap to stage1.xml Collects all the indexterms from the topics, and puts them at the end for later processing to create the index
PDF Processing Steps (2) stage1.xml to stage2.fo The PDF plugin converts DITA to another XML language called XSL-FO that’s an intermediate language that can be easily used to generate PDFs ,[object Object],Unlike HTML, XSL-FO is a very simple language.  For instance, you must explicitly number steps instead of letting your web browser do it automatically.  This step adds things like those numbers. This step doesn’t actually use real fonts.  Instead it uses “logical fonts” such as Sans or Monospace or FrontCoverFont, because…
PDF Processing Steps (3) stage2.fo to stage3.fo Java step which looks for characters in other languages, which will be marked for font processing stage3.fo to topic.fo Substitutes logical fonts for real font names from font-mappings.xml If you specify that Chinese should have a different Sans font, then English characters will have the English Sans font, and Chinese characters will have the Chinese Sans font, even if they both appear in the same element topic.fo to PDF Actual PDF is created by an FO Processor, probably one of: Apache FOP (free, but doesn’t support indexes) RenderX XEP Antenna House Formatter
Questions? Any questions? Be in touch!Aryeh Sandersaryehs@suite-sol.com

Más contenido relacionado

La actualidad más candente

DITA Quick Start for Authors Part II
DITA Quick Start for Authors Part IIDITA Quick Start for Authors Part II
DITA Quick Start for Authors Part IISuite Solutions
 
An RDF Metadata Model for OpenDocument Format 1.2
An RDF Metadata Model for OpenDocument Format 1.2An RDF Metadata Model for OpenDocument Format 1.2
An RDF Metadata Model for OpenDocument Format 1.2Alexandro Colorado
 
Processing OpenDocument Format
Processing OpenDocument FormatProcessing OpenDocument Format
Processing OpenDocument FormatAlexandro Colorado
 
Rational Publishing Engine with Rational DOORS
Rational Publishing Engine with Rational DOORSRational Publishing Engine with Rational DOORS
Rational Publishing Engine with Rational DOORSGEBS Reporting
 
Oracle Sql Developer Data Modeler 3 3 new features
Oracle Sql Developer Data Modeler 3 3 new featuresOracle Sql Developer Data Modeler 3 3 new features
Oracle Sql Developer Data Modeler 3 3 new featuresPhilip Stoyanov
 
Day Of Dot Net Ann Arbor 2007
Day Of Dot Net Ann Arbor 2007Day Of Dot Net Ann Arbor 2007
Day Of Dot Net Ann Arbor 2007David Truxall
 
DITA Quick Start Webinar Series: Getting Started with the DITA Open Toolkit
DITA Quick Start Webinar Series: Getting Started with the DITA Open ToolkitDITA Quick Start Webinar Series: Getting Started with the DITA Open Toolkit
DITA Quick Start Webinar Series: Getting Started with the DITA Open ToolkitSuite Solutions
 
Understanding_Markdowns_Pandoc_and_YALM
Understanding_Markdowns_Pandoc_and_YALMUnderstanding_Markdowns_Pandoc_and_YALM
Understanding_Markdowns_Pandoc_and_YALMHellen Gakuruh
 
Patni Hibernate
Patni   HibernatePatni   Hibernate
Patni Hibernatepatinijava
 
Ien2012 DITA Open Toolkit Extension
Ien2012 DITA Open Toolkit ExtensionIen2012 DITA Open Toolkit Extension
Ien2012 DITA Open Toolkit Extensionsperotech
 
Using SP Metal for faster share point development
Using SP Metal for faster share point developmentUsing SP Metal for faster share point development
Using SP Metal for faster share point developmentPranav Sharma
 
Oracle D2K reports
Oracle D2K reports Oracle D2K reports
Oracle D2K reports Rajesh Ch
 
Clean coding in plsql and sql
Clean coding in plsql and sqlClean coding in plsql and sql
Clean coding in plsql and sqlBrendan Furey
 
Building XML Based Applications
Building XML Based ApplicationsBuilding XML Based Applications
Building XML Based ApplicationsPrabu U
 
Localization and Shared Preferences in android
Localization and Shared Preferences in androidLocalization and Shared Preferences in android
Localization and Shared Preferences in androidAly Arman
 
ESSIR LivingKnowledge DiversityEngine tutorial
ESSIR LivingKnowledge DiversityEngine tutorialESSIR LivingKnowledge DiversityEngine tutorial
ESSIR LivingKnowledge DiversityEngine tutorialJonathon Hare
 

La actualidad más candente (20)

DITA Quick Start for Authors Part II
DITA Quick Start for Authors Part IIDITA Quick Start for Authors Part II
DITA Quick Start for Authors Part II
 
An RDF Metadata Model for OpenDocument Format 1.2
An RDF Metadata Model for OpenDocument Format 1.2An RDF Metadata Model for OpenDocument Format 1.2
An RDF Metadata Model for OpenDocument Format 1.2
 
Processing OpenDocument Format
Processing OpenDocument FormatProcessing OpenDocument Format
Processing OpenDocument Format
 
Rational Publishing Engine with Rational DOORS
Rational Publishing Engine with Rational DOORSRational Publishing Engine with Rational DOORS
Rational Publishing Engine with Rational DOORS
 
Ch2 neworder
Ch2 neworderCh2 neworder
Ch2 neworder
 
Oracle Sql Developer Data Modeler 3 3 new features
Oracle Sql Developer Data Modeler 3 3 new featuresOracle Sql Developer Data Modeler 3 3 new features
Oracle Sql Developer Data Modeler 3 3 new features
 
Day Of Dot Net Ann Arbor 2007
Day Of Dot Net Ann Arbor 2007Day Of Dot Net Ann Arbor 2007
Day Of Dot Net Ann Arbor 2007
 
DITA Quick Start Webinar Series: Getting Started with the DITA Open Toolkit
DITA Quick Start Webinar Series: Getting Started with the DITA Open ToolkitDITA Quick Start Webinar Series: Getting Started with the DITA Open Toolkit
DITA Quick Start Webinar Series: Getting Started with the DITA Open Toolkit
 
Understanding_Markdowns_Pandoc_and_YALM
Understanding_Markdowns_Pandoc_and_YALMUnderstanding_Markdowns_Pandoc_and_YALM
Understanding_Markdowns_Pandoc_and_YALM
 
Patni Hibernate
Patni   HibernatePatni   Hibernate
Patni Hibernate
 
Ien2012 DITA Open Toolkit Extension
Ien2012 DITA Open Toolkit ExtensionIen2012 DITA Open Toolkit Extension
Ien2012 DITA Open Toolkit Extension
 
Using SP Metal for faster share point development
Using SP Metal for faster share point developmentUsing SP Metal for faster share point development
Using SP Metal for faster share point development
 
03 x files
03 x files03 x files
03 x files
 
Oracle D2K reports
Oracle D2K reports Oracle D2K reports
Oracle D2K reports
 
Clean coding in plsql and sql
Clean coding in plsql and sqlClean coding in plsql and sql
Clean coding in plsql and sql
 
Building XML Based Applications
Building XML Based ApplicationsBuilding XML Based Applications
Building XML Based Applications
 
X FILES
X FILESX FILES
X FILES
 
Localization and Shared Preferences in android
Localization and Shared Preferences in androidLocalization and Shared Preferences in android
Localization and Shared Preferences in android
 
ESSIR LivingKnowledge DiversityEngine tutorial
ESSIR LivingKnowledge DiversityEngine tutorialESSIR LivingKnowledge DiversityEngine tutorial
ESSIR LivingKnowledge DiversityEngine tutorial
 
Xml applications
Xml applicationsXml applications
Xml applications
 

Similar a Dita ot pipeline webinar

Putting DITA Localization into Practice
Putting DITA Localization into PracticePutting DITA Localization into Practice
Putting DITA Localization into PracticeXMetaL
 
Chicago Code Camp 2014 TFS Care and Feeding
Chicago Code Camp 2014   TFS Care and FeedingChicago Code Camp 2014   TFS Care and Feeding
Chicago Code Camp 2014 TFS Care and FeedingAngela Dugan
 
C:\Users\User\Desktop\Eclipse Infocenter
C:\Users\User\Desktop\Eclipse InfocenterC:\Users\User\Desktop\Eclipse Infocenter
C:\Users\User\Desktop\Eclipse InfocenterSuite Solutions
 
Next Gen Data Modeling in the Open Data Platform With Doron Porat and Liran Y...
Next Gen Data Modeling in the Open Data Platform With Doron Porat and Liran Y...Next Gen Data Modeling in the Open Data Platform With Doron Porat and Liran Y...
Next Gen Data Modeling in the Open Data Platform With Doron Porat and Liran Y...HostedbyConfluent
 
Rsqrd AI: ML Tooling at an AI-first Startup
Rsqrd AI: ML Tooling at an AI-first StartupRsqrd AI: ML Tooling at an AI-first Startup
Rsqrd AI: ML Tooling at an AI-first StartupSanjana Chowdhury
 
Migrating from JSF1 to JSF2
Migrating from JSF1 to JSF2Migrating from JSF1 to JSF2
Migrating from JSF1 to JSF2tahirraza
 
Building scalable and language-independent Java services using Apache Thrift ...
Building scalable and language-independent Java services using Apache Thrift ...Building scalable and language-independent Java services using Apache Thrift ...
Building scalable and language-independent Java services using Apache Thrift ...IndicThreads
 
IT SIMPLY WORKS! … UNTIL IT BREAKS. STANDARDS, BEST PRACTICE AND ENTERPRISE P...
IT SIMPLY WORKS! … UNTIL IT BREAKS. STANDARDS, BEST PRACTICE AND ENTERPRISE P...IT SIMPLY WORKS! … UNTIL IT BREAKS. STANDARDS, BEST PRACTICE AND ENTERPRISE P...
IT SIMPLY WORKS! … UNTIL IT BREAKS. STANDARDS, BEST PRACTICE AND ENTERPRISE P...Daniel Stange
 
Introduction To Information Modeling With DITA
Introduction To Information Modeling With DITAIntroduction To Information Modeling With DITA
Introduction To Information Modeling With DITAScott Abel
 
Build Your Own Angular Component Library
Build Your Own Angular Component LibraryBuild Your Own Angular Component Library
Build Your Own Angular Component LibraryCarlo Bonamico
 
Carlo Bonamico, Sonia Pini - So you want to build your (Angular) Component Li...
Carlo Bonamico, Sonia Pini - So you want to build your (Angular) Component Li...Carlo Bonamico, Sonia Pini - So you want to build your (Angular) Component Li...
Carlo Bonamico, Sonia Pini - So you want to build your (Angular) Component Li...Codemotion
 
Building scalable and language independent java services using apache thrift
Building scalable and language independent java services using apache thriftBuilding scalable and language independent java services using apache thrift
Building scalable and language independent java services using apache thriftTalentica Software
 

Similar a Dita ot pipeline webinar (20)

Putting DITA Localization into Practice
Putting DITA Localization into PracticePutting DITA Localization into Practice
Putting DITA Localization into Practice
 
T4 presentation
T4 presentationT4 presentation
T4 presentation
 
Chicago Code Camp 2014 TFS Care and Feeding
Chicago Code Camp 2014   TFS Care and FeedingChicago Code Camp 2014   TFS Care and Feeding
Chicago Code Camp 2014 TFS Care and Feeding
 
C:\Users\User\Desktop\Eclipse Infocenter
C:\Users\User\Desktop\Eclipse InfocenterC:\Users\User\Desktop\Eclipse Infocenter
C:\Users\User\Desktop\Eclipse Infocenter
 
Markup For Dummies (Russ Ward)
Markup For Dummies (Russ Ward)Markup For Dummies (Russ Ward)
Markup For Dummies (Russ Ward)
 
Dost.jar and fo.jar
Dost.jar and fo.jarDost.jar and fo.jar
Dost.jar and fo.jar
 
How to reduce DTP and translation costs with FrameMaker
How to reduce DTP and translation costs with FrameMakerHow to reduce DTP and translation costs with FrameMaker
How to reduce DTP and translation costs with FrameMaker
 
Next Gen Data Modeling in the Open Data Platform With Doron Porat and Liran Y...
Next Gen Data Modeling in the Open Data Platform With Doron Porat and Liran Y...Next Gen Data Modeling in the Open Data Platform With Doron Porat and Liran Y...
Next Gen Data Modeling in the Open Data Platform With Doron Porat and Liran Y...
 
Rsqrd AI: ML Tooling at an AI-first Startup
Rsqrd AI: ML Tooling at an AI-first StartupRsqrd AI: ML Tooling at an AI-first Startup
Rsqrd AI: ML Tooling at an AI-first Startup
 
TWC 545 Presentation-DITA
TWC 545 Presentation-DITATWC 545 Presentation-DITA
TWC 545 Presentation-DITA
 
How do we do it
How do we do itHow do we do it
How do we do it
 
Migrating from JSF1 to JSF2
Migrating from JSF1 to JSF2Migrating from JSF1 to JSF2
Migrating from JSF1 to JSF2
 
Building scalable and language-independent Java services using Apache Thrift ...
Building scalable and language-independent Java services using Apache Thrift ...Building scalable and language-independent Java services using Apache Thrift ...
Building scalable and language-independent Java services using Apache Thrift ...
 
IT SIMPLY WORKS! … UNTIL IT BREAKS. STANDARDS, BEST PRACTICE AND ENTERPRISE P...
IT SIMPLY WORKS! … UNTIL IT BREAKS. STANDARDS, BEST PRACTICE AND ENTERPRISE P...IT SIMPLY WORKS! … UNTIL IT BREAKS. STANDARDS, BEST PRACTICE AND ENTERPRISE P...
IT SIMPLY WORKS! … UNTIL IT BREAKS. STANDARDS, BEST PRACTICE AND ENTERPRISE P...
 
Introduction To Information Modeling With DITA
Introduction To Information Modeling With DITAIntroduction To Information Modeling With DITA
Introduction To Information Modeling With DITA
 
Lotus Domino 8.5
Lotus Domino 8.5Lotus Domino 8.5
Lotus Domino 8.5
 
Build Your Own Angular Component Library
Build Your Own Angular Component LibraryBuild Your Own Angular Component Library
Build Your Own Angular Component Library
 
Carlo Bonamico, Sonia Pini - So you want to build your (Angular) Component Li...
Carlo Bonamico, Sonia Pini - So you want to build your (Angular) Component Li...Carlo Bonamico, Sonia Pini - So you want to build your (Angular) Component Li...
Carlo Bonamico, Sonia Pini - So you want to build your (Angular) Component Li...
 
FLossEd-BK Tequila Framework3.2.1
FLossEd-BK Tequila Framework3.2.1FLossEd-BK Tequila Framework3.2.1
FLossEd-BK Tequila Framework3.2.1
 
Building scalable and language independent java services using apache thrift
Building scalable and language independent java services using apache thriftBuilding scalable and language independent java services using apache thrift
Building scalable and language independent java services using apache thrift
 

Más de Suite Solutions

SuiteHelp 4.0: Latest Features in Enterprise Webhelp
SuiteHelp 4.0: Latest Features in Enterprise WebhelpSuiteHelp 4.0: Latest Features in Enterprise Webhelp
SuiteHelp 4.0: Latest Features in Enterprise WebhelpSuite Solutions
 
Moving your Organization up the Knowledge Value Chain (Proposal for Lavacon 2...
Moving your Organization up the Knowledge Value Chain (Proposal for Lavacon 2...Moving your Organization up the Knowledge Value Chain (Proposal for Lavacon 2...
Moving your Organization up the Knowledge Value Chain (Proposal for Lavacon 2...Suite Solutions
 
Increasing Findability with Subject Schemes (Advanced DITA Webinar)
Increasing Findability with Subject Schemes (Advanced DITA Webinar)Increasing Findability with Subject Schemes (Advanced DITA Webinar)
Increasing Findability with Subject Schemes (Advanced DITA Webinar)Suite Solutions
 
SuiteHelp 3.2.5 Latest Features
SuiteHelp 3.2.5 Latest FeaturesSuiteHelp 3.2.5 Latest Features
SuiteHelp 3.2.5 Latest FeaturesSuite Solutions
 
Using Taxonomy for Customer-centric Dynamic Publishing
Using Taxonomy for Customer-centric Dynamic PublishingUsing Taxonomy for Customer-centric Dynamic Publishing
Using Taxonomy for Customer-centric Dynamic PublishingSuite Solutions
 
DITA Quick Start Webinar: Defining Your Style Sheet Requirements
DITA Quick Start Webinar: Defining Your Style Sheet RequirementsDITA Quick Start Webinar: Defining Your Style Sheet Requirements
DITA Quick Start Webinar: Defining Your Style Sheet RequirementsSuite Solutions
 
DITA Quick Start Webinar Series: Building a Project Plan
DITA Quick Start Webinar Series: Building a Project PlanDITA Quick Start Webinar Series: Building a Project Plan
DITA Quick Start Webinar Series: Building a Project PlanSuite Solutions
 
DITA Quick Start Webinar Series: Building a Project Plan
DITA Quick Start Webinar Series: Building a Project PlanDITA Quick Start Webinar Series: Building a Project Plan
DITA Quick Start Webinar Series: Building a Project PlanSuite Solutions
 
DITA Quick Start: System Architecture of a Basic DITA Toolset
DITA Quick Start: System Architecture of a Basic DITA ToolsetDITA Quick Start: System Architecture of a Basic DITA Toolset
DITA Quick Start: System Architecture of a Basic DITA ToolsetSuite Solutions
 
DITA Quick Start Webinar Series: Getting Started with Information Architecture
DITA Quick Start Webinar Series: Getting Started with Information ArchitectureDITA Quick Start Webinar Series: Getting Started with Information Architecture
DITA Quick Start Webinar Series: Getting Started with Information ArchitectureSuite Solutions
 
DITA Quick Start for Authors - Part I
DITA Quick Start for Authors - Part IDITA Quick Start for Authors - Part I
DITA Quick Start for Authors - Part ISuite Solutions
 
Suite Labs: Generating SuiteHelp Output
Suite Labs: Generating SuiteHelp OutputSuite Labs: Generating SuiteHelp Output
Suite Labs: Generating SuiteHelp OutputSuite Solutions
 
Overview of SuiteHelp 3.1 for DITA
Overview of SuiteHelp 3.1 for DITAOverview of SuiteHelp 3.1 for DITA
Overview of SuiteHelp 3.1 for DITASuite Solutions
 
LocalizingStyleSheetsForHTMLOutputs
LocalizingStyleSheetsForHTMLOutputsLocalizingStyleSheetsForHTMLOutputs
LocalizingStyleSheetsForHTMLOutputsSuite Solutions
 
ImplementingChangeTrackingAndFlagging
ImplementingChangeTrackingAndFlaggingImplementingChangeTrackingAndFlagging
ImplementingChangeTrackingAndFlaggingSuite Solutions
 

Más de Suite Solutions (20)

SuiteHelp 4.0: Latest Features in Enterprise Webhelp
SuiteHelp 4.0: Latest Features in Enterprise WebhelpSuiteHelp 4.0: Latest Features in Enterprise Webhelp
SuiteHelp 4.0: Latest Features in Enterprise Webhelp
 
Moving your Organization up the Knowledge Value Chain (Proposal for Lavacon 2...
Moving your Organization up the Knowledge Value Chain (Proposal for Lavacon 2...Moving your Organization up the Knowledge Value Chain (Proposal for Lavacon 2...
Moving your Organization up the Knowledge Value Chain (Proposal for Lavacon 2...
 
Increasing Findability with Subject Schemes (Advanced DITA Webinar)
Increasing Findability with Subject Schemes (Advanced DITA Webinar)Increasing Findability with Subject Schemes (Advanced DITA Webinar)
Increasing Findability with Subject Schemes (Advanced DITA Webinar)
 
SuiteHelp 3.2.5 Latest Features
SuiteHelp 3.2.5 Latest FeaturesSuiteHelp 3.2.5 Latest Features
SuiteHelp 3.2.5 Latest Features
 
Using Taxonomy for Customer-centric Dynamic Publishing
Using Taxonomy for Customer-centric Dynamic PublishingUsing Taxonomy for Customer-centric Dynamic Publishing
Using Taxonomy for Customer-centric Dynamic Publishing
 
DITA Quick Start Webinar: Defining Your Style Sheet Requirements
DITA Quick Start Webinar: Defining Your Style Sheet RequirementsDITA Quick Start Webinar: Defining Your Style Sheet Requirements
DITA Quick Start Webinar: Defining Your Style Sheet Requirements
 
DITA Quick Start Webinar Series: Building a Project Plan
DITA Quick Start Webinar Series: Building a Project PlanDITA Quick Start Webinar Series: Building a Project Plan
DITA Quick Start Webinar Series: Building a Project Plan
 
DITA Quick Start Webinar Series: Building a Project Plan
DITA Quick Start Webinar Series: Building a Project PlanDITA Quick Start Webinar Series: Building a Project Plan
DITA Quick Start Webinar Series: Building a Project Plan
 
DITA Quick Start: System Architecture of a Basic DITA Toolset
DITA Quick Start: System Architecture of a Basic DITA ToolsetDITA Quick Start: System Architecture of a Basic DITA Toolset
DITA Quick Start: System Architecture of a Basic DITA Toolset
 
DITA Quick Start Webinar Series: Getting Started with Information Architecture
DITA Quick Start Webinar Series: Getting Started with Information ArchitectureDITA Quick Start Webinar Series: Getting Started with Information Architecture
DITA Quick Start Webinar Series: Getting Started with Information Architecture
 
Introduction to S1000D
Introduction to S1000DIntroduction to S1000D
Introduction to S1000D
 
DITA Quick Start for Authors - Part I
DITA Quick Start for Authors - Part IDITA Quick Start for Authors - Part I
DITA Quick Start for Authors - Part I
 
Suite Labs: Generating SuiteHelp Output
Suite Labs: Generating SuiteHelp OutputSuite Labs: Generating SuiteHelp Output
Suite Labs: Generating SuiteHelp Output
 
Overview of SuiteHelp 3.1 for DITA
Overview of SuiteHelp 3.1 for DITAOverview of SuiteHelp 3.1 for DITA
Overview of SuiteHelp 3.1 for DITA
 
Svg and graphics
Svg and graphicsSvg and graphics
Svg and graphics
 
LocalizingStyleSheetsForHTMLOutputs
LocalizingStyleSheetsForHTMLOutputsLocalizingStyleSheetsForHTMLOutputs
LocalizingStyleSheetsForHTMLOutputs
 
ImplementingChangeTrackingAndFlagging
ImplementingChangeTrackingAndFlaggingImplementingChangeTrackingAndFlagging
ImplementingChangeTrackingAndFlagging
 
AdvancedXPath
AdvancedXPathAdvancedXPath
AdvancedXPath
 
Ot performance webinar
Ot performance webinarOt performance webinar
Ot performance webinar
 
PDF Localization
PDF  LocalizationPDF  Localization
PDF Localization
 

Último

React Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkReact Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkPixlogix Infotech
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentPim van der Noll
 
Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Kaya Weers
 
Generative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxGenerative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxfnnc6jmgwh
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...itnewsafrica
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Farhan Tariq
 
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical InfrastructureVarsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructureitnewsafrica
 
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Nikki Chapple
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterMydbops
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityIES VE
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsRavi Sanghani
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...Wes McKinney
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationKnoldus Inc.
 

Último (20)

React Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkReact Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App Framework
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
 
Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)
 
Generative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxGenerative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptx
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...
 
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical InfrastructureVarsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
 
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL Router
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a reality
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and Insights
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog Presentation
 

Dita ot pipeline webinar

  • 1. Understanding the DITA-OT Pipeline Aryeh Sanders, Suite Solutions
  • 2. Who Are We? Our Mission To increase our customers’ profitability by significantly improving the efficiency of their information development and delivery processes. Qualitative Advantage Content Lifecycle Implementation (CLI) is Suite Solutions’ comprehensive approach – from concept to publication – to maximizing the value of your information assets. Our professionals are with you at every phase, determining, recommending and implementing the most cost-effective, flexible and long term solution for your business.
  • 3. Clients and Partners 3 Private and Confidential Suite Solutions©2009
  • 4. Introduction We will discuss how the DITA-OT is constructed and why We’ll give some insight into this:
  • 5. Overview Problem Statement Solution: The DITA-OT Pipeline Overview of Preprocessing Overview of XHTML Output Overview of PDF Output
  • 6. A Sample DITA Topic <?xmlversion='1.0' encoding='UTF-8'?> <!DOCTYPEtopic PUBLIC "-//OASIS//DTD DITA Topic//EN" "c:itaottdopic.dtd"> <topicid="topic" xml:lang="fr-fr"> <title>Sample Topic</title> <body> <pconref="conrefs.xml#conrefid/intropara"/> <p>For more information, please see <xrefhref="infotable.xml#topicid/tableid"/>.</p> <paudience="developers">Information that only developers want to know.</p> </body> </topic>
  • 7. Items That Need Preprocessing <?xmlversion='1.0' encoding='UTF-8'?> <!DOCTYPEtopic PUBLIC "-//OASIS//DTD DITA Topic//EN" "c:itaottdopic.dtd"> <topicid="topic" xml:lang="fr-fr"> <title>Sample Topic</title> <body> <pconref="conrefs.xml#conrefid/intropara"/> <p>For more information, please see <xrefhref="infotable.xml#topicid/tableid"/>.</p> <paudience="developers">Informationthat only developers want to know.</p> </body> </topic> 1 2 3
  • 8. Items That Need Preprocessing In the previous slide we saw: Conrefs Cross References Conditional Text All of these need some modification in our final output But there’s more!
  • 9. Items That Need Preprocessing Lots more! Navtitle Keyref Moving metadata from the map Reltables Sibling and Parent / Child related links Chunking Copy-to Coderef And more…
  • 10. Problem: Process DITA Correctly We want a solution that delivers on all of the features in the DITA spec Our solution should make it easy to reason about correctness Our solution should use common processing for most DITA features for many output formats
  • 11. Solution: DITA Pipeline Our Solution: We should build the DITA-OT as a pipeline Each step makes one type of change to the DITA, and the output is also DITA Output from each step is the input to the next step This makes it easier to reason about the correctness of the implementation: each step should do one thing well It doesn’t solve all of our problems We still need to make sure each step is correct, of course We need ensure the order is correct
  • 12. Example of a Pipeline Step: Conref Before: <p class="- topic/p " conref="conrefs.xml#conrefid/intropara" xtrf="C:ygwinomeamilyebinarest.xml" xtrc="p:1"></p> After: <p class="- topic/p " xtrf="C:ygwinomeamilyebinaronrefs.xml" xtrc="p:1">This is an introductory paragraph.</p> Note if you happen to try this and compare the files: this isn’t the only difference between the two files, but it’s the only meaningful difference (e.g. <xref/> vs. <xref></xref>)
  • 13. Technical Details About the Log The DITA-OT is mostly implemented in a mixture of three languages: Ant Java XSLT Ant drives the whole process Not used the way that’s familiar to Java users – it is not used to manage dependencies on changed files, mostly just to run the steps in sequence java –jar dost.jar is just a wrapper around Ant, which sets up clearer logging, provides an easier way to enter some parameters, and runs integrator
  • 14. Technical Details About the Log If you run via Java, your log shows messages like: Debug and filter input files... Debug and filter input files... Copy image files... Copy html files... Copy flag files... Copy subsidiary files... Copy generated files... Resolve conref push... Resolve conref in input files... If you run via Ant, your log shows messages like: debug-filter-flag-check: debug: debug-and-filter: debug-filter: copy-image-check: copy-image: copy-html-check:
  • 15. Technical Details About the Log Both the Ant logs and the Java logs are reporting the same events Ant is more verbose, since it logs each “target”, some of which aren’t very interesting The Java version tries to give messages that are closer to English using the target description instead of the name The “pipeline” that we’ve been discussing isn’t logged separately The “pipeline” is implemented just as a set of steps in Ant So there’s no direct way to view the pipeline itself Confusing: There’s an Ant task called <pipeline> that runs some parts of the pipeline, but not all
  • 16. Order in the Pipeline Best current source of information, from Robert Anderson: http://dita.xml.org/node/2469 Some steps must come before others: If you want to figure out the text for a cross reference to a topic, you need to know the name of the topic – but if you use navtitle and locktitle in your map, the title will change Therefore, extract the title after you process locktitle Some steps should come before others: Process conditional attributes early, so that you don’t have to waste time with other processing if you will remove the element anyway At that link, you’ll find much more detailed information about each step
  • 17. Maintaining Valid DITA Each step during preprocessing outputs valid DITA This reduces the dependence between steps – if you skip a step, everything’s fine. The OT does skip steps if it knows they’re not needed, e.g. it doesn’t do conref processing if there are no conrefs This also helps catch errors, since the output gets validated at each step The DITA specification has features to help: xtrc, xtrf attributes for debugging – the toolkit fills these in at the beginning, and the values are maintained throughout processing. related-links section in each topic to hold the links gathered from reltables and generated by relationships Similar metadata that allows metadata from the map to be pushed into the topics
  • 18. Goal of Preprocessing All DITA features should be processed into simpler but valid DITA Example:Conrefs are eliminated Example:Descriptions are filled in within cross references Each DITA file should stand alone All the information needed for output is now in the individual files There’s a single DITA map that stands alone All the information needed for output is in that map; all the submaps are joined together New files created from chunk and copy-to are also “ready to go” All that’s left to do with the DITA is switching to a new vocabulary – such as HTML or XSL-FO
  • 19. Performance Issues In theory, the pipeline reads and processes files many times DTDs (once for every step for every file) XSLT Stylesheets (once for every time each is run) The DITA files themselves (once for every step for every file) Mitigation Latest DITA-OTs have a patch from Eliot Kimber that only reads the DTDs once and caches them Ant caches stylesheets There’s a price to pay: it costs memory – if you run out, you can shut off this cache with dita.preprocess.reloadstylesheet=true There’s no cache for the DITA files themselves yet There have been some discussions on the developer group about changing the pipeline implementation, so this might be provided as part of that
  • 20. Overview of HTML Processing HTML itself is “simple” – it translates the DITA into corresponding XHTML elements The stylesheets do have to do work to change between structures that aren’t quite similar, such as between certain DITA tables and HTML tables Most are straightforward: <uicontrol> becomes <span class=“uicontrol”> Formatting is handled in the CSS file, not in processing DITA topics are processed to make the HTML files The merged map is processed to make the TOC
  • 21. Overview of PDF Processing PDF processing in the toolkit is more complicated You need at least one more step – convert DITA to an intermediate format that is straightforward to convert to PDF In theory, it didn’t have to be so complicated, since you can generate PDFs from HTML and CSS In practice, CSS used to be less sophisticated than it is now, and people have more demands from their PDFs Index Language specific font control You might want your Chinese characters in a Chinese font, and your English characters in an English font – no font covers all languages We’re not going to discuss all the things that PDF output is doing, just the steps it takes
  • 22. PDF Processing Steps (1) Topicmerge – merge all the topics and the map into one big file This is a good opportunity to do certain kinds of processing, such as creating fake topics that say “MISSING TOPIC” if a topic is missing This step already does create fake topics to correspond to <topichead> in the map, since the main PDF processing is done topic by topic Note: topicmerge is done in Java, then post-processed by topicmerge.xsl in the FO plugin _MERGED.ditamap to stage1.xml Collects all the indexterms from the topics, and puts them at the end for later processing to create the index
  • 23.
  • 24. PDF Processing Steps (3) stage2.fo to stage3.fo Java step which looks for characters in other languages, which will be marked for font processing stage3.fo to topic.fo Substitutes logical fonts for real font names from font-mappings.xml If you specify that Chinese should have a different Sans font, then English characters will have the English Sans font, and Chinese characters will have the Chinese Sans font, even if they both appear in the same element topic.fo to PDF Actual PDF is created by an FO Processor, probably one of: Apache FOP (free, but doesn’t support indexes) RenderX XEP Antenna House Formatter
  • 25. Questions? Any questions? Be in touch!Aryeh Sandersaryehs@suite-sol.com