[Geoserver-users] Spaces in labels missing - bug?

Hi List,
I’m wondering about using spaces (" ") in labels.

I’m trying to form a label of two concatenated properties, with the output looking like:

Property1 (Property2)

se:Label
<ogc:Function name=“Concatenate”>
ogc:PropertyNameNAME</ogc:PropertyName>
ogc:Literal (</ogc:Literal>
ogc:PropertyNameELEC_2020</ogc:PropertyName>
ogc:Literal)</ogc:Literal>
</ogc:Function>
</se:Label>

But the output of that is:
Property1(Property2)

Note the lack of space character before the “(”. I tried using " ", but that resulted in an exception.

After more testing, I ended up at the extreme end:

se:Label
<ogc:Function name=“Concatenate”>
ogc:PropertyNameNAME</ogc:PropertyName>
ogc:Literal - - - - - (</ogc:Literal>
ogc:PropertyNameELEC_2020</ogc:PropertyName>
ogc:Literal)</ogc:Literal>
</ogc:Function>
</se:Label>

The output of which is:
Property1- - - - - (Property2)
Again, note the lack of space between Property1 and the first non-space character.

Is this meant to happen, am I doing something wrong, or is it a bug? I know in HTML it will only ever show a single space character unless they’re declared explicitly with " " irrespective of how many are in the code, but this seems to be left-trimming only.

Cheers,
Jonathan

This transmission is intended for the named addressee(s) only and may contain confidential, sensitive or personal information and should be handled accordingly. Unless you are the named addressee (or authorised to receive it for the addressee) you may not copy or use it, or disclose it to anyone else. If you have received this transmission in error please notify the sender immediately. All email traffic sent to or from us, including without limitation all GCSX traffic, may be subject to recording and/or monitoring in accordance with relevant legislation.

On Tue, Apr 29, 2014 at 6:19 PM, Jonathan Moules <
jonathanmoules@anonymised.com> wrote:

Hi List,
I'm wondering about using spaces (" ") in labels.

I'm trying to form a label of two concatenated properties, with the output
looking like:

*Property1 (Property2)*

            <se:Label>
              <ogc:Function name="Concatenate">
                <ogc:PropertyName>NAME</ogc:PropertyName>
                <ogc:Literal> (</ogc:Literal>
                <ogc:PropertyName>ELEC_2020</ogc:PropertyName>
                <ogc:Literal>)</ogc:Literal>
              </ogc:Function>
            </se:Label>

But the output of that is:
*Property1(Property2)*

Note the lack of space character before the "(". I tried using "&nbsp;",
but that resulted in an exception.

After more testing, I ended up at the extreme end:

            <se:Label>
              <ogc:Function name="Concatenate">
                <ogc:PropertyName>NAME</ogc:PropertyName>
                <ogc:Literal> - - - - - (</ogc:Literal>
                <ogc:PropertyName>ELEC_2020</ogc:PropertyName>
                <ogc:Literal>)</ogc:Literal>
              </ogc:Function>
            </se:Label>

The output of which is:
*Property1*- - - - - *(Property2)*
Again, note the lack of space between Property1 and the first non-space
character.

Is this meant to happen, am I doing something wrong, or is it a bug? I
know in HTML it will only ever show a single space character unless they're
declared explicitly with "&nbsp;" irrespective of how many are in the code,
but this seems to be left-trimming only.

Meant to happen, by SLD spec, we have to eat away the spaces.
All you can do to preserve them is to wrap them in a CDATA section:

             <se:Label>
              <ogc:Function name="Concatenate">
                <ogc:PropertyName>NAME</ogc:PropertyName>
                <ogc:Literal><![CDATA[ (]]></ogc:Literal>
                <ogc:PropertyName>ELEC_2020</ogc:PropertyName>
                <ogc:Literal>)</ogc:Literal>
              </ogc:Function>
            </se:Label>

The CDATA trick should work with SLD 1.0, with SLD 1.1, not sure

Cheers
Andrea

--

Meet us at GEO Business 2014! in London! Visit http://goo.gl/fES3aK
for more information.

Ing. Andrea Aime
@geowolf
Technical Lead

GeoSolutions S.A.S.
Via Poggio alle Viti 1187
55054 Massarosa (LU)
Italy
phone: +39 0584 962313
fax: +39 0584 1660272
mob: +39 339 8844549

http://www.geo-solutions.it
http://twitter.com/geosolutions_it

-------------------------------------------------------

Hi Andrea,
Thanks for the information.

Alas it doesn’t appear to work with SLD 1.1. Is that a spec thing or a implementation thing? (I tried a quick search in the specs, but “CDATA” didn’t find much of anything in either the 1.0 or 1.1 so I guess it’s defined in some other way).

If the later I’ll investigate getting it sponsored as it’ll improve our labelling considerably. :slight_smile:

Many thanks,
Jonathan

This transmission is intended for the named addressee(s) only and may contain confidential, sensitive or personal information and should be handled accordingly. Unless you are the named addressee (or authorised to receive it for the addressee) you may not copy or use it, or disclose it to anyone else. If you have received this transmission in error please notify the sender immediately. All email traffic sent to or from us, including without limitation all GCSX traffic, may be subject to recording and/or monitoring in accordance with relevant legislation.

···

On 29 April 2014 17:36, Andrea Aime <andrea.aime@anonymised.com> wrote:

On Tue, Apr 29, 2014 at 6:19 PM, Jonathan Moules <jonathanmoules@anonymised.com> wrote:

Hi List,
I’m wondering about using spaces (" ") in labels.

I’m trying to form a label of two concatenated properties, with the output looking like:

Property1 (Property2)

se:Label
<ogc:Function name=“Concatenate”>
ogc:PropertyNameNAME</ogc:PropertyName>
ogc:Literal (</ogc:Literal>
ogc:PropertyNameELEC_2020</ogc:PropertyName>
ogc:Literal)</ogc:Literal>
</ogc:Function>
</se:Label>

But the output of that is:
Property1(Property2)

Note the lack of space character before the “(”. I tried using " ", but that resulted in an exception.

After more testing, I ended up at the extreme end:

se:Label
<ogc:Function name=“Concatenate”>
ogc:PropertyNameNAME</ogc:PropertyName>
ogc:Literal - - - - - (</ogc:Literal>
ogc:PropertyNameELEC_2020</ogc:PropertyName>
ogc:Literal)</ogc:Literal>
</ogc:Function>
</se:Label>

The output of which is:
Property1- - - - - (Property2)
Again, note the lack of space between Property1 and the first non-space character.

Is this meant to happen, am I doing something wrong, or is it a bug? I know in HTML it will only ever show a single space character unless they’re declared explicitly with " " irrespective of how many are in the code, but this seems to be left-trimming only.

Meant to happen, by SLD spec, we have to eat away the spaces.
All you can do to preserve them is to wrap them in a CDATA section:

se:Label
<ogc:Function name=“Concatenate”>
ogc:PropertyNameNAME</ogc:PropertyName>

ogc:Literal</ogc:Literal>

ogc:PropertyNameELEC_2020</ogc:PropertyName>
ogc:Literal)</ogc:Literal>
</ogc:Function>
</se:Label>

The CDATA trick should work with SLD 1.0, with SLD 1.1, not sure

Cheers
Andrea

==
Meet us at GEO Business 2014! in London! Visit http://goo.gl/fES3aK
for more information.

Ing. Andrea Aime

@geowolf
Technical Lead

GeoSolutions S.A.S.
Via Poggio alle Viti 1187
55054 Massarosa (LU)
Italy
phone: +39 0584 962313
fax: +39 0584 1660272
mob: +39 339 8844549

http://www.geo-solutions.it
http://twitter.com/geosolutions_it


For those interested, this actually seems to be a limitation of the “concatenate” function rather than a more generic labelling/SLD issue.

This doesn’t work (instead it strips out the space):

se:Label
<ogc:Function name=“Concatenate”>
ogc:PropertyNameNAME</ogc:PropertyName>
ogc:Literal (</ogc:Literal>
ogc:PropertyNameELEC_2020</ogc:PropertyName>
ogc:Literal)</ogc:Literal>
</ogc:Function>
</se:Label>

This transmission is intended for the named addressee(s) only and may contain confidential, sensitive or personal information and should be handled accordingly. Unless you are the named addressee (or authorised to receive it for the addressee) you may not copy or use it, or disclose it to anyone else. If you have received this transmission in error please notify the sender immediately. All email traffic sent to or from us, including without limitation all GCSX traffic, may be subject to recording and/or monitoring in accordance with relevant legislation.

···

However, I just came across the help for this - http://docs.geoserver.org/stable/en/user/styling/sld-reference/labeling.html#composing-labels-from-multiple-attributes - and so tried that version:

se:Label
ogc:PropertyNameNAME</ogc:PropertyName> (ogc:PropertyNameUPRN</ogc:PropertyName>)
</se:Label>

So it seems that trying to do it “properly”, i.e. by glueing together the components is actually the wrong way to do it.

Cheers,
Jonathan

On 29 April 2014 18:01, Jonathan Moules <jonathanmoules@anonymised.com> wrote:

Hi Andrea,
Thanks for the information.

Alas it doesn’t appear to work with SLD 1.1. Is that a spec thing or a implementation thing? (I tried a quick search in the specs, but “CDATA” didn’t find much of anything in either the 1.0 or 1.1 so I guess it’s defined in some other way).

If the later I’ll investigate getting it sponsored as it’ll improve our labelling considerably. :slight_smile:

Many thanks,
Jonathan

On 29 April 2014 17:36, Andrea Aime <andrea.aime@anonymised.com> wrote:

On Tue, Apr 29, 2014 at 6:19 PM, Jonathan Moules <jonathanmoules@anonymised.com> wrote:

Hi List,
I’m wondering about using spaces (" ") in labels.

I’m trying to form a label of two concatenated properties, with the output looking like:

Property1 (Property2)

se:Label
<ogc:Function name=“Concatenate”>
ogc:PropertyNameNAME</ogc:PropertyName>
ogc:Literal (</ogc:Literal>
ogc:PropertyNameELEC_2020</ogc:PropertyName>
ogc:Literal)</ogc:Literal>
</ogc:Function>
</se:Label>

But the output of that is:
Property1(Property2)

Note the lack of space character before the “(”. I tried using " ", but that resulted in an exception.

After more testing, I ended up at the extreme end:

se:Label
<ogc:Function name=“Concatenate”>
ogc:PropertyNameNAME</ogc:PropertyName>
ogc:Literal - - - - - (</ogc:Literal>
ogc:PropertyNameELEC_2020</ogc:PropertyName>
ogc:Literal)</ogc:Literal>
</ogc:Function>
</se:Label>

The output of which is:
Property1- - - - - (Property2)
Again, note the lack of space between Property1 and the first non-space character.

Is this meant to happen, am I doing something wrong, or is it a bug? I know in HTML it will only ever show a single space character unless they’re declared explicitly with " " irrespective of how many are in the code, but this seems to be left-trimming only.

Meant to happen, by SLD spec, we have to eat away the spaces.
All you can do to preserve them is to wrap them in a CDATA section:

se:Label
<ogc:Function name=“Concatenate”>
ogc:PropertyNameNAME</ogc:PropertyName>

ogc:Literal</ogc:Literal>

ogc:PropertyNameELEC_2020</ogc:PropertyName>
ogc:Literal)</ogc:Literal>
</ogc:Function>
</se:Label>

The CDATA trick should work with SLD 1.0, with SLD 1.1, not sure

Cheers
Andrea

==
Meet us at GEO Business 2014! in London! Visit http://goo.gl/fES3aK
for more information.

Ing. Andrea Aime

@geowolf
Technical Lead

GeoSolutions S.A.S.
Via Poggio alle Viti 1187
55054 Massarosa (LU)
Italy
phone: +39 0584 962313
fax: +39 0584 1660272
mob: +39 339 8844549

http://www.geo-solutions.it
http://twitter.com/geosolutions_it


Have a look in the user manual, I think you end up needing to use CDATA (because XML documents ignore whitespace).

http://docs.geoserver.org/latest/en/user/styling/sld-reference/labeling.html

···

Jody Garnett

On Wed, Apr 30, 2014 at 2:19 AM, Jonathan Moules <jonathanmoules@anonymised.com> wrote:

Hi List,
I’m wondering about using spaces (" ") in labels.

I’m trying to form a label of two concatenated properties, with the output looking like:

Property1 (Property2)

se:Label
<ogc:Function name=“Concatenate”>
ogc:PropertyNameNAME</ogc:PropertyName>
ogc:Literal (</ogc:Literal>
ogc:PropertyNameELEC_2020</ogc:PropertyName>
ogc:Literal)</ogc:Literal>
</ogc:Function>
</se:Label>

But the output of that is:
Property1(Property2)

Note the lack of space character before the “(”. I tried using " ", but that resulted in an exception.

After more testing, I ended up at the extreme end:

se:Label
<ogc:Function name=“Concatenate”>
ogc:PropertyNameNAME</ogc:PropertyName>
ogc:Literal - - - - - (</ogc:Literal>
ogc:PropertyNameELEC_2020</ogc:PropertyName>
ogc:Literal)</ogc:Literal>
</ogc:Function>
</se:Label>

The output of which is:
Property1- - - - - (Property2)
Again, note the lack of space between Property1 and the first non-space character.

Is this meant to happen, am I doing something wrong, or is it a bug? I know in HTML it will only ever show a single space character unless they’re declared explicitly with " " irrespective of how many are in the code, but this seems to be left-trimming only.

Cheers,
Jonathan

This transmission is intended for the named addressee(s) only and may contain confidential, sensitive or personal information and should be handled accordingly. Unless you are the named addressee (or authorised to receive it for the addressee) you may not copy or use it, or disclose it to anyone else. If you have received this transmission in error please notify the sender immediately. All email traffic sent to or from us, including without limitation all GCSX traffic, may be subject to recording and/or monitoring in accordance with relevant legislation.

“Accelerate Dev Cycles with Automated Cross-Browser Testing - For FREE
Instantly run your Selenium tests across 300+ browser/OS combos. Get
unparalleled scalability from the best Selenium testing platform available.
Simple to use. Nothing to install. Get started now for free.”
http://p.sf.net/sfu/SauceLabs


Geoserver-users mailing list
Geoserver-users@anonymised.comsts.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-users