SDL: The Simple Document Language

ページ情報
制作日
2004-04-12
最終更新日
2004-04-12
参照用URI
http://www.arielworks.net/articles/2004/0412a
分野

XMLで文章を基本としたデータを記述する場合、XHTMLの語彙は非常に強力である。また、ウェブで公開する場合、つまり最終出力がXHTMLの場合はXSLTでそのままコピーするだけなのでかなり手間が省ける。

しかし、データ全体としてみた場合XHTMLはメタデータの記述に関して未整理な部分が多い。XHTMLの語彙であるmeta要素だけでは(方法は提示されてはいるが)汎用性の高いデータの記述が難しいため、できる限り既存の語彙(Dublin Coreなど)を取り込み、文章全体の骨格を定義した言語を新たに自分で作ると便利である。題して「Simple Document Language」だ。

以下にサンプルを挙げる

<?xml version="1.0" encoding="UTF-8"?>

<sdl:document xml:lang="ja" xmlns="http://www.w3.org/1999/xhtml"
                            xmlns:sdl="http://www.arielworks.net/works/sdl/0.3"
                            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                            xmlns:dc="http://purl.org/dc/elements/1.1/"
                            xmlns:dcterms="http://purl.org/dc/terms/">

<sdl:meta>
    <dc:title>文章全体のタイトル</dc:title>
    <dc:creator>制作者</dc:creator>
    <dc:publisher>発行者</dc:publisher>
    <dcterms:created xsi:type="dcterms:W3CDTF">制作日時</dcterms:created>
    <dcterms:modified xsi:type="dcterms:W3CDTF">最終更新日時</dcterms:modified>
    <sdl:category><sdl:item>属するカテゴリー</sdl:item></sdl:category>
</sdl:meta>

<sdl:body>

<p>文章など</p>


    <sdl:section><sdl:meta>
        <dc:title>セクション1のタイトル</dc:title>
    </sdl:meta><sdl:body>

    <p>本文</p>

    </sdl:body></sdl:section>


    <sdl:section><sdl:meta>
        <dc:title>セクション2のタイトル</dc:title>
    </sdl:meta><sdl:body>

    <p>本文</p>


        <sdl:section><sdl:meta>
            <dc:title>セクション2.1のタイトル</dc:title>
        </sdl:meta><sdl:body>

        <p>本文</p>

        </sdl:body></sdl:section>


    </sdl:body></sdl:section>


</sdl:body>

</sdl:document>

見ればわかる通り、SDL自体は各セクションのメタデータと文章本文の分離にしか使われていない。後は他の語彙に任せている。カテゴリーの分類がSDLによって行われているが、これも既存の語彙に適当なものが有ればそちらに任せればいいと思う。

XHTML2.0ではsection要素によりセクションの分割が明示的にマークアップできるようになったが、各セクションごとにメタデータを持つことができない。そのため今回はSDLでセクションの分割をすることにした。セクションがメタデータを持てるようすることで、文章全体および各セクションが完全に入れ子になる。これにより例えば複数のファイルを一つにつなげるだけで新しい大きな文章として扱うことができる。

今後RDFによる記述についても考えていく予定だ。

連絡先、リンク、転載や複製などについては「サイト案内」をご覧ください。Powered by HIMMEL