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>
...