HTML
LDAP エントリを格納する際、階層の表現方法として Flat 型と Hierarchical 型が存在します。Flat 型の場合は、全てのエレメントやテキストのエントリはそれぞれ一つの階層にまとまっていて、親エレメントに所属する子エレメント・テキストの dn を親エレメントの属性として記述することになります。参考リンク: Appendix A: LDAP - Some Notes on Structuring Directories
Flat 型では、人員再配置などグループの移動がしやすいというメリットがあります。しかし、今回は以下の理由により Flat 型の採用は見合わせました。
エレメントのエントリ内で別のエレメントのエントリを参照することになり、自己ループに陥る可能性がある
一般的には、親エントリが同じ種類の子エントリを持つことはない(人↔部署など)なので問題になりません。
LDIF を見たときに HTML の構造が分かりづらい
Hierarchical 型の場合、 dn を見たら全てが分かります。
また、dn の特性を活かして各エレメントの id
には dn を設定するようにしました。
Schema の設計が終わると後は Schema を定義し、実装するだけです。ldap2html は Python3 で実装しました。
しんどいです!LDIF って HTML 書くのに向いてなさそう!この記事を手で書くには大変すぎるのである方法を使っています(近日公開)。
例えばエレメントを一番上に挿入したいときには既存の htmlNthChild
が大変なことになります。そんな欠点はあるものの、LDIF 大好きなので最高です!
追伸: ku-ldif.github.io は 「DON'T MODIFY LDIF, DO ADD NEW LDIF.」を掲げておりますが、今回は諸事情により force-push を繰り返してしまいました。同好会の皆様には大変失礼致しました。
京大マイコンクラブ Advent Calendar 2019 の明日の担当は opesan で、「聖地巡礼記2019」とのことです!自分も聖蹟桜ヶ丘に聖地巡礼したい。