16.6.4
There is no guarantee that a generated unique identifier will be
distinct from any unique IDs specified in the source document.
Yuk. IMHO that's a spec weakness. More constrained, surely
it's not rocket science to implement.
You could do it yourself
Which would IMHO be a kludge to work round a spec weakness.
Yes. Lots of ways to do it as this thread has shown.
If I've followed this thread, the problem is that generate-id() might
clash with some existing id in the source? Mixing 2 ways of creating
the ids seems odd, and using a single consistent approach should make
the problem go away Ultimately though, you should be validating the
result - you could do it an embedded xsd just for this check:
<xsl:import-schema>
<xs:schema>
<xs:element name="foo">
<xs:key name="my_id">
<xs:selector xpath=". | .//*"/>
<xs:field xpath="@id"/>
</xs:key>
</xs:element>
</xs:schema>
</xsl:import-schema>
<xsl:template match="/">
<xsl:result-document validation="strict">
<foo id="a">
<bar id="b"/>
<baz id="a"/>
</foo>
</xsl:result-document>
</xsl:template>
results in a (Saxon-EE) failure message containing:
Description: Non-unique value found for constraint my_id: "a"
Start location: 22:19
URL: http://www.w3.org/TR/xslt20/#err-XTTE1555
--
Andrew Welch
http://andrewjwelch.com
Kernow: http://kernowforsaxon.sf.net/
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--