This inspection checks for any implicit conversions between the predefined XPath-types STRING, NUMBER, BOOLEAN and NODESET. While this is usually not a problem as the conversions are well-defined by the standard, this inspection can help to write XSLT scripts that are more expressive about types and can even help to avoid subtle bugs:
<xsl:if test="foo" />
is not the same as <xsl:if test="string(foo)" />
The first test checks whether the element "foo" exists (count(foo) > 0)
, the latter one however is only
true if the element actually contains any text (string-length(foo) > 0
). The plugin will then offer to
make the type-conversion more explicit.
There are several options to adjust the inspection to personal preferences by offering the possibility to
individually enable it for implicit conversions between certain types.
The plugin can also be told to always flag explicit conversions that do not result in the actually expected type, such
as <xsl:if test="number(foo)" />
and provides a special option to ignore the conversion from NODESET
to BOOLEAN by using the string()
function as a shortcut for writing string-length() > 0
.