目录

命名空间

命名空间(Namespace)的概念,你可以简单理解它就是一个“文件夹”。
在dokuwiki中,命名空间依靠 : 来分隔,不过你偶尔也可以使用 / 来代替冒号。

如果你有几个相同名称的页面(文件),它们都叫“start”,那么你可以通过不同的命名空间(文件夹)来存放和找到它们。

[[start|同级空间上的start]]
[[:start|主页上的start]]
[[:template:start|模板空间上的start]]

那么我们该如何确定它们的位置呢?
有下面的几种方法——

如果目标页面与当前页面处于同级空间(同文件夹),那么可以直接使用目标的名称来调用:
[[start|同级空间的start]]
同级空间的start

如果目标页面在根命名空间中,则必须使用定位符号来定位:
[[:start|主页上的start]]
主页上的start

如果目标页面在其他的命名空间(其他文件夹)中,那么就必须指定目标的空间及名称:
[[:template:start|模板页面中的start]]
模板页面中的start
[[/template/start|使用斜杠也可以解析]]
使用斜杠也可以解析

相对位置概念

其实上面的代码 [[:template:start]]
你使用 [[template:start]] 时会发现一样有效,
这其中就涉及了相对路径的概念。

就如同文件夹一样,如果你未定义一个准确的路径,那么wiki脚本会在相对应的位置来搜寻目标页面。
首先它会搜索当前命名空间下是否有指定的命名空间或者页面,然后是同级的命名空间,最后是根命名空间。
所以,如果当前的命名空间下也有着一个名叫 template: 的命名空间的话,那么省略 :template: 就会造成定位错误。
请一定要小心这种错误的发生,尽量使用完整的定位符来指向命名空间及页面!

另外,你也可以使用如 ..: 来指向当前命名空间的父空间,不过除非必要,请尽量少用这种格式!

多级命名空间

每个命名空间下还可以生成更多的命名空间,
比如我想在 playground 命名空间再创建一个 test 空间,并建立一个 temptest 页面,
就可以先创建:[[:playground:test:temptest]] 这个链接,点击后就可以创建文件了,
或者在浏览器中直接访问 /playground/test/temptest 这个地址。

效果:zuiyou: temptest