xsl-list
[Top] [All Lists]

[xsl] well, well... microsoft xsl

2016-08-31 16:08:42
Maybe of interest to some of you 

I learned today that: 

- msxml has a maximum string-length for the concat of @select in a for-each and 
the @select of all the xsl:sort inside that for-each 

- that maximum string length is surprisingly small 
- that maximum string length differs with different versions of the dll or 
other mysterious environment settings not documented to my knowledge ... (and 
the number seems to become smaller with later dlls) 

- spaces (technically irrelevant to the XPath expressions in the @select, but 
used for pretty printing the complex expressions for readability) are added to 
that maximum count 

- msxml rejects stylesheets for this reason on static analysis, environment 
dependent, with no useful message other than " Object reference not set to an 
instance of an object." 

- it is a real fun if you hit that boundary and you are unaware of this mess 

If members of this list have come to similar conclusions, have been facing 
similar issues or did find references to documentation about this, 
I would welcome that very much 

(at least I managed to get my customer started on evaluating other 
transformers) 

Best regards 

Geert 

----- 

Here is by the way a short story on how I came to those conclusions 

For one of my customers I have an XSLT 1.0 that is driven from a C# service 
they do on the .net framework 

Nothing really fancy, couple of thousand lines, some javascript extension 
functions for dates and strings and some use of the node-set extension, 
we are doing FO for PDF but that is irrelevant to the story 

The source XML has some complexity, long part lists with up to 20 maybe 25 
language variant descriptions and the requirement to have an index 
with fall back languages (eg. if the Brazilian description is not available, 
use the Portuguese or... eventually use the English term if all others are 
missing) 
One of the potential languages is Simplified Chinese, so I also need some 
dynamic control over the @lang in the sorts 
No rocket science, but it leads to a somewhat longer @select in a for-each and 
maybe 10 xsl:sort inside that for-each 
Just explaining that for it is relevant to the story 

The following has been biting me for months (on and off) since I could not 
reproduce the problem 
The C# refused to load the XSLT on an occasional machine, with this message " 
Object reference not set to an instance of an object." 
No way for me to reproduce (except in Stylus Studio using the compiled .net 
transform, but that does not give extra information) 
No C# instantiation issues on any of my machines, no issues running from the 
different microsoft options in Oxygen... 
All production servers of the customers customer... no issues 
some development machines at the customer... same error, others, no issue 
weird, apparently no relation to the dll version 

A recent Visual Studio on a "faulty machine" managed to give the same error 
message on a static evaluation of the stylesheet, top level, 
no indication of the line number of the error, but at least we knew the error 
was "visible" to microsoft on static evaluation of the stylesheet 
My customer decided to cut lines from the stylesheet until the error 
disappeared and this way we have come to the above conclusion, 
it took them ages, but once we knew where to look, we made so many tests that 
we are pretty sure these conclusions hold 


--~----------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
EasyUnsubscribe: http://lists.mulberrytech.com/unsub/xsl-list/1167547
or by email: xsl-list-unsub(_at_)lists(_dot_)mulberrytech(_dot_)com
--~--
<Prev in Thread] Current Thread [Next in Thread>
  • [xsl] well, well... microsoft xsl, Geert Bormans geert(_at_)gbormans(_dot_)telenet(_dot_)be <=