With parameters taken from shell variables:
unit=photoncannon
name=cooldown
xmlstrlet sel -t \
--var unit="'$unit'" \
--var name="'$name'" \
-v '//entry[@unit=$unit and name=$name]/value' -nl file
(Note the specific quoting used; the internal variables $unit and $name must contain XML-encoded strings, which means they need to have explicit quotes added.)
You could obviously use any other XML parser to do the same thing. The following uses xq (from here), which is an XML parser sitting on top of jq, the JSON parser, which means it first translates your XML document into JSON, and then calls jq to parse the resulting data:
unit=photoncannon
name=cooldown
xq -r \
--arg unit "$unit" \
--arg name "$name" \
'.record.entry[] | select(."@unit" == "photoncannon"$unit and .name == "cooldown"$name).value' file