倭マン's BLOG

くだらない日々の日記書いてます。 たまにプログラミング関連の記事書いてます。 書いてます。

単純化(15) : 要素

単純化の第15段階は、<zeroOrMore> 要素の変換です。

  • 対象ノードの箇所では接頭辞 "rng" は「RELAX NG 名前空間」に関連づけられているとします。
  • サンプルでは見やすさのために空白や改行を入れているところがありますが、実際には単純化の第2段階で除去されています。

<zeroOrMore> 要素の変換

対象ノード
//rng:zeroOrMore
操作
<zeroOrMore> 要素の子要素を <oneOrMore> 要素と <empty> 要素との choice に変換します。

サンプル

<zeroOrMore>
  <element><name ns="">an-element</name><empty/></element>
</zeroOrMore>

<choice>
  <oneOrMore>
    <element><name ns="">an-element</name><empty/></element>
  </oneOrMore>
  <empty/>
</choice>

事後条件

  • <zeroOrMore> 要素がない。