I found the answer. @maze had a similar problem with the HTTP Binding and @steve1 explained the % had to be escaped. Otherwise, the binding interpreted it as the beginning of a Java format specification.
I replaced all “%” with “%%” and the HTTP binding processed it correctly. However the resulting URL became less legible:
Number Weather_Temperature "Outside Temperature [%.1f °C]" <temperature> (Weather_Chart) { http="<[https://query.yahooapis.com/v1/public/yql?q=select%%20*%%20from%%20weather.forecast%%20where%%20woeid%%3D3534%%20and%%20u%%3D%%27C%%27:60000:XSLT(yahoo_weather_temperature.xsl)]" }
To improve readability, I replaced all spaces “%%20” with the equally valid “+” and the resulting URL also worked correctly with the HTTP Binding.
Number Weather_Temperature "Outside Temperature [%.1f °C]" <temperature> (Weather_Chart) { http="<[https://query.yahooapis.com/v1/public/yql?q=select+*+from+weather.forecast+where+woeid%%3D3534+and+u%%3D%%27C%%27:60000:XSLT(yahoo_weather_temperature.xsl)]" }