1. ホーム
  2. Web制作
  3. XML/XSLT

XMLチュートリアル。要素の宣言 - XML/XSLT

2021-12-31 11:23:48

有効な文書で使用される各要素は、文書の DTD で要素宣言を行う必要がある。element_name は任意の法的な XML 名、content_model はその要素が含むことができる、または含まなければならない子要素とその順序を指定する。コンテンツ・モデルの詳細は後述する。
前節の文書型宣言の各項目は、各要素の制約を定義する要素宣言である。要素宣言の書式は
<!ELEMENT element_name (content_model)>
有効な文書で使用される各要素は、文書の DTD で要素宣言を行う必要があります。element_name は任意の合法的な XML 名で、content_model(内容モデル)は、その要素が含むことができる、または含まなければならない子要素とその順序を指定します。コンテンツ・モデルの詳細は後述する。
この記事はスクリプトハウス(https://www.jb51.net)が編集・公開したものです! 出典の引用をお願いします!ありがとうございました

    #PCDATA, 要素が解析された文字データのみを含むことを指定する。以下の記述は、name 要素にテキストを含めることはできるが、area_code、number、extension の各要素に分割することはできないことを示している。
    <!ELEMENT name (#PCDATA)>
    ある要素の子要素を指定する子要素。次の宣言は、name 要素が desc 要素を含むこと、および、desc 要素のみを含むことを示す。
    <!ELEMENT name (desc)>
    カンマを区切り文字として、複数の子要素を指定することもできます。そして、子要素は定義された順番に表示されなければなりません。例えば
    <!ELEMENT name (id,desc)>
    name 要素の id 子要素は desc 子要素の前に置かなければなりません。そうしないとバリデーションでエラーとなり、有効な XML 文書ではありません。
    次の文書は有効です。 <name> <id>1</id> <desc>dtd test</desc> </name> 次の文書は無効です。順序が逆になっています。 <name> <desc>dtd test</desc> <id>1</id> </name> 次の文書も冗長な要素があり、無効です。 <name> <id>1</id> <desc>dtd test</desc> <date>2005/01/31</date> </name>
    子要素の数は、正規表現で指定することができます。

      は、0個または1個の要素を許可するものである。
      *この要素の0個以上を許可する
      この要素の1つ以上を許可する
      以下では、これらの記号を使用して、idサブ要素は必ず出現させ、一度だけ出現させること、descサブ要素は任意であることを指定することができる。この記事はスクリプトハウス(https://www.jb51.net)が編集・公開したものです! 出典を明記してください、ありがとうございます
      <!ELEMENT name (id, desc*)>
      上記の宣言によれば、以下のname要素はすべて有効である。
      <name> <id>1</id> <desc>dtd test</desc> </name> <name> <id>2</id> </name> <name> <id>3</id> <desc>dtd test</desc> <desc>別のテスト</desc> </name>
      オプション (|), オプションは引数のリストで、各引数の間を "|" で区切り、1つの子要素が選択可能であり、また選択することしかできないことを表します。
      ELEMENT choice (good | bad)>
      上の例のchoice要素は、goodの子要素、badの子要素を選択でき、choiceからは1つしか選択できない。選択できるパラメータの列は、2つに限らず、複数でもよい。例えば
      ELEMENT choice (one | two | three | four)>
      括弧は、より豊かな意味を伝えるためにオプションを囲むのに使うことができます。例えば、choice要素がgoodサブ要素を含まなければならず、okまたはbadサブ要素のいずれかを含まなければならないことを示したい場合などです。
      <!ELEMENT choice (good, (ok|bad))>
      混合コンテンツ、文書によっては、要素が子要素と文字列の両方を含む場合があり、このようなコンテンツを混合コンテンツと呼ぶ。これは次のように表現することができる。
      <!EMEMENT 記述 (#PCDATA | term)* )>
      この宣言は、description 要素が解析された文字列と term 副要素を含むことができ、0 回以上出現することが許されていることを示します。
      <description> これは <term>dtd</term> のテストです。 </description>
      #CDATAは必ず先頭で、オプションの子要素はいくつでも可能です。
      一部の要素が内容を含まなくてもよいものを空要素と呼びます。/>で終わる独立したタグとして記述します。
      <!ELEMENT image EMPTY>

      <image src="http://www.xml.com/dtd.jpg" />
      ANYで要素内の任意のコンテンツを許可します。このオプションはdtdのテスト時に有用ですが、実稼働システムでは使用しないようにしてください。
      <!ELEMENT page ANY>