Javadoc
Here is the grammar to parse :
simple ::= '=' assertionValue
present ::= '=' '*'
substring ::= '=' [initial] any [final]
initial ::= assertionValue
any ::= '*' ( assertionValue '*')
As we can see, there is an ambiguity in the grammar : attr=* can be
seen as a present or as a substring. As stated in the RFC :
"Note that although both the and productions in"
"the grammar above can produce the "attr=*" construct, this construct"
"is used only to denote a presence filter." (RFC 4515, 3)
We have also to consider the difference between a substring and the
equality node : this last node does not contain a '*'