xsl-list
[Top] [All Lists]

Re: [xsl] Normalizing space / XPTY0004

2013-07-29 18:09:47
When xsl:value-of (in 2.0) selects multiple items, they are output with a 
separator between adjacent items. The separator defaults to a single space. You 
can change the separator for example by writing <xsl:value-of select="..." 
separator=""/> which uses a zero-length string (i.e. no separator at all).

normalize-space() isn't going to help you in the slightest. The reason it fails 
is that it expects a single string as its first argument, not a sequence of 
strings.

You could also write

<xsl:for-each select="Text"><xsl:value-of select="@value"/></xsl:for-each>

Michael Kay
Saxonica

On 29 Jul 2013, at 23:55, Lief Erickson wrote:

Hi All--

XSLT 2.0
Saxon EE 9.5.0.2 (in oXygen 15.0)

I have a question about normalizing space -- at least I think that's what my 
question is about. I am matching the following TextRun/Text values, but the 
output is putting a space either after the end of the line or before the 
beginning (I can't tell which). That makes the word "are" become "ar e" and 
"larger" become "lar ger" and "unchanged" become "unchang ed". Obviously this 
is not my desired result, but the processor is dutifully matching exactly 
what it finds.

     <Paragraph stylename="Body">
        <TextRun>
           <Text value="If enabled, only the first N-bytes of each ingress 
packet ar"/>
           <Text value="e forwarded to Tool Ports connected to the rule. 
Packets lar"/>
           <Text value="ger than the trim length are 'trimmed' to the size 
specified"/>
           <Text value=". Packets smaller than the trim length are forwarded 
unchang"/>
           <Text value="ed."/>
        </TextRun>
     </Paragraph>


   <xsl:template match="Paragraph[@stylename = 'Body']">
       <xsl:value-of select="./TextRun/Text/@value"/>
   </xsl:template>

Output:
If enabled, only the first N-bytes of each ingress packet ar e forwarded to 
Tool Ports connected to the rule. Packets lar ger than the trim length are 
'trimmed' to the size specified . Packets smaller than the trim length are 
forwarded unchang ed.

I tried <xsl:value-of select="normalize-space(./TextRun/Text/@value)"/>, but 
I get error XPTY0004.

Can someone explain how I should be properly connecting the Text/@value 
entries in this TextRun so that my words are whole? 

-Lief


--~------------------------------------------------------------------
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>
--~--


<Prev in Thread] Current Thread [Next in Thread>