SoupProject::MiX

# MiX (Minimalists XML parser)

By Yotaro Kubo(webmaster@soup.jp)
http://sourceforge.jp/projects/mix/
Hosted By

> 1. MiXとは何か
> 2. 動作環境
> 3. メーリングリスト
> 4. ダウンロード
> 5. ドキュメント
> 6. 設計方針
> 7. 連絡先
> 8. バージョン履歴

## MiXとは何か？

MiXは小さくて柔軟性を持ち必要最小限の機能を備えたXMLパーサを目指すライブラリです。
SAX互換APIと、DOMサブセットAPIを持っています。

## 動作環境

MiXはプラットホーム依存のコードを含まないため、コンパイラがしっかりしてれば、 どんなOSでも動きます。

- g++ 3.2 on Redhat Linux 7.3

> 確実に動作します。開発環境です。

- g++ 2.9.x

> おそらく動作すると考えられますが、 ワイド文字列関係を使うには標準のlibstdc++ではダメです。
> STLPortを使いましょう。

- Microsoft Visual C++ 6/7

> おそらく動作します。

- Borland C++ Builder

> 動作しますように...

## Mailing List

MiXについてのメーリングリストは こちら (http://sourceforge.jp/projects/mix/lists/)
動作報告、質問、リクエスト、なんでもどうぞ。

## Download

ダウンロードは こちら(http://sourceforge.jp/projects/mix/files/)から

## Document

ドキュメントはこちら(HTML)

## 設計方針

- クライアントコードを美しく
- 簡単な処理は簡単なコードで
- 柔軟に
- 最小限

## 連絡先

久保陽太郎
mail: webmaster@soup.jp

## Version History

- 0.5.0

> 晴れて名前空間

- XML名前空間に対応
- 0.4.6で行われたテンプレートパラメータの改悪を元に戻す。
- NamedNodeFinderを変更(互換性キープなし)
- 細かいバグフィックス

- 0.4.6

> 「IPA未踏ソフトウェア開発事業」に'少し'関わることになりました

- clone追加
- NodeContainer::getElementsbyTagNameを追加(επιστημηさんthx)
- 大幅リファクタリング(traitsを利用してた人は注意)
- テスト刷新(with 子河童)
- GCC-3.1に対応
- ストリームからの直接Parseに対応(Kent.Nさんthx)

- Ver0.4.5

> SourceForgeJPに移転

- 細やかなBugFiX(森野さんthx)
- ディレクトリ構成変更(src/ -> src/MiX/)
- Nodeに関するtypedefを作成(επιστημηさんthx)
- DomHoge->DOM_Hoge,SaxHoge->SAX_Hogeに名前変更
- XMLCharTratits->DefaultXMLTraitsに名前変更
- AttrMapを順序つきに
- 例外クラスのバグを取る(あひるさんthx)
メソッドの一部をインライン化

- Ver0.4.4

> Ver0.5.0前の一休み

- コピーコンストラクタを隠蔽
  (ドキュメントじゃコピーすんなって言っといて、 コピーコンストラクタを隠してなかったので、修正)
- const Char*で受け取ってたパラメータをXMLString<...>で 受け取るように統一した(まだ未修正のとこもあるかも)
- hasAttributeの追加(επιστημηさん thx！)

> [[Ver0.4.4->Ver0.5.0]]
> - 名前空間のサポート
>   (やっとどーやって実装するかについての考えがまとまった)
> - 他の予定はないです。(ていうか↑が結構大物)

- Ver0.4.3

- いくつかのBugFiX
- '_MSC_VER'に対応
- テスト強化
- サンプル強化
- マルチバイト文字列への対応を確認
- 存在しないTextをfindするとSegFaultするのはgccのバグ？ (とりあえずDomObjects.test.cppからCommentOutしといた)
- 馬鹿丸出しのミスを直す(thx to επιστημηさん)
  (痛い…こんな痛いミスは久しぶりかもしれない…)
- ElementにgetText/setTextを追加。
- MiX_BACKWARD_COMPATIBILITYマクロで後方互換を実現

> [[Ver0.4.3->Ver0.4.4の予定]]
> - もう少しBugFiX
> - 新規のバグが出なければVer0.4.4=Ver0.5.0です

- Ver0.4.2

> 自称STLフェチ

- リファクタリング
- NodeList操作に便利なプレディケータを追加
- Doxygen化(Doxygenってすごい！)
- Attributeのcreateの引数の順番が違うのを修正
- Valueのワイド文字に関するバグを修正

> [[Ver0.4.2->Ver0.4.3の予定]]
> - もっとBugFiX
> - サンプルが少し古くなってきたかも

- Ver0.4.1-1

> 虫の嵐

- ワイド文字列関係のバグ多数
  (ロクにワイド文字のチェックしてなかった…)
- XML名前空間を使った時のバグをFiX
  (<foo:bar>っていうタグがあった時エラー出してた。 今の挙動は、"foo:bar"というタグ名として認識される。)
  (本格的なXML名前空間をサポートする予定はありません)
- エラー処理まわりの改善
- 実体参照に関するバグ(というか機能不足)を解消
- DTD宣言。読み飛ばしてるつもりが、全然読み飛ばせてなかった。 (επιστημη氏の要望)
- C++ Builderで仮動作確認(thx to Gimite市川さん)
- (C++の)名前空間関係の修正(thx to Gimite市川さん)

> [[Ver0.4.1->Ver0.4.2の予定]]
> - さらなるBugFiX
> - ドキュメントのrefresh

- Ver0.4.1

> 大ボケなミスがあったのですぐ0.4.1-1変更

- Ver0.4.0

> 神聖な伽藍

- VC++用のプロジェクトファイルを作った (xmlpbはウチの環境じゃCompileできませんでした。)
- コードをシェイプアップした
- VC++対応
- シンプルに使うためのnamespaceを用意(MiX_UTF8,MiX_UTF16)
- メーリングリスト"CPPLL"で話題になったマクロ名に関する問題
- 星の数ほどあるバグの修正………(やばい)

> [[Ver0.4.0->Ver0.4.1の予定]]
> - ないです。やりたいことが吹き出してくるまで、報告されたバグ対処につとめます。

- Ver0.3.3

> ちょいFiX&マメRelease計画
> 今回のリリースはゴミです。Ver0.4.0準備号ってことで

- ドキュメントの細かいとこ
- スマートイテレータを標準イテレータに準拠
- Element[int]は廃止。よくない
- だいぶ落ち着いてきたのでそろそろ0.4.0化＆DLL化かも

> [[Ver0.3.3->Ver0.4.0の予定]]
> - DLL化に向けてpimplで囲む(最後の大仕事)
> - VC++のプロジェクトファイルを添付(bccは持ってないよ)
> - インタフェース凍結前の悪あがき

- Ver0.3.2

> テンプレート地獄…

- ドキュメントがやっと一段落ついた。
- 「例外投げない」はまだ少し厳しい…WinCE化はまだ無理っぽい
- 例外クラスを標準規格に準拠
  (自分の無知で、what()の宣言間違えてた…)
- DomExceptionのエラーメッセージが詳細に
- 試しにElement[int]でTextにアクセスできるようにしてみた

> [[Ver0.3.2->Ver0.3.3の予定]]
> - そろそろインタフェースのフリーズ
>   (ちょこちょこ変えてすんません)
>   (完全にフリーズしたらVer0.4.0へ)
> - ErrorTypeの見直し
> - 前回からの課題、ElementからComment,Textにアクセスするには？を解決したい

- Ver0.3.1

> 日刊リリースを目標に(暇なうちに何度もリリースしよう)

- すぐに例外を投げずにonExceptionハンドラで検証
- XMLStringをちょっと改善
- NodeListのCoolなイテレータを実装(要メンバテンプレート)
- 例外やメンバテンプレートがサポートされてなくても大丈夫に
- リファレンスを少しづつ書きはじめた。

> [[Ver0.3.1->Ver0.3.2の予定]]
> - リファレンス充実
> - バグ潰し＆リファクタリング
> - Elementから子Textに簡単にアクセスできる方法を作る
> - もっとCoolなインタフェースはないか…模索中

- Ver0.3.0

> コードの変更はあまりない。

- もう少し必要になるまでAutoconfは待つ。(Pythonでconfigureを書こう！計画かも)
- Sample二本追加(だいたいこんなもんでOKだと思う)
- Document充実計画
- toStringで美文書(インデント対応)
- DomParserにsetIgnoreSpace追加(忘れてた…)

> [[Ver0.3.0->Ver0.3.1予定]]
> - SaxParserにエラーレベルを与えて、レベルに応じてチェックの厳しさを変える。
> - リファレンスをぼちぼち書きはじめる。

- Ver0.2.0

> サンプルと、ドキュメントを整備

- xml2htmlという簡単なサンプルを用意
- ドキュメントもちょっとずつ整備
- Design消しちゃった…(最近はdiaより紙デザインだし)
- Makefileのfix (いい加減autoconf使わなくては…)

> [[Ver0.2.0->Ver0.2.1予定]]
> - DOMのサンプルを作る。
> - autoconf/automake
> - バグFiX
> - NodeList&AttrMap&XMLString改善