Kevin Flynn wrote:
> 
> Well, I don't really agree that these duplicate ID errors are any more 
> real than the ones you already filter out - the source documents 
> containing the variables are valid and have no duplicates. It just 
> happens that source document A sometimes contains an ID that is the same 
> as one in source document B. I can think of example uses where you might 
> actually *want* to have two "variable" source documents with exactly the 
> same set of variable IDs and then include them all in a "user" document.
> 
> For example:
> 
> productA.db:
> 
> ...
> <para><phrase xml:id="name">Cheap Widget</phrase></para>
> <para><phrase xml:id="price">100 Euro</phrase></para>
> ...
> 
> productB.db:
> 
> ...
> <para><phrase xml:id="name">Expensive Widget</phrase></para>
> <para><phrase xml:id="price">200 Euro</phrase></para>
> ...
> 
> priceList.db
> 
> ...
> <variablelist>
>  <varlistentry>
>    <term><xi:include href="productA.db" xpointer="name" /></term>
>    <listitem><xi:include href="productA.db" xpointer="price" /></listitem>
>  </varlistentry>
>  <varlistentry>
>    <term><xi:include href="productB.db" xpointer="name" /></term>
>    <listitem><xi:include href="productB.db" xpointer="price" /></listitem>
>  </varlistentry>
> </variablelist>
> ...
> 
> The duplicate IDs that result from this kind of use certainly have no 
> practical consequence. Actually the IDs have no purpose in the *merged* 
> document and could be stripped out during merging with no adverse 
> effects in this case.
> 

In my opinion, the example above shows actual duplicate IDs. I would
recommend to use something like this:

productA.db:

...
<para xml:id="cheap_widget"><phrase>Cheap Widget</phrase><phrase>100
Euro</phrase></para>
...

productB.db:

...
<para xml:id="expensive_widget"><phrase>Expensive
Widget</phrase><phrase>200 Euro</phrase></para>
...

priceList.db

...
<variablelist>
  <varlistentry>
    <term><para><xi:include href="productA.db"
xpointer="element(cheap_widget/1)" /></para></term>
    <listitem><para><xi:include href="productA.db"
xpointer="element(cheap_widget/2)" /></para></listitem>
  </varlistentry>
  <varlistentry>
    <term><para><xi:include href="productB.db"
xpointer="element(expensive_widget/1)" /></para></term>
    <listitem><para><xi:include href="productB.db"
xpointer="element(expensive_widget/2)" /></para></listitem>
  </varlistentry>
</variablelist>
...


Reply via email to