The <license> field in package.xml is used by both rosdoc2 and rosindex to display license information on documentation pages. I tried to understand what they actually use by examining the code. Caveat: did not actually test.
rosindex takes the text from the first of possibly multiple license tags, and displays that string as the “License” in the package summary: license = REXML::XPath.first(manifest_doc, "/package/license/text()").to_s
rosdoc2 uses catkin_package, which will concatenate strings for possibly multiple tags. rosdoc2 will include the text of a file found in the root directory with the name license.* (ignoring case). I could not find any use of the optional ‘file’ attribute of the license tag.
So “best practice” from the perspective of current implementations of these documentation generators would be to include the string that you actually want displayed as the license summary. Plenty of packages use “Apache License 2.0” as that string for example instead of “Apache-2.0” as recommended by REP 149
I’m not saying any of this is correct or official “best practice”, only what is actually implemented.