Exit
  • Global community
    • Language:
      • Deutsch
      • English
      • Español
      • Français
      • Português
  • 日本語コミュニティ
    Dedicated community for Japanese speakers
  • 한국 커뮤니티
    Dedicated community for Korean speakers
0

Opening a DTD to make an EDD - problems!

New Here ,
Nov 08, 2009 Nov 08, 2009

Hi,

my situation is this: I have a DTD which I've used before (S1000D v2.2 Descriptive DTD); I have Frame v7.0p579; I'm on WinXP. All I want to do is create my EDD so I can create my template and then my structured app. But when in FM I start the process (File/Structure Tools/Open DTD ...) and select my DTD I get the error msgs as shown on the attached file. At the moment I'm at a loss to know why this is happening. I've done it before, albeit on another machine, but I don't recall ever getting so many problems. The DTD is an issued one so I have no doubts about it but for some reason it just will not get translated.

Could someone please provide some advice as to why this might be happening.

TIA

Carl

TOPICS
Structured
1.4K
Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Enthusiast ,
Nov 09, 2009 Nov 09, 2009

Carl,

I would guess that you are not using the same SGML application definition this time round. There are several things going wrong with your application:

  1. You must refer to an S1000D SGML declaration. That will get rid of the Namelen error by allowing element names that are longer than 8 characters. However, you cannot use the SGML declaration that comes with S1000D issue 2.2 as that increases the various capacity settings beyond FrameMaker's built-in limits. Use the version 1.9 SGML declaration instead.
  2. You need to refer to the S1000D 2.2 SGML catalog file so that the various entity files that comprise the DTD can be located by FrameMaker.
  3. You will need to edit the DTD to avoid the problem that FrameMaker has with the configurable attributes. The only known workaround here is to do the following:

For each of the configurable attributes change the definition from something like this:

<!ENTITY % CLASSES  " (01|02|03|04|05|06|07|08|09|10|
         11|12|13|14|15|16|17|18|19|20|
         21|22|23|24|25|26|27|28|29|30|
         31|32|33|34|35|36|37|38|39|40|
         41|42|43|44|45|46|47|48|49|50|
         51|52|53|54|55|56|57|58|59|60|
         61|62|63|64|65|66|67|68|69|70|
         71|72|73|74|75|76|77|78|79|80|
         81|82|83|84|85|86|87|88|89|90|
         91|92|93|94|95|96|97|98|99) " >

to perhaps this:

<!ENTITY % CLASSES  " (01|02|03|04|05) " >

S1000D expects these attributes to be mapped to specific values using information in the BREX file. However, for the SGML file only a limited range will ever be used, so it is safe to cut down the DTD this way. You will need to do this for all of the configurable attributes.

In the example above the values 01 to 05 could map to

    • Unclassified
    • Restricted
    • Confidential
    • Secret
    • Top secret

You will find the full details on how to edit your SGML application in the Structure Application Developer's Guide.

Good luck

Ian

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
New Here ,
Nov 09, 2009 Nov 09, 2009

Thanks Ian,

I'll give it a go and let you know how it went. After you mentioned it I recalled that the last time I did this I did it using Frame v7.2 - maybe that had something to do with it.

Thanks

Carl

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
New Here ,
Nov 09, 2009 Nov 09, 2009

Ian,

on further consideration, instead of using the S1000D v1.9 declaration, is there some way I could modify Frame's settings? And what would I have to look for? Just a thought.

Carl

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Enthusiast ,
Nov 10, 2009 Nov 10, 2009

Carl,

FrameMaker has no other way to handle the setting that are defined in the SGML declaration. The SGML declaration provides a way to limit the resources needed to handle SGML documents and is a core feature of SGML. FrameMaker allows you to increase these limits above the values defined by the reference concrete syntax.

The problem is that FrameMaker, or its parser imposes limits on these changes so you can never provide adequate capacity values to support the vast number of attribute value choices. I have tried many combinations of capacities and quantities in the SGML declaration, but to no effect other than causing FrameMaker to crash.

So my recommendation to use the 1.9 SGML declaration was based on that experience, the capacities have not been increased beyond FrameMaker's range.

It's unfortunate that we have to use an SGML declaration at all. The equivalent XML DTD is handled without a problem by FrameMaker.

Regards

Ian

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
New Here ,
Nov 15, 2009 Nov 15, 2009

Hello Ian,

thanks for your advice so far.

I've been able to solve the NAMELEN problem by using an S1000D v1.8 declaration file and amending the necessary files as you suggested earlier. And from a solution you suggested some time ago I've sorted out the other error messages (I needed to add a catalog file pointer in my structapps). But I have (hopefully) one last question - the attached scfreen shot is my latest DTD error log: what does it mean? The message is 'Capacity limit (TOTALCAP) exceeded by 5189 points.' (there are two other messages of the same type).

Advice appreciated.

Cheers

Carl

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
New Here ,
Nov 18, 2009 Nov 18, 2009
LATEST

The solution I implemented was:

  • to use a different declaration file as suggested by Ian
  • modify the entity (*.ent) and config (*.cfg) files as suggested
  • add a pointer to my catalog file from my structapps
  • modify the CAPACITY SGMLREF lines in my declaration file according to the lines reporting errors (basically increased the limits to those of the latest dec file)

That's it.

Thanks

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines