(register)   username:   password:  

Community KB :: DITA / FrameMaker

A collection of tips and troubleshooting information. Feel free to register and add your own items.

Tags:                                        
Keywords: 

FMN DITA .. refers to the DITA support that is provided by default in FM9 and FM8.

DITA-FMx .. is a plugin that provides extended DITA authoring support for FM9, FM8, FM7.2 and FM7.1. More info...

Submitted by: Steve Fouts (2010-02-18)

TAGS:  Authoring, FM8 DITA, FM9 DITA, DITA-FMx 0.0, DITA-FMx 1.0, DITA-FMx 1.1
SUMMARY:  FrameMaker replaces XML character entities with characters
ISSUE:  If you open an XML (DITA, DocBook, etc) file with character entities in it (for example ω for a lower case Greek letter omega), FrameMaker replaces the character entity with the character itself. When you save from FrameMaker, it saves the character to the XML, even if the character is not valid for the encoding scheme (UTF-8, for example).

Attempting to skirt the issue by specializing the phrase (<ph>) or other character level tag to apply the symbol font to a character (for example, <symbol>w</symbol> for lower case omega) to skirt the issue is also unsuccessful. The same thing happens. FrameMaker substitutes the actual character displayed for the 'w'.
SOLUTION:  I was able to get FrameMaker to use character entities properly if I added the character entity to the document specific declarations at the beginning of the XML file. For example, if I add

<!DOCTYPE dita PUBLIC "-//Cypress//DTD DITA Cypress Composite //EN" "cybase.dtd" [

<!-- Begin Document Specific Declarations -->

<!ENTITY omega "&#969;">

<!-- End Document Specific Declarations -->

]>

Then I can use the character entity &omega; throughout this document. FrameMaker will display an omega, but store the XML with &omega; in it. It will replace the &#969; in the declaration with the character itself, which is not exactly the desired behavior, but in my testing it did not affect generation of XHTML using the DITA OT.

You can accomplish the whole thing using nothing but the FrameMaker interface since FrameMaker stores variables in exactly this way. Declare a variable named 'omega' and paste the Unicode omega as the Variable definition. Then simply insert the variable omega any place you need the character.

You must use the exact XML/HTML character entity (it is case sensitive) as the name of your variable or it will not work correctly in your generated output. So Ccedil for Latin capital letter C with cedilla and ETH for Latin capital letter ETH. There are a ton of references on the web for all these character entities, so look up the ones you need.

Also, this is a document specific declaration, so you have to add the definitions to any document you want special characters to display properly in. If you need the characters in all of your documents you may need to add the entities to your DTD.

Also note that whatever font you are using to display the text in must contain the needed glyph, otherwise you'll get the ? or open box character.