I figured it should be most robust to match on the
namespace-uri rather
than a prefix shorthand, since the latter can be chosen rather
arbitrarily by an author, whereas the namespace-uri has a
more clearly
defined meaning. Is this reasoning sound?
No. The prefix shorthand is just that; a shorthand for the actual value.
If you declare
<xyz:anyelement xmlns:xyz="http://www.zyz.com"/>
in the source XML, you can still match
<xsl:template match="foo:anyelement" xmlns:foo="http://www.zyz.com"/>
in your XSLT, even though the prefixes differ.
What happens is that the prefix are expanded during processing, something
like this
<{http://www.zyz.com}:anyelement/> in the XML
and
<xsl:template match="{http://www.zyz.com}:anyelement"/> in the XSLT.
Askild Aaberg Olsen
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list