[Date Prev][Date Next]
[Thread Prev][Thread Next]
[Date Index]
[Thread Index]
[New search]
To: "Lynne A. Price" <lprice@xxxxxxxxxxxx>, Anthony Villa <avilla@xxxxxxxxxxx>, Free Framers <framers@xxxxxxxxx>
Subject: Re: FM+SGML: Attribute Indicators in Object Format Rules
From: Dan Emory <danemory@xxxxxxxxxxxx>
Date: Tue, 4 May 1999 21:08:50 -0700 (MST)
Sender: owner-framers@xxxxxxxxx
Ahh. Now it all comes back to me.
Because of what I regard as a bug in FM+SGML, the only way to get the proper
behavior on both import and export, as well as when inserting a new
cross-reference in FM+SGML, you must, in the EDD and the DTD, wrap the
cross-reference element (let's call it DocumentRef) in a container element
(let's call it XREF), which has the choice-type cross-reference format
attribute (let's call it "Role"). The initial cross-reference format rules
for element DocumentRef would then have the form:
If context is: XREF[Role = "DocExt"]
Use cross-reference format: DocExt
Else, if context is: XREF[Role = "ISBN"]
Use cross-reference format: ISBN Title
Now, with this structure and format rules, you get the following behavior:
1. When you set the FM+SGML New Element Options to "Always Prompt for
Required Attributes", insertion of a new XREF element in an FM+SGML document
will cause the Attribute dialog to open, and you are prompted for a value in
the Role cross-reference format attribute. Upon setting a value for the Role
attribute, the child cross-reference element (DocumentRef) is autoinserted,
and the Cross-Reference dialog opens with the format-rule-specified
cross-reference format pre-selected.
2. When you export to SGML, the XREF element (with its Role attribute) and
the DocumentRef element are both exported.
3. When you import to FM+SGML an SGML document instance in which each
DocumentRef element is wrapped in an XREF element having the Role attribute,
the cross-reference text will be in the format specified by the Role
attribute in the XREF element. That is, the initial cross-reference format
rules for element DocumentRef will apply, because the XREF container, with
its Role attribute, will have been imported before the DocumentRef element.
I have interjected additional comments in Lynne Price's response below.
At 04:41 PM 5/4/99 -0700, Lynne A. Price wrote:
>Whoops, didn't mean to send a previous message in which I'd quoted Anthony's
>message without adding any comments of my own.
>
>Anthony,
> Are you getting unresolved cross-references or cross-references that
>use a format named Undefined Cross-Reference? The former will occur
>if you do not have a read/write rule like:
> attribute "Refid"
> {
> is fm attribute;
> is fm property cross-reference id;
> }
>
> You also need r/w rules for the spaces and medial capital letters
>in some of your names:
>
> element "DocReference" is fm cross-reference element "Doc Reference";
> value "DocExt" is fm value "DocExt";
> value "ISBN" is fm value "ISBN";
>
> Even with these rules, the EDD segment you have sketched does not work.
>I had no luck with != rules either. There is a significant different between
>initial object format rules and text format rules. Text format rules are
>reapplied each time an element's context changes; initial object format
>rules are used only when an element is initially created.
==================================================================
Not true if the format-defining attribute is in a parent container element.
In that case, the initial object format rules (i.e., If Context is:) for the
child element will use the attribute value in the parent to determine the
format on import, as well as during the edition of an FM+SGML document.
=====================================================================
>Objects are
>treated differently because their formatting tends to be much more
>subject to user control than is text--it is likely to be very annoying
>if a table or cross-reference format changes as the user edits surrounding
>material.
=====================================================================
Why, then, does FM+SGML provide initial format rules for such objects?
Moreover, if the object format is specified by format rules that use values
in a format attribute, context will not affect the formatting of those objects.
=======================================================================
> In my tests of importing a cross-reference from SGML, it seems that
>an initial cross-reference format specified in an AllContextsRule is, in
>fact, applied during import, while one in a ContextRule is not. I suspect
>this result has to do with the order in which the cross-reference element
>is created and its attributes set.
=====================================================================
The use of AllContextRules would result in mis-translation, on import of the
proper cross-reference formats, and would eliminate the capability to
pre-select the proper format when inserting cross-references in FM+SGML
documents.
=======================================================================
> In any case, your EDD sets the cross-reference format based on the value
>of the Role attribute. The cross-reference format names do not quite
>match the possible values of the Role attribute. Is it possible to change
either
>the format names or the values so that they are identical? If so, then the
>rule
> attribute "role" is fm property cross-reference format;
>will handle import. You will need to change the EDD to remove the Role
attribute--
>this attribute will only be used in SGML.
===================================================================
The approach you describe above (converting attributes to properties and
eliminating such attributes from the EDD) would eliminate the advantages of
using initial format rules that are attribute-value-dependent for inserting
objects such as cross-references in FM+SGML documents.
=====================================================================
Clearly, it is a bug (or, to be more delicate, a feature deficiency) of
FM+SGML that it cannot use formatting attributes for objects in imported
SGML document instances to pre-select the format for those imported objects,
using the same EDD format rules used for initial object insertion in FM+SGML.
The only workaround that permits the successful use of such formatting
attributes in all three of the enumerated cases (i.e., editing in FM+SGML,
import, and export) described above is to use the solution I have outlined.
Since, however, that solution won't work with most pre-existing DTDs, the
current behavior of FM+SGML is, in my view, a serious deficiency that
urgently need correction.
==================================================================
====================
| Nullius in Verba |
====================
Dan Emory, Dan Emory & Associates
FrameMaker/FrameMaker+SGML Document Design & Database Publishing
Voice/Fax: 949-722-8971 E-Mail: danemory@primenet.com
10044 Adams Ave. #208, Huntington Beach, CA 92646
---Subscribe to the "Free Framers" list by sending a message to
majordomo@omsys.com with "subscribe framers" (no quotes) in the body.
** To unsubscribe, send a message to majordomo@omsys.com **
** with "unsubscribe framers" (no quotes) in the body. **