This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
RE: last attribute ?
- To: xsl-list at mulberrytech dot com
- Subject: RE: last attribute ?
- From: "John E. Simpson" <simpson at polaris dot net>
- Date: Tue, 26 Sep 2000 17:47:18 -0400
- Reply-To: xsl-list at mulberrytech dot com
At 03:03 PM 09/26/2000 -0400, Brian Young wrote:
>Why would the attributes not be processed in document order?
Short answer is: Because the XPath/XSLT specs explicitly *say* that the
order in which attributes are retained in the processor's internal tree
cannot be counted on.
The longer answer is that attributes (as opposed to elements) do not
function as "structured content." Basically, you (or whoever's designed the
XML vocabulary you're using) have opted to put certain information into
attributes, for one reason or another, but you'd like them under some cases
to function like elements. That's not possible, to my knowledge.
I've never written an XSLT processor, but I imagine that internally,
attribute name/value pairs are kept in some kind of indexed structure, e.g.
alphabetically by attribute name, to speed access to them when/if needed.
To the extent that this is true, you *might* be able to use a particular
processor to spit them out in the same order they came in by ordering the
attributes in each element instance in the same order as the processor will
store them, e.g.
<elem
attrib_a="something"
attrib_b="something_b" [...etc...]
attrib_z="something_z"/>
I think I tested Saxon once, months ago, to see how it handled this
sitation and (at least at that time, with that document, etc.) it did
indeed seem to be ordering attributes alphabetically. So no matter what
order attrib_a, _b, etc. appeared in in the source document, they always
seemed to come out of the processor in alphabetical order.
But again, the processor might under certain circumstances re-order them
some other way, or a new version of the processor might use some other
indexing scheme, or you yourself might later opt to use a different
processor, e.g. for cross-platform testing if nothing else. Under any of
those conditions, you're back to Square One.
>If they are not, how can this be forced?
It can't, to my knowledge.
==========================================================
John E. Simpson | "If you were going to
http://www.flixml.org | shoot a mime, would you use
XML Q&A: http://www.xml.com | a silencer?" (Steven Wright)
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list