Oddly enough just about every language you can imagine has some measure of a statement. Even English. Some statements may be simpler than others, but the number of statements is still a better estimate of complexity than the number of lines or bytes.
For XML, I would count each (nonwhitespace) node that would be generated in a dom.
This means that <foo></foo> and <foo/> would both have value "1", and
<foo>bar</foo> and <foo/><py q="q" r="r" s="s" t="t"/> would both have
value "2".
For JavaScript and Perl a statement is generally delimited by a newline or a semicolon.
For C/C++, statements are generally delimited by semicolons or parentheses.
x=x+1;++y;r*=5+3/p; /*3 statements*/for (a=0;b<4;c++) b+=c; /*5 statements*/while ( 0 ) { } /*1 statement */
An icon containing 4 images would be assigned a value "4". And an xbm containing 1 images would be assigned a value "1". This means your average xbm loses value (sorry).