医薬品チームブログ
新記載要領

添付文書用XML解析 3. Item.Detail要素2

投稿日:2024.10.15

更新日:2024.10.15


添付文書用XML解析 3

 

 

前回は文章を構成する最小単位であるItem.Detail要素について触れました。
今回はそれらを包括するリスト要素について見ていきましょう。

 

3種類のリスト要素

List要素はItem要素を複数まとめてリスト化するためのものです。
添付文書XMLでは3種のリスト要素が用意されており、順序番号や記号等の有無により使い分けます。

  • OrderedList(順序付リスト)
  • UnorderedList(順序なしリスト)
  • SimpleList(単純リスト)

 

OrderedList要素はHTMLタグのOL要素、UnorderedList要素はHTMLタグのULリストの様な使い方をします。

 

1つずつ具体的な使用方法を見ていきましょう。

OrderedList(順序付リスト)

まずはOrderedListについてです。
このリストは各項目に順序番号を追加したい場合に使用します。

 

今回も下記の禁忌の項目を例にSGMLとの違いを確認します。

 

 SGMLの場合 

<contraindications>
<variablelabel onswitch="on">禁忌</variablelabel>
<serialno onoff="off">1</serialno>
<low1subitem>
<serialno>1</serialno>
<item>見出し1</item>
<detail>いろはにほへと ちりぬるを</detail>
<serialno>2</serialno>
<item>見出し2</item>
<detail>かよたれそ つねならむ</detail>
<low2subitem>
<serialno><variablelabel>順序番号</variablelabel>1</serialno>
<detail><variablelabel>見出し2</variablelabel>うゐのおくやま けふこえて</detail>
<serialno><variablelabel>順序番号</variablelabel>2</serialno>
<detail><variablelabel>見出し2</variablelabel>あさきゆめみし ゑひもせすん</detail>
</low2subitem>
</low1subitem>
</contraindications>

 

SGMLでは順序番号を付ける場合、上記の様にserialnoという要素に番号を直接記述していました。

 

また、レベルを下げて順序番号を付ける場合、下位レベルの内容をlow[○]subitemで囲み、その内部でserialno要素で番号を記述していました(11~16行目)。
さらにレベルを下げる場合low2subitem~low6subitemという要素を用いて表現する必要がありました。

 

 XMLの場合 

  <ContraIndications id="HDR_ContraIndications" heading="fixing">
    <OrderedList>
      <Item id="HDR_ContraIndications_1" heading="free">
        <Header>
          <Lang xml:lang="ja">見出し1</Lang>
        </Header>
        <Detail>
          <Lang xml:lang="ja">いろはにほへと ちりぬるを</Lang>
        </Detail>
      </Item>
      <Item id="HDR_ContraIndications_2" heading="free">
        <Header>
          <Lang xml:lang="ja">見出し2</Lang>
        </Header>
        <Detail>
          <Lang xml:lang="ja">わかよたれそ つねならむ</Lang>
        </Detail>
        <OrderedList>
          <Item id="HDR_ContraIndications_3" heading="free">
            <Detail>
              <Lang xml:lang="ja">うゐのおくやま けふこえて</Lang>
            </Detail>
          </Item>
          <Item id="HDR_ContraIndications_4" heading="free">
            <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の場合 

 

<serialno onoff="off"><variablelabel>順序番号</variablelabel>1</serialno>
<detail>●いろはにほへと ちりぬるを</detail>
<serialno onoff="off"><variablelabel>順序番号</variablelabel>2</serialno>
<detail>●わかよたれそ つねならむ</detail>
<serialno onoff="off"><variablelabel>順序番号</variablelabel>3</serialno>
<detail>●うゐのおくやま けふこえて</detail>
<serialno onoff="off"><variablelabel>順序番号</variablelabel>4</serialno>
<detail>●あさきゆめみし ゑひもせすん</detail>

順序番号を記述するserialnoには数字以外を入れられないので、●から始まるリストを表現するために、detail要素内に直接●を記述せざるを得ません。

serialno要素は不要ですが必須要素なので、表示しない場合にもonoff属性をoffにして記述が必要です。

 

 XMLの場合 

 

    <UnorderedList type="disc">
      <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の場合 

 

<serialno onoff="off"><variablelabel>順序番号</variablelabel>1</serialno>
<detail>●いろはにほへと ちりぬるを</detail>
<serialno onoff="off"><variablelabel>順序番号</variablelabel>2</serialno>
<detail>●わかよたれそ つねならむ</detail>
<serialno onoff="off"><variablelabel>順序番号</variablelabel>3</serialno>
<detail>●うゐのおくやま けふこえて</detail>
<serialno onoff="off"><variablelabel>順序番号</variablelabel>4</serialno>
<detail>●あさきゆめみし ゑひもせすん</detail>

 

serialno要素、item要素、detail要素を繰り返しで表現します。

 

上記にも示した通りserialno要素は省略不可なので、表示上何も無くてもitem要素とdetail要素の直前に必要です。

 

 XMLの場合 

 

    <SimpleList>
      <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>
      </Item>
      <Item>
        <Header>
          <Lang xml:lang="ja">見出し3</Lang>
        </Header>
        <Detail>
          <Lang xml:lang="ja">うゐのおくやま けふこえて</Lang>
        </Detail>
      </Item>
      <Item>
        <Header>
          <Lang xml:lang="ja">見出し4</Lang>
        </Header>
        <Detail>
          <Lang xml:lang="ja">あさきゆめみし ゑひもせすん</Lang>
        </Detail>
      </Item>
    </SimpleList>

 

Item要素をSimpleListで囲む事で、数字も記号もつかない文章を表現出来ます。

 

SGMLと比べて、不要な要素を記述する必要もなくItem単位で綺麗に構造化されているのがわかります。

 

 まとめ 

各項目に順序番号や記号を付与する場合は、リスト要素を用います。
数字を付与する場合はOrderedList要素、記号を付与する場合はUnorderedList要素、項目に何も付与しない場合はSimpleList要素を用います。

 

SGMLではなかったリスト要素の概念を用いることで、serialno要素やlow1subitem~low6subitem要素は不要になりました。

 

次回は、OrderedList要素のnumberContinued属性について解説します。