<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css" style="display:none"><!--P{margin-top:0;margin-bottom:0;} --></style>
</head>
<body dir="ltr">
<div id="divtagdefaultwrapper" style="font-size:12pt;color:#000000;background-color:#FFFFFF;font-family:Calibri,Arial,Helvetica,sans-serif;">
<p></p>
Thanks for clarifying this.<br>
<br>
It might be a good idea to amend the field-level specification<br>
for InternationalStringType with something like this:<br>
<br>
The value for the attribute xml:lang must always be defined<br>
either implicitly or explicitly. <br>
If the attribute is not explicitly set, <br>
its value is inherited from the parent. <br>
Consequently, there can be only one &lt;r:String&gt; child <br>
without xml:lang set explicitly within an InternationalStringType element.<br>
<br>
--<br>
<br>
The inheritance of information (eg. xml:lang) from parent creates <br>
some issues with respect to the XML linearisation process <br>
(the process of converting the hierarchical DDIInstances into <br>
flat list of Fragments). These issues are solvable though.<br>
<br>
An example follows.<br>
<br>
First, there is the minimalistic ddi:DDIInstance with <br>
id &quot;ddi_instance&quot;. The @xml:lang is defined in the root element.<br>
<br>
ddi_instance.xml<br>
------8&lt;------8&lt;------<br>
&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;<br>
&lt;ddi:DDIInstance<br>
&nbsp;&nbsp;&nbsp; xmlns:ddi=&quot;ddi:instance:3_2&quot;<br>
&nbsp;&nbsp;&nbsp; xmlns:r=&quot;ddi:reusable:3_2&quot;<br>
&nbsp;&nbsp;&nbsp; xmlns:s=&quot;ddi:studyunit:3_2&quot;<br>
&nbsp;&nbsp;&nbsp; xml:lang=&quot;fi&quot;<br>
&nbsp;&nbsp;&nbsp; &gt;<br>
&nbsp; <br>
&nbsp; &lt;r:Agency&gt;acme.org&lt;/r:Agency&gt;<br>
&nbsp; &lt;r:ID&gt;ddi_instance&lt;/r:ID&gt;<br>
&nbsp; &lt;r:Version&gt;1&lt;/r:Version&gt;<br>
<br>
&nbsp; &lt;s:StudyUnit&gt;<br>
&nbsp;&nbsp;&nbsp; &lt;r:Agency&gt;acme.org&lt;/r:Agency&gt;<br>
&nbsp;&nbsp;&nbsp; &lt;r:ID&gt;study_unit&lt;/r:ID&gt;<br>
&nbsp;&nbsp;&nbsp; &lt;r:Version&gt;1&lt;/r:Version&gt;<br>
&nbsp;&nbsp; &nbsp;<br>
&nbsp;&nbsp;&nbsp; &lt;r:Citation&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;r:Title&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;r:String&gt;otsikko suomeksi&lt;/r:String&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/r:Title&gt;<br>
&nbsp;&nbsp;&nbsp; &lt;/r:Citation&gt;<br>
&nbsp;&nbsp; &nbsp;<br>
&nbsp; &lt;/s:StudyUnit&gt;<br>
&lt;/ddi:DDIInstance&gt;<br>
------8&lt;------8&lt;------<br>
<br>
The &lt;r:String&gt; element does not have the attribute @xml:lang explicitly<br>
set. However, the root element has @xml:lang explicitly set to &quot;en&quot;,<br>
and therefore the &lt;s:StudyUnit&gt;'s title has the @xml:lang implicitly<br>
set to &quot;en&quot; too.<br>
<br>
Because the &lt;s:StudyUnit&gt; is inherited from r:AbstractMaintainableType,<br>
it is possible to maintain it as an independent object.<br>
<br>
As an independent object the &lt;s:StudyUnit&gt; does not have @xml:lang<br>
defined for any of its children. Moreover, assuming a default @xml:lang<br>
value &quot;en_us&quot; for the &lt;s:StudyUnit&gt; would lead to a contradiction.<br>
<br>
This problem becames more apparent, when the above ddi:DDIInstance<br>
is linearised into flat list of ddi:Fragments, and then the StudyUnit's<br>
Fragment is reused in another DDIInstance.<br>
<br>
Here's the linearised version of the above document,<br>
<br>
fragments1.xml<br>
------8&lt;------8&lt;------<br>
&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;<br>
&lt;ddi:FragmentInstance<br>
&nbsp;&nbsp;&nbsp; xmlns:ddi=&quot;ddi:instance:3_2&quot;<br>
&nbsp;&nbsp;&nbsp; xmlns:r=&quot;ddi:reusable:3_2&quot;<br>
&nbsp;&nbsp;&nbsp; xmlns:s=&quot;ddi:studyunit:3_2&quot;<br>
&nbsp;&nbsp;&nbsp; &gt;<br>
<br>
&nbsp; &lt;ddi:Fragment&gt;<br>
&nbsp;&nbsp;&nbsp; &lt;ddi:DDIInstance xml:lang=&quot;fi&quot;&gt;<br>
&nbsp;&nbsp; &nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;r:Agency&gt;acme.org&lt;/r:Agency&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;r:ID&gt;ddi_instance&lt;/r:ID&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;r:Version&gt;1&lt;/r:Version&gt;<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;r:StudyUnitReference&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;r:Agency&gt;acme.org&lt;/r:Agency&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;r:ID&gt;study_unit&lt;/r:ID&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;r:Version&gt;1&lt;/r:Version&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;r:TypeOfObject&gt;StudyUnit&lt;/r:TypeOfObject&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/r:StudyUnitReference&gt;<br>
&nbsp;&nbsp;&nbsp; &lt;/ddi:DDIInstance&gt;<br>
&nbsp; &lt;/ddi:Fragment&gt;<br>
<br>
&nbsp; &lt;ddi:Fragment&gt;<br>
&nbsp;&nbsp;&nbsp; &lt;s:StudyUnit&gt;<br>
&nbsp;&nbsp; &nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;r:Agency&gt;acme.org&lt;/r:Agency&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;r:ID&gt;study_unit&lt;/r:ID&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;r:Version&gt;1&lt;/r:Version&gt;<br>
&nbsp;&nbsp; &nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;r:Citation&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;r:Title&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;r:String&gt;otsikko suomeksi&lt;/r:String&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/r:Title&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/r:Citation&gt;<br>
&nbsp;&nbsp;&nbsp; &lt;/s:StudyUnit&gt;<br>
&nbsp; &lt;/ddi:Fragment&gt;<br>
<br>
&lt;/ddi:FragmentInstance&gt;<br>
------8&lt;------8&lt;------<br>
<br>
Now, consider another FragmentInstance, which reuses the StudyUnit<br>
from the previous FragmentInstance<br>
<br>
fragments2.xml<br>
------8&lt;------8&lt;------<br>
&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;<br>
&lt;ddi:FragmentInstance<br>
&nbsp;&nbsp;&nbsp; xmlns:ddi=&quot;ddi:instance:3_2&quot;<br>
&nbsp;&nbsp;&nbsp; xmlns:r=&quot;ddi:reusable:3_2&quot;<br>
&nbsp;&nbsp;&nbsp; xmlns:s=&quot;ddi:studyunit:3_2&quot;<br>
&nbsp;&nbsp;&nbsp; &gt;<br>
<br>
&nbsp; &lt;ddi:Fragment&gt;<br>
&nbsp;&nbsp;&nbsp; &lt;ddi:DDIInstance xml:lang=&quot;en&quot;&gt;<br>
&nbsp;&nbsp; &nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;r:Agency&gt;acme.org&lt;/r:Agency&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;r:ID&gt;another_ddi_instance&lt;/r:ID&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;r:Version&gt;1&lt;/r:Version&gt;<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;r:StudyUnitReference&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;r:Agency&gt;acme.org&lt;/r:Agency&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;r:ID&gt;study_unit&lt;/r:ID&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;r:Version&gt;1&lt;/r:Version&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;r:TypeOfObject&gt;StudyUnit&lt;/r:TypeOfObject&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/r:StudyUnitReference&gt;<br>
&nbsp;&nbsp;&nbsp; &lt;/ddi:DDIInstance&gt;<br>
&nbsp; &lt;/ddi:Fragment&gt;<br>
<br>
&lt;/ddi:FragmentInstance&gt;<br>
------8&lt;------8&lt;------<br>
<br>
This DDIInstance is identified as &quot;another_ddi_instance&quot;,<br>
and it differs from the previous &quot;ddi_instance&quot; only by setting<br>
a different value for the xml:lang.<br>
<br>
Given these two FragmentInstances, &quot;fragments1.xml&quot; and &quot;fragments2.xml&quot;, <br>
is is possible to reconstruct (or &quot;delinearise&quot;) two different DDIInstances.<br>
One is equal to the first XML document, &quot;ddi_instance.xml&quot;, <br>
and the other DDIInstance is shown below,<br>
<br>
another_ddi_instance.xml<br>
------8&lt;------8&lt;------<br>
&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;<br>
&lt;ddi:DDIInstance<br>
&nbsp;&nbsp;&nbsp; xmlns:ddi=&quot;ddi:instance:3_2&quot;<br>
&nbsp;&nbsp;&nbsp; xmlns:r=&quot;ddi:reusable:3_2&quot;<br>
&nbsp;&nbsp;&nbsp; xmlns:s=&quot;ddi:studyunit:3_2&quot;<br>
&nbsp;&nbsp;&nbsp; xml:lang=&quot;en&quot;<br>
&nbsp;&nbsp;&nbsp; &gt;<br>
&nbsp; <br>
&nbsp; &lt;r:Agency&gt;acme.org&lt;/r:Agency&gt;<br>
&nbsp; &lt;r:ID&gt;another_ddi_instance&lt;/r:ID&gt;<br>
&nbsp; &lt;r:Version&gt;1&lt;/r:Version&gt;<br>
<br>
&nbsp; &lt;s:StudyUnit&gt;<br>
&nbsp;&nbsp;&nbsp; &lt;r:Agency&gt;acme.org&lt;/r:Agency&gt;<br>
&nbsp;&nbsp;&nbsp; &lt;r:ID&gt;study_unit&lt;/r:ID&gt;<br>
&nbsp;&nbsp;&nbsp; &lt;r:Version&gt;1&lt;/r:Version&gt;<br>
&nbsp;&nbsp; &nbsp;<br>
&nbsp;&nbsp;&nbsp; &lt;r:Citation&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;r:Title&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;r:String&gt;otsikko suomeksi&lt;/r:String&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/r:Title&gt;<br>
&nbsp;&nbsp;&nbsp; &lt;/r:Citation&gt;<br>
&nbsp;&nbsp; &nbsp;<br>
&nbsp; &lt;/s:StudyUnit&gt;<br>
&lt;/ddi:DDIInstance&gt;<br>
------8&lt;------8&lt;------<br>
<br>
When &quot;ddi_instance.xml&quot; and &quot;another_ddi_instance.xml&quot; are compared,<br>
they both contain literally identical manifestation of the StudyUnit<br>
identified as &quot;acme.org:study_unit:1&quot;. <br>
<br>
However, the StudyUnit's @xml:lang is implicitly set, and its<br>
value depends on which DDIInstance is being used. This leads<br>
to an ambiguous definition of the Maintainable in question.<br>
<br>
Obviously, this is undesirable.<br>
<br>
The Title of the StudyUnit &quot;acme.org:study_unit:1&quot; should have <br>
the language defined independently of the containing DDIInstance.<br>
<br>
The resolution to this problem is obvious though, but has a notable<br>
impact on the linearisation/delinearisation process. <br>
<br>
When doing a linearisation (DDIInstance-&gt;FragmentInstance) each inherited <br>
attribute must be explicitly set on each Maintainable before <br>
the Maintainables are dismantled into Fragments. <br>
<br>
Conversely, after a Maintainable has been delinearised <br>
(FragmentInstance-&gt;DDIInstance), the redundant xml:lang attributes <br>
should be cleaned up to reduce noise.<br>
<br>
This approach implies that an XML document must be considered <br>
equivalent to itself when the inherited values are explictly set.<br>
<br>
The question is then:<br>
Is the following document equivalent to the first one with<br>
respect to the DDI-Lifecycle 3.2 specification, <br>
as required by my approach? <br>
<br>
The original document &quot;ddi_instance.xml&quot; is transformed so<br>
that each xml:lang attribute has its value explicitly set,<br>
and the XML document should no longer rely on inheritance in any place.<br>
<br>
ddi_intance.noinheritance.xml<br>
------8&lt;------8&lt;------<br>
&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;<br>
&lt;ddi:DDIInstance<br>
&nbsp;&nbsp;&nbsp; xmlns:ddi=&quot;ddi:instance:3_2&quot;<br>
&nbsp;&nbsp;&nbsp; xmlns:r=&quot;ddi:reusable:3_2&quot;<br>
&nbsp;&nbsp;&nbsp; xmlns:s=&quot;ddi:studyunit:3_2&quot;<br>
&nbsp;&nbsp;&nbsp; xml:lang=&quot;fi&quot;<br>
&nbsp;&nbsp;&nbsp; &gt;<br>
&nbsp; <br>
&nbsp; &lt;r:Agency&gt;acme.org&lt;/r:Agency&gt;<br>
&nbsp; &lt;r:ID&gt;ddi_instance&lt;/r:ID&gt;<br>
&nbsp; &lt;r:Version&gt;1&lt;/r:Version&gt;<br>
<br>
&nbsp; &lt;s:StudyUnit xml:lang=&quot;fi&quot;&gt;<br>
&nbsp;&nbsp;&nbsp; &lt;r:Agency&gt;acme.org&lt;/r:Agency&gt;<br>
&nbsp;&nbsp;&nbsp; &lt;r:ID&gt;study_unit&lt;/r:ID&gt;<br>
&nbsp;&nbsp;&nbsp; &lt;r:Version&gt;1&lt;/r:Version&gt;<br>
&nbsp;&nbsp; &nbsp;<br>
&nbsp;&nbsp;&nbsp; &lt;r:Citation&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;r:Title&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;r:String xml:lang=&quot;fi&quot;&gt;otsikko suomeksi&lt;/r:String&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/r:Title&gt;<br>
&nbsp;&nbsp;&nbsp; &lt;/r:Citation&gt;<br>
&nbsp;&nbsp; &nbsp;<br>
&nbsp; &lt;/s:StudyUnit&gt;<br>
&lt;/ddi:DDIInstance&gt;<br>
------8&lt;------8&lt;------<br>
<br>
</div>
</body>
</html>