[cddlm] Sourceforge and a new CDL resolution bug in my implementation.
Steve Loughran
steve_loughran at hpl.hp.com
Thu May 18 09:10:10 CDT 2006
ooh, this is worrying.
You cannot say 'drop all cdl: attributes' because there are some things,
particularly, cdl:type, that you do want.
Its only cdl:ref and cdl:refroot attributes that must be stripped when
you extend something (and, presumably of cdl:lazy). Without that, you
cannot extend any attribute that is bound to a reference, because that
reference binding is retained.
You dont want any of the following to have the parent stuff merged
refroots:
<component>
<entry cdl:ref="todo" cdl:refroot="a:newroot" />
</component>
<c2 cdl:extends="component">
<entry cdl:ref="value">
<value>7</value>
</c2>
lazy links
<component>
<entry cdl:ref="todo" cdl:lazy="true" />
</component>
<c2 cdl:extends="component">
<entry cdl:ref="value">
<value>7</value>
</c2>
Jun, what do you think?
-steve
Guilherme Mauro Germoglio Barbosa / Projeto Ourgrid - Projeto
Ourgrid/LSD wrote:
> Hi Steve,
>
> I think your implementation is correct (not the test). In the
> specification, the inheritance of elements algorithm (7.2.2.1) states:
>
> /7.2.2.1 Inheritance of Elements
> Inheritance of elements from a node n' to a node n is defined as
> follows:
> 1 Let N an empty node list.
> 2 For each child element e' of n' from the first element to the
> last element:
> 2.1 If the node n has child elements E = {e1, e2,...} that
> have the same name as e'
> 2.1.1 If N does not contain an element that has the same
> name as e':
> *2.1.1.1 For each element ei in E in the document
> order, append ei to the end
> of N. _Inherit attributes from e' to ei._*
> 2.2 Otherwise, append e' to the end of N.
> 3 For each child element e of the node n from the first element
> to the last element:
> 3.1 if the element e' does not have a child element that has
> the same name as e,
> append e to the end of N.
> 4 Replace n's children with the nodes in N./
>
> And your code, based on what you said on the e-mail, does what was
> underlined above.
>
> Guilherme
>
> Steve Loughran wrote:
>
>> Sourceforge is back up, but you need to check out everything again in
>> a new directory tree.
>>
>>
>> Incidenally I just found a little thing my CDL impl. can't resolve
>>
>>
>> <cdl:cdl>
>> <cdl:configuration>
>>
>> <component>
>> <entry cdl:ref="todo"/>
>> </component>
>>
>> <c2 cdl:extends="component">
>> <entry>something</entry>
>> </c2>
>>
>> </cdl:configuration>
>> <cdl:system>
>> <example cdl:extends="c2" />
>> </cdl:system>
>> </cdl:cdl>
>>
>> This fails on my impl, with the entry being undefined.
>>
>> <example xmlns="">
>> <entry cdl:ref="todo">something</entry>
>> </example>
>>
>> I'm clearly not scrubbing cdl:ref stuff when I extend an element, when
>> in reality I should strip that and cdl:refroot.
>>
>> This is now a new test:
>> /org/ggf/cddlm/files/cdl/valid/set_02_references/cddlm-cdl-2005-02-0023.xml
>>
>>
>> Its interesting to see that I can still find problems in my code while
>> writing more CDL files. If anyone has more example CDL Files,
>> especially those that work on their system, please add them as CDL
>> tests just to give us as broad a set of
>> tests as possible.
>>
>> -Steve
>>
>>
>>
>>
>
>
>
More information about the cddlm-wg
mailing list