strip-space and preserve-space act like template rules: given an element,
the processor looks for the highest-precedence strip-space or preserve-space
rule that tells it what to do with that element. Saying strip-space
elements="p" doesn't override strip-space elements="*": it tells the
processor what to do with p elements, and says nothing about any other
elements, so the processor keeps searching and finds the elements="*" rule.
To override strip-space elements="*" you need preserve-space elements="*".
Regards,
Michael Kay
http://www.saxonica.com/
http://twitter.com/michaelhkay
-----Original Message-----
From: Lynn Murdock [mailto:lmurdock(_at_)plos(_dot_)org]
Sent: 11 January 2010 21:43
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: [xsl] xsl-list question: import precedence with strip-space
hi-
i'm new to this forum, so hope this is the correct procedure
for posting.
i am using <xsl:import> to import a generic stylesheet into a
more specific stylesheet. i'm getting an apparent conflict
between the <xsl:strip-space> instructions in the importing
and imported documents: the 'elements' attribute of the
importing document contains a list of elements; the
'elements' attribute of the imported document contains '*',
and it appears that either the instruction in the importing
document is being ignored or the instructions from both
documents are being used.
in the resulting transformation, whitespace is stripped
between adjacent tags within a paragraph, eg:
</italic> <ext-link>
becomes
</italic><ext-link>
when i had this error previously in just the importing
document, removing 'p' from the list of strip-space elements
fixed the problem. but now i suspect that the '*' from the
imported document is removing that space again. i have been
able to fix the problem by adding 'p' to the
<xsl:preserve-space> element, but am wondering why the
strip-space instruction in the importing document doesn't
seem to have precedence over that in the imported document.
does anyone know why i'm getting the results i am and whether
there's a way to force only the importing document's
strip-space instruction to be used (without commenting out or
changing anything in the imported document), or whether
adding 'p' to the preserve-space instruction is my best option?
in case it helps, here are the instructions in the importing document:
<xsl:strip-space elements="abstract ack address
annotation app app-group
array article article-categories article-meta article-title
author-comment author-notes back bio body boxed-text
break caption chem-struct chem-struct-wrapper
citation col colgroup conference contrib contrib-group
copyright-statement date def def-item def-list
disp-quote etal fig fig-group fn fn-group front
gloss-group glossary glyph-ref graphic history hr
inline-graphic journal-meta kwd-group list list-item
media mml:math name nlm-citation note notes page-count
person-group private-char pub-date publisher ref
ref-list response sec speech statement sub-article
subj-group supplementary-material table table-wrap
table-wrap-foot table-wrap-group tbody term tfoot thead
title-group tr trans-abstract verse-group
"/>
and the imported document:
<xsl:strip-space elements="*"/>
thanks a lot!
lynn
--~------------------------------------------------------------------
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>
--~--
--~------------------------------------------------------------------
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>
--~--