/
293.txt
140 lines (103 loc) · 4.5 KB
/
293.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
#?SuikaWiki/0.9
[1] [DFN[InterWiki]] は、 ([[URI]] よりも人間に優しい)
別の ([[wiki]] の外の) 文書群にリンクするための仕組みです。
[[SuikaWiki]] は、他の多くの wiki システムよりも柔軟に
InterWiki を扱うことができます。
* InterWiki を使ったリンクの作成
[2]
[[SuikaWiki/0.9]] 形式の文書では、次のように InterWiki
リンクを書くことができます。
[PRE[
'''<'''IW:[VAR["文書群名"]]:[VAR["文書名"]]'''>'''
]PRE]
例えば、[SAMP[どこかのwiki]] に属する [SAMP[InterWikiのテスト]]という文書にリンクしたい時には、
[PRE[
'''<'''IW:"どこかのwiki":"InterWikiのテスト"'''>'''
]PRE]
と書きます。
(引用符はなくても安全な時は省略できます。
安全でない時には警告が出ます。)
[[#comment]]
* InterWiki 文書群の定義
[3] >>2 で説明した[VAR[文書群名]]には、
[CODE(WikiPage)[[[Wiki//InterWikiName]]]]
という特別な頁で定義した文書群の名前を指定します。
たとえば、
[PRE[
Site:
@Name: RFC
@URIReference:
http://www.ietf.org/rfc/rfc%parameter;.txt
]PRE]
のような定義を [CODE(WikiPage)[Wiki//InterWikiName]]
に追加すると、
[PRE[
'''<'''IW:RFC:2822'''>'''
]PRE]
と書いて <http://www.ietf.org/rfc/rfc2822.txt> にリンクできます。
[4] [CODE[URIReference]] の欄は、
[CODE(perl)[[[Message::Util::Formatter]]]] 形式で解釈されます。
>>3 の例の [SAMP[%parameter;]] の部分のことを
[CODE(perl)[Message::Util::Formatter]]
では[Q[整形規則]]と呼んでいます。
整形規則は SuikaWiki の [[WikiPlugin]] を使って定義されています。
従って、 wiki の管理者は (多少の知識は必要ですが)
自由に整形規則を定義して、 InterWiki のリンク先 URI
を自在に生成することができます。
[5] SuikaWiki に標準で付属している整形規則を使って、
[[Google]] にリンクするための InterWiki の定義を行ってみましょう。
[PRE[
Site:
@Name: Google
@URIReference:
%uri-with-query (
base => {http://www.google.com/search},
query => {%query-parameter (
name => q,
value => {%parameter;}p,
charset => {iso-2022-jp},
);}p,
query => {ie=iso-2022-jp},
);
]PRE]
この定義を使うと、
[PRE[
'''<'''IW:Google:SuikaWiki'''>'''
]PRE]
は <http://www.google.com/search?q=SuikaWiki&ie=iso-2022-jp>
になります。
>>3 の例のように [SAMP[http://www.google.com/search?q=%parameter;]]
と定義しても良いように思えるかもしれません。
しかし、それでは、
[PRE[
'''<'''IW:Google:"すいかゐき"'''>'''
]PRE]
のように仮名や漢字を含んでいる場合や、 [SAMP[&]]
という記号を含んでいる場合には正しい URI が生成できません。
整形規則 [SAMP[uri-with-query]] や [SAMP[query-parameter]]
は、そのような問題を解決してくれます。
[6] このほかにも、 [SAMP[yukiwiki]] のように特定の相手先の URI
の生成を楽にするための整形規則も用意しています。
[[Wiki//InterWikiName]] には多くの例がありますから、
参考にしてください。
利用できる整形規則の一覧は、 [[Wiki//Plugin//Info]] にあります。
(InterWiki の定義以外の目的に使う整形規則も含まれます。)
整形規則が内部でどのような動作をしているのかは、
<IW:SuikaCVS:"suikawiki/script/lib/SuikaWiki/Plugin/">
や <IW:SuikaCVS:"suikawiki/script/misc/plugins/">
にある WikiPlugin のソースを見てもらえばわかります。
[[#comment]]
* まだ実装していない機能
[7] HTML 出力モードでは InterWiki のリンクは
[SAMP['''<'''Google:SuikaWiki'''>''']]
のようになりますが、より柔軟に、
[SAMP[Google 検索: 「SuikaWiki」]]
などとしたり、
[SAMP[''HTML 4 仕様書'' ''4.1 節'' (''和訳'')]]
のような感じで1つの InterWiki リンク指定から複数のリンク先を出力できるようにする予定です。
また、 InterWiki の方法を応用して、 wiki 内のリンクの方法をより柔軟にできないか模索中です。
[8]
Wiki//InterWikiName の編集を HTML form を使って簡単にできるようにすることも考えています。
([[名無しさん]] [WEAK[2004-06-03 07:23:33 +00:00]])
[[#comment]]
* メモ