xsl-list
[Top] [All Lists]

Re: [xsl] question about generate-id()

2010-08-06 04:27:21
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>
--~--