2011-08-01 3 views
0

クライアントサイドで(JavaScriptを使用して)Wiktionary Wikitextを解析しようとしています。私はWiky.jsを見つけましたが、{{}}のようなマークアップに問題があります。+など私に役立つJavaScriptライブラリを知っていますか?私は、MediaWiki APItranslate wikitextをHTMLに見つけたことがわかりました。私はquery actionを使ってAPIからデータを取得するので、サーバを2度要求するのはダミーです。クエリアクションを使ってWikitextの代わりにHTMLを取得する方法がありますか?私はまたrender actionを見つけましたが、記事全体だけでなく、ページ全体を送信します。クライアントサイドでwikitext(ウィクショナリースタイル)をHTMLに変換する

//編集

ここ

サンプルウィキテキストの一部です:

=====Translations===== {{trans-top|on fingers and toes}} * [[Afrikaans]]: [[nael]] * Albanian: [[thua]] {{f}} * Arabic: {{Arab|[[ظفر]]}} (ẓufr) * Armenian: {{t-|hy|եղունգ|tr=eġung}} *: Old Armenian: {{tø|xcl|եղունգն|tr=ełungn|sc=Armn|xs=Old Armenian}} * [[Azeri]]: {{t+|az|dırnaq|xs=Azeri}} * Bosnian: {{t-|bs|nokat|m}} * [[Breton]]: [[ivin]] {{m}}, ivinoù {{p}} * [[Campidanese Sardinian]]: [[unga]] {{f}} * [[Catalan]]: [[ungla]] {{f}} * Chinese: {{zh-zh-p|指甲|zhǐjia}} * Croatian: {{t+|hr|nokat|m|alt=nȍkat}} * Czech: {{t+|cs|nehet|m}} * Danish: {{t+|da|negl}} * Dutch: {{t+|nl|nagel|m}} * [[Erzya]]: [[кенже]] (kenzhe) * Esperanto: {{t-|eo|ungo|xs=Esperanto}} * Estonian: [[küüs]] * Finnish: {{t+|fi|kynsi}} * French: {{t+|fr|ongle|m}} * [[Galician]]: [[unlla]] {{f}}, [[uña]] {{f}} * Georgian: {{t-|ka|ფრჩხილი|tr=p'rč'xili|sc=Geor|xs=Georgian}} * German: {{t+|de|Nagel|m}} * Greek: *: Anciemt: {{tø|grc|ὄνυξ|m|tr=onyx|xs=Ancient Greek}} *: Modern: {{t+|el|νύχι|n|tr=nýchi}} * [[Gujarati]]: [[નખ]] (nakh) {{m}} * Hindi: {{t-|hi|नाख़ुन|m|tr=nāḵẖun|xs=Hindi}} 

とWiky.toHtml()出力:

<h4>Translations</h4> 
<p u"="" style="{trans-top</p></td>?(c_u) <li class=">Arabic: {{t-</p> 
</li> 
arصرعm?(c_u) 
<li class="u">Bengali;"&gt;}, {{t-bspadavica?(c_u) </li> 
<li class="u">Chinese: *: Mandarin: {{t</li> 
cmn癲癇sc=Hani}}, {{tcmn癫痫tr=diānxiánsc=Hani}}, {{tcmn癲癇癥sc=Hani}}, {{tcmn癫痫症tr=diānxiánzhèng?(c_u) 
<li class="u">Croatian: {{t-</li> 
hrepilepsijafalt=epilèpsija}}, {{t-hrpadavicaf?(c_u) 
<li class="u">Czech: {{t-</li> 
csepilepsie?(c_u) 
<li class="u">Estonian: {{t+</li> 
etepilepsia}}, {{t+et?(c_u) 
<li class="u">Finnish: {{t+</li> 
fi?(c_u) 
<li class="u">French: {{t+</li> 
frépilepsie?(c_u) 
<li class="u">German: {{t+</li> 
deEpilepsief}}, {{t-deFallsucht?(c_u) 
<li class="u">Greek: {{t+</li> 
elεπιληψία?(c_u) 
<li class="u">Hindi: {{t-</li> 
hiअपस्मारtr=apasmārxs=Hindi}}, {{thiमिर्गीtr=mirgī?(c_u) 

答えて

2

ウィキテキストは非常に複雑なエッジケースを持って、あなたが期待することはできません(Wikyよりはるかに優れた仕事をすることは可能ですが)信頼性の高い構文解析を行うためのjavascriptライブラリです。最も良いのは、action = renderを使い、レスポンスから関連する部分を取り除くことです(ページ全体と記事の意味が分かりません)。

+0

私は、最も問題のあることは、メディアウィキベースのサイトごとに異なるテンプレートだと思います。レンダリングは私にサイト全体、メニュー、検索フォームなどを提供します。私はwikitextからHTMLリストにいくつかのデータを抽出しなければなりません、そして、私は(この時点で)最も簡単な方法は正規表現を使うことです。しかし、とにかく、返信ありがとう。 – ciembor

+1

@ciembor:レンダリングには、記事の内容、検索バーやメニューのみを含める必要があります(例:[this](http://en.wikipedia.org/w/index.php?title=Elephant&action=render)を参照)。誤ったURLを使用している可能性がありますか? – Tgr