XML roundtripping - attributes with more than one value

Lynne A. Price lprice at txstruct.com
Wed Nov 1 12:49:53 PST 2006


Daniel,
   You seem to have stumbled on a rather bizarre FM bug. Consider the 
following XML document:

<!DOCTYPE test [
<!ELEMENT test (bug)>
<!ATTLIST test test NMTOKENS #REQUIRED>
<!ELEMENT bug EMPTY>
<!ATTLIST bug
   test NMTOKENS #REQUIRED
   other NMTOKENS "xxx"
 >
]>
<test test="cat dog">
<bug test="rose daisy"/>
</test>

It is reasonable to expect the test attribute of the test element to be 
treated the same way as the test attribute of the bug element. However, the 
attribute on test is interpreted as two strings while that on bug as only one.

Furthermore, the significant difference seems to be the definition of the 
other attribute. If the definition of that attribute is removed, bug's test 
attribute is processed correctly. The order of the two attribute 
definitions in the declaration does not matter. If the default value of 
other is changed to #IMPLIED or #REQUIRED, then test imports correctly.

I've tested on Windows in FM 7.2p158 and 7.1b023.

         --Lynne





At 06:33 AM 10/26/2006, Daniel Osborn wrote:
>Does this mean that I should change the attribute type in the DTD to
>NMTOKENS? (At the moment it's CDATA.) I tried this but nothing changed.
>Have I done the wrong thing?

Daniel,
   Yes, you want the attribute type in the DTD to be NMTOKENS. And,I have 
no idea if you've done the wrong thing!
         --Lynne




Lynne A. Price
Text Structure Consulting, Inc.
Specializing in structured FrameMaker consulting, application development, 
and training
lprice at txstruct.com           http://www.txstruct.com
voice/fax: (510) 583-1505     cell phone: (510) 421-2284  





More information about the framers mailing list