I am reading the spec for BPMN 2.0 (http://www.omg.org/spec/BPMN/2.0/) and came across the usage of a double hash mark ##
as the first characters of the value of an XML element attribute. For example:
<semantic:userTask implementation="##unspecified" completionQuantity="1" isForCompensation="false" startQuantity="1" name="edit 1st level ticket" id="_6-145">
Or look at the spec pdf file table 10.9 and table 10.45 for an example. This pdf contains many more places where this syntax is used.
As I was wondering what this means, I started searching. I see it used in XML schema any
element (https://www.w3schools.com/xml/el_any.asp), namespace attribute, for which the value always seems to start with ##
.
In BPMN, it seems that it is used when they (the writers of the spec) want the user to specify what technology she wishes to use as implementation. The default would be a web service, but they try to leave that up to the user. The user may use ##Unspecified
, or ##WebService
, or provide some URI instead.
I can't find anything about the double hash in XML and why it is used in this way.
Why is ##
used here? What does it mean? What is the origin? What is it called?
Edit. I accepted Michael Kays answer, but I would still be interested to hear if anyone knows if this is specified oficially somewhere.
It doesn't mean anything in particular. In XML Schema tokens like "##other" are used because they are not valid URIs (a valid URI cannot contain "##") and therefore cannot be mistaken for a namespace. Perhaps BMPN is using this convention for the same reason, or perhaps it has its own reasons. Either way, it doesn't mean anything at the XML level, it's a convention used in your particular vocabulary, and they might well have chosen it simply because it stands out better than "**" or "$$".