XML 元素属性中的双哈希“##”是什么意思?

What does the double hash `##` in an XML element attribute mean?

我正在阅读 BPMN 2.0 (http://www.omg.org/spec/BPMN/2.0/) 的规范,发现使用双散列标记 ## 作为 XML 元素值的第一个字符属性。例如:

<semantic:userTask implementation="##unspecified" completionQuantity="1" isForCompensation="false" startQuantity="1" name="edit 1st level ticket" id="_6-145">

或者查看规范 pdf 文件 table 10.9 和 table 10.45 作为示例。此 pdf 包含更多使用此语法的地方。

当我想知道这是什么意思时,我开始搜索。我看到它用在 XML 架构 any 元素 (https://www.w3schools.com/xml/el_any.asp),名称空间属性中,它的值似乎总是以 ##.

开头

在 BPMN 中,似乎当他们(规范的作者)希望用户指定她希望使用什么技术作为实现时使用它。默认是 Web 服务,但他们试图将其留给用户。用户可以使用 ##Unspecified##WebService,或者提供一些 URI。

我找不到任何关于 XML 中的双哈希以及为什么以这种方式使用它的信息。

这里为什么用##?这是什么意思?起源是什么?它叫什么?

编辑。我接受了 Michael Kays 的回答,但我仍然很想知道是否有人知道这是否在某处正式指定。

没有什么特别的意思。在 XML 中使用像“##other”这样的模式标记,因为它们不是有效的 URI(有效的 URI 不能包含“##”),因此不会被误认为是命名空间。也许 BMPN 出于同样的原因使用这个约定,或者它有自己的原因。无论哪种方式,它在 XML 级别都没有任何意义,它是您特定词汇表中使用的约定,他们很可能选择它只是因为它比“**”或“$$”更突出.