1. XMLの全体像
2. Item.Detail要素1
3. Item.Detail要素2(本記事)
4. Item.Detail要素3
5. Lang要素とxml:lang属性
6. その他の副作用
7. 組成性状
…以降未定
前回は文章を構成する最小単位であるItem.Detail要素について触れました。
今回はそれらを包括するリスト要素について見ていきましょう。
3種類のリスト要素
List要素はItem要素を複数まとめてリスト化するためのものです。添付文書XMLでは3種のリスト要素が用意されており、順序番号や記号等の有無により使い分けます。
- OrderedList(順序付リスト)
- UnorderedList(順序なしリスト)
- SimpleList(単純リスト)
OrderedList要素はHTMLタグのOL要素、UnorderedList要素はHTMLタグのULリストの様な使い方をします。1つずつ具体的な使用方法を見ていきましょう。
OrderedList(順序付リスト)
まずはOrderedListについてです。このリストは各項目に順序番号を追加したい場合に使用します。
今回も下記の禁忌の項目を例にSGMLとの違いを確認します。
SGMLの場合
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<contraindications> <variablelabel onswitch="on">禁忌</variablelabel> <serialno onoff="on">1</serialno> <item>見出し1</item> <detail>いろはにほへと ちりぬるを</detail> <serialno onoff="on">2</serialno> <item>見出し2</item> <detail>わかよたれそ つねならむ</detail> <serialno onoff="off">3</serialno> <low1subitem> <serialno onoff="on">1</serialno> <detail>うゐのおくやま けふこえて</detail> <serialno onoff="on">2</serialno> <detail>あさきゆめみし ゑひもせすん</detail> </low1subitem> </contraindications> |
SGMLでは順序番号を付ける場合、上記の様にserialnoという要素に番号を直接記述していました。
また、レベルを下げて順序番号を付ける場合、下位レベルの内容をlow1subitemで囲み、その内部でserialno要素で番号を記述していました(9~14行目)。さらにレベルを下げる場合low2subitem~low6subitemという要素を用いて表現する必要がありました。
XMLの場合
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
<ContraIndications xml:lang="ja"> <OrderedList> <Item> <Header> <Lang xml:lang="ja">見出し1</Lang> </Header> <Detail> <Lang xml:lang="ja">いろはにほへと ちりぬるを</Lang> </Detail> </Item> <Item> <Header> <Lang xml:lang="ja">見出し2</Lang> </Header> <Detail> <Lang xml:lang="ja">わかよたれそ つねならむ</Lang> </Detail> <OrderedList> <Item> <Detail> <Lang xml:lang="ja">うゐのおくやま けふこえて</Lang> </Detail> </Item> <Item> <Detail> <Lang xml:lang="ja">あさきゆめみし ゑひもせすん</Lang> </Detail> </Item> </OrderedList> </Item> </OrderedList> </ContraIndications> |
XMLの場合、順序番号を記述する必要はありません。順序番号を付けたいItem要素をOrderedList要素で囲むことで、上から順に番号が付きます。これによりserialno要素はXMLでは不要になりました。
また、レベルを下げる場合はOrderedList要素内でさらにOrderedList要素を用いる事で記述します(18~29行目)。その為low1subitem~low6subitem要素は不要になりました。
順序番号はHeader要素がある場合はHeader要素に、ない場合はDetail要素に付きます。
numberContinued属性
OrderedList要素には他のリスト要素には無いnumberContinued属性という属性があります。これは2つのOrderedList要素で順序番号を繋げる時に使用する属性です。他のリスト要素と合わせて記述する為少し複雑になるので、次回詳しく見ていきたいと思います。
UnorderedList(順序なしリスト)
UnorderedListも使用方法は同様です。Item要素を囲んで使用します。番号が付かないかわりに「●」等の記号が付きます。
下記の様な文章を表現するために用います。
SGMLの場合
1 2 3 4 5 6 7 8 |
<serialno onoff="off">1</serialno> <detail>●いろはにほへと ちりぬるを</detail> <serialno onoff="off">2</serialno> <detail>●わかよたれそ つねならむ</detail> <serialno onoff="off">3</serialno> <detail>●うゐのおくやま けふこえて</detail> <serialno onoff="off">4</serialno> <detail>●あさきゆめみし ゑひもせすん</detail> |
順序番号を記述するserialnoには数字以外を入れられないので、●から始まるリストを表現するために、detail要素内に直接●を記述せざるを得ません。もはやserialno要素は不要ですが必須要素なので、表示しない場合にもonoff属性をoffにして記述が必要です。
XMLの場合
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
<UnorderedList> <Item> <Detail> <Lang xml:lang="ja">いろはにほへと ちりぬるを</Lang> </Detail> </Item> <Item> <Detail> <Lang xml:lang="ja">わかよたれそ つねならむ</Lang> </Detail> </Item> <Item> <Detail> <Lang xml:lang="ja">うゐのおくやま けふこえて</Lang> </Detail> </Item> <Item> <Detail> <Lang xml:lang="ja">あさきゆめみし ゑひもせすん</Lang> </Detail> </Item> </UnorderedList> |
UnorderedListで囲む事で各Item要素の文頭に記号が付加されるので、文章内に記号を記述する必要はありません。OrderedList要素と同様に、もしItem要素内にHeader要素があれば、記号はHeader要素に付加されます。
SimpleList(単純リスト)
下記の様な、順序番号も記号も付加しない場合、SimpleList要素を用います。
SGMLの場合
1 2 3 4 5 6 7 8 9 10 11 12 |
<serialno onoff="off">1</serialno> <item>見出し1</item> <detail>いろはにほへと ちりぬるを</detail> <serialno onoff="on">2</serialno> <item>見出し2</item> <detail>わかよたれそ つねならむ</detail> <serialno onoff="off">3</serialno> <item>見出し3</item> <detail>うゐのおくやま けふこえて</detail> <serialno onoff="off">4</serialno> <item>見出し4</item> <detail>あさきゆめみし ゑひもせすん</detail> |
serialno要素、item要素、detail要素を繰り返しで表現します。上記にも示した通りserialno要素は省略不可なので、表示上何も無くてもitem要素とdetail要素の直前に必要です。
XMLの場合
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
<SimpleList> <Item> <Header>見出し1</Header> <Detail> <Lang xml:lang="ja">いろはにほへと ちりぬるを</Lang> </Detail> </Item> <Item> <Header>見出し2</Header> <Detail> <Lang xml:lang="ja">わかよたれそ つねならむ</Lang> </Detail> </Item> <Item> <Header>見出し3</Header> <Detail> <Lang xml:lang="ja">うゐのおくやま けふこえて</Lang> </Detail> </Item> <Item> <Header>見出し4</Header> <Detail> <Lang xml:lang="ja">あさきゆめみし ゑひもせすん</Lang> </Detail> </Item> </SimpleList> |
Item要素をSimpleListで囲む事で、数字も記号もつかない文章を表現出来ます。SGMLと比べて、不要な要素を記述する必要もなくItem単位で綺麗に構造化されているのがわかります。
まとめ
各項目に順序番号や記号を付与する場合は、リスト要素を用います。
数字を付与する場合はOrderedList要素、記号を付与する場合はUnorderedList要素、項目に何も付与しない場合はSimpleList要素を用います。
SGMLではなかったリスト要素の概念を用いることで、serialno要素やlow1subitem~low6subitem要素は不要になりました。
次回は、OrderedList要素のnumberContinued属性について解説します。