Subject: Re: matching on namespaces, whitespace handling From: James Clark <jjc@xxxxxxxxxx> Date: Sat, 12 Jun 1999 15:16:48 +0700 |
"Wilson, James.W" wrote: > > after banging on XSL (using the latest XT) quite a bit, I have some > questions for the gurus. > > 1. I don't understand the relationship between the names in the template > 'match' attributes, the namespaces defined in the input document, and the > namespaces defined in the stylesheet. The namespace URIs are matched. The prefixes are irrelevant. > Does the processor match 'html:*' using the URI of > the namespace 'html' defined *in the stylesheet*? Yes. (Handling of ns:* is bugged in the current version of XT, which is perhaps what is confusing you.) > does it match using the > qname in the original input? No. > 2. How do I find all the namespaces that are defined on a node? With the > namespace() function I can find *the* namespace of a node, but I can't > figure out how to get *all* defined namespaces. You can't currently. This omission is being corrected. > 3. When producing html output, I often want to control exactly how much > space is produced between different parts of the result tree. When I want to > strip out excess space, I can use strip-space='yes' or xml:space='default' - > BUT this seems to mean 'strip out all but one space' to XT. If I want *no* > spaces, I have to do something like > > <xsl:template match='foo'> > <xsl:for-each select='bar' > xml:space='preserve' > ><a href='{@id} > ><xsl:value-of select='baz' > /></a></xsl:for-each> > </xsl:template> > > which is hardly a model of readability. ;) You never need to do that. That will have exactly the same effect as: <xsl:template match='foo'> <xsl:for-each select='bar'> <a href='{@id}'> <xsl:value-of select='baz'/> </a> </xsl:for-each> </xsl:template> Whitespace-only text nodes *in the stylesheet* always get stripped unless you do xml:space='preserve'. If you want to explicitly output some whitespace, it's usually easier to use xsl:text then xml:space='preserve'. > Is there another way to > accomplish this (seemingly trivial) task in a less cramped way? Whitespace handling can be confusing because it is affected by many parts of the process: (a) whitespace in the source document may or may not get stripped (b) whitespace in the stylesheet may or may not get stripped (c) whitespace may or may not get added when the result tree is output as XML If you find yourself puzzled by whitespace handling, then try removing any result-ns or indent-result attributes from the stylesheet That will prevent any whitespace getting added by (c) and will eliminate implementation-dependent parts of the process. If you use the result-ns feature to get HTML 4.0 output rather than XML output, then the implementation is free to add whitespace in a way it thinks it thinks fit, provided the whitespace would be ignored according to the HTML 4.0 spec. If you don't like the way XT does this, I suggest you send me an enhancement request (with a complete example). James XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
matching on namespaces, whitespace , Wilson, James.W | Thread | Re: matching on namespaces, whitesp, G. Ken Holman |
Re: CSS and XSL?, James Clark | Date | RE: CSS and XSL? Rotated Text?, WorldNet |
Month |