Skip to main content
Participant
July 24, 2020
Question

40051C dtd graphics vs fm

  • July 24, 2020
  • 1 reply
  • 385 views

There is a known issue between framemaker and the army 40051C dtd whereas fm graphic element is empty but the 40051C dtd graphics element is a container with mapref*. Result is that the xml file you build will not validate because it shows as undefined.  Is there a rwr or application rule that will get around this problem?

This topic has been closed for replies.

1 reply

Ian Proudfoot
Legend
July 25, 2020

Elements are assigned a type that maps to a FrameMaker object type. A container element can include child elements but a Graphic element cannot contain any child elements, so we have to work around that limitation. If we look at a similar case from the S1000D specification, the graphic element can contain one or more hotspot elements. That means you have to have a different structure in the FrameMaker EDD compared to the source XML's DTD or Schema. 

In this example I have created a new fm.graphic element that is a container for the real graphic but also allows hotspot elements too.

The last part of the puzzle is to create a transformation that maps from the source structure to the EDD structure on import and another that does the reverse transformation on export. FrameMaker has two ways to do this:

  • XSLT transformation which you can set up as a feature in the XML application for 400051C.
    or,
  • Write a transformation client using the Structure API (quite difficult).

I hope that helps?

Ian

keh1Author
Participant
July 31, 2020

Thanks for your quick response and appreciate your advice.  Long time unstructured user but only a few months structured experience, learning by manuals and forums.  I added your suggestion to my EDD and it validates but it will not save as a dtd, "graphic allready declared".  I used a work around similar to one previously posted on a past forum.  I added a Graphic Element for "anchframe" and added "anchframe" to the existing Graphics Element "anchframe, mapref*" to my EDD.  I saved out as a dtd and updated the definitions in my working file and template and am able to create my xml file.  I guess this is an OK short term fix but I assume my xml will be parsed against the 40051C dtd and it's not going to work. I assume this is where the XLST transformation files come into play. Are the transformation files applied to the xml file upon export from framemaker and become part of the xml file and are seen by the 40051C when it parses or are they just applied to the file and thats it? If I have to go this route, how would I get a XLST transformation file created?  Thanks again for your help.  Hope I am not being to cryptic.

keh1Author
Participant
August 4, 2020

Is framemaker the best tool to use for updating the MIL-STRD-40051 dtd or is it better to use arbortext? Has anyone sucessfully delivered using framemaker to develop the xml files?  If so, other than the graphics issue, what other hurdles have to be overcome to develop the files?