【问题标题】:Collision between Semantic MediaWiki and C++ namespace syntaxSemantic MediaWiki 和 C++ 命名空间语法之间的冲突
【发布时间】:2014-10-29 12:03:21
【问题描述】:

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

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

今天,我开始浏览 wiki 统计数据,发现一些可疑属性“已使用但未定义”。正如我发现的那样,这些是由应用于 C++ 命名空间 分隔符 :: 的特殊含义的 SMW 属性语法 的冲突引起的,这会导致带有指向由完全限定的类命名的页面。 SMW 总是将名称缩短为类名。[1]

如果我在维基文本中写作,

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

...将显示呈现的 wiki 页面,

我的班级 我的班级 我的班级

...在任何情况下,链接到的页面都是 MyClass

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

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


  • [1]补充:版本信息:MediaWiki 1.23.4 和 Semantik MediaWiki 2.0
  • [2]补充:我通过尝试发现,为此目的构建 MediaWiki 模板很困难,如果不是不可能的话......

【问题讨论】:

  • 这个问题似乎是题外话,因为属于webmasters.stackexchange.com
  • @CaptainObvlious 如果不是 wiki 问题,你是对的。 Wiki,尤其是基于 MediaWiki 的 Wiki,尽可能对所有人开放。 (例如,我不是网站管理员)
  • 不可以使用<nowiki>标签吗?
  • @leo 好主意,但不适用于 MW 1.23.4 + SMW 2.0,谢谢
  • @leo ...<nowiki> 既不能内联也不能通过模板工作 :-( 它在两种情况下都显示[[whole::wiki]] 链接标记(不创建超链接)。

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


【解决方案1】:

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

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

【讨论】:

猜你喜欢
  • 2013-12-11
  • 1970-01-01
  • 2012-12-18
  • 1970-01-01
  • 2013-04-12
  • 1970-01-01
  • 1970-01-01
  • 2021-11-22
  • 1970-01-01
相关资源
最近更新 更多