Semantic MediaWiki和C ++命名空间语法之间的冲突

时间:2014-10-29 12:03:21

标签: c++ mediawiki mediawiki-templates semantic-mediawiki

为了描述一些C ++类并提供方法,我们成功使用基于MediaWiki的wiki多年。记录的类通常在C ++命名空间中定义,因此我们使用以cppnamespace::classname约定命名的Wiki页面。

一年前,为wiki启用了Semantic MediaWiki(SMW)扩展。

今天,我开始浏览维基统计数据,我发现了一些可疑的属性"已使用但未定义"。正如我发现的那样,这些是由于应用于 C ++命名空间分隔符:: SMW属性语法的特殊含义的碰撞造成的,这会导致wiki页面出现问题链接到完全限定类命名的页面。 SMW总是将名称缩短为类名。 [1]

如果我用维基文写作,

 [[MyNamespace::MyClass]]
 [[MyNamespace::MyClass|MyNamespace::MyClass]]
 [[MyClass|MyNamespace::MyClass]]

...将显示呈现的维基页面,

  

MyClass MyClass MyClass

...并且在每种情况下链接到的页面都是 MyClass

我通常会通过引入新的MediaWiki模板 [2] 来处理此类问题。但我不确定这种特殊情况下的最佳解决方案,因为有许多页面会受到影响。因此,我对之前的体验感兴趣。 (到目前为止Google和SO都没有提供帮助)

如果您遇到同样的问题,您找到了什么解决方案?


  • [1] 添加:版本信息:MediaWiki 1.23.4 with Semantik MediaWiki 2.0
  • [2] 添加:我通过尝试发现,为此目的构建MediaWiki模板很困难,即使不是不可能......

1 个答案:

答案 0 :(得分:2)

根据http://semantic-mediawiki.org/wiki/Help:Properties_and_types

  

要使用::创建普通链接而不创建属性,请使用前面的冒号转义标记,   例如[[:C ++ :: operator]]。