> Is it valid xml to have an attribute with an empty string as a value ?
AttValue is defined as
AttValue ::= '"' ([^<&"] | Reference)* '"'
| "'" ([^<&'] | Reference)* "'"
and there is no constraint on it, so yes, that is allowed.
Regards,
Martin