2011-08-01 2 views
0

(JavaScript로) 클라이언트 측에서 Wiktionary Wikitext을 구문 분석하려고합니다. Wiky.js을 찾았지만 {{}}, + 등의 마크 업과 관련된 문제가 있습니다. 저를 도울 수있는 JavaScript 라이브러리를 알고 있습니까? 나는 MediaWiki API 일 수 있고 translate wikitext을 HTML로 발견했다. 하지만 query action을 사용하여 API에서 데이터를 얻으므로 서버를 두 번 요청하는 것은 불가능합니다. 쿼리 액션을 사용하여 Wikitext 대신 HTML을 얻을 수있는 방법이 있습니까? 나는 또한 render action을 발견했다. 그러나 그것은 기사뿐만 아니라 전체 페이지를 보낸다.위키 텍트 (위키 백과 사전)를 클라이언트 측 HTML로 변환

// 편집

다음

샘플 Wikitext의 일부입니다

=====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

Wikitext이 매우 복잡 가장자리 케이스를 가지고, 당신은 기대할 수 없다 자바 스크립트 라이브러리를 사용하여 신뢰할 수있는 구문 분석을 수행 할 수 있습니다 (Wiky가 수행하는 것보다 훨씬 더 나은 작업을 수행 할 수 있어야합니다). 가장 좋은 방법은 action = render를 사용하고 응답에서 관련 부분을 제거하는 것입니다 (전체 페이지 대 기사의 의미가 확실하지 않습니다).

+0

가장 문제적인 것은 모든 미디어 위키 기반 사이트마다 다른 템플릿이라고 생각합니다. 렌더링은 전체 사이트, 메뉴, 검색 폼 등을 제공합니다. 저는 hikitext에서 HTML리스트로 일부 데이터를 추출해야하고 (이 순간에) 가장 쉬운 방법은 정규 표현식을 사용하는 것입니다. 그러나 어쨌든, 답장을 보내 주셔서 감사합니다. – ciembor

+1

@ciembor : 렌더링에는 기사의 콘텐츠, 검색 창이나 메뉴 만 포함해야합니다 (예 : [this] (http://en.wikipedia.org/w/index.php?title=Elephant&action=render) 참조). 어쩌면 당신은 잘못 입력 된 URL을 사용하고 있습니까? – Tgr