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

XMLチュートリアル。属性の宣言 - XML/XSLT

2022-01-01 20:37:42

有効なXML文書では、要素の属性を宣言する必要があります。これはATTLIST宣言を用いて行われ、ATTLISTは一つの要素型に対して複数の属性を宣言することができます。
有効なXML文書では、要素の属性を宣言しなければなりません。そのためにはATTLIST宣言を使用します。ATTLISTは、一つの要素タイプに対して複数の属性を宣言することができます。
<!ATTLIST image src CDATA #REQUIRED>
上記の例では、image 要素に文字データを値とする src 属性が必要であることを宣言しています。ATTLIST宣言により、一つの要素に複数の属性を宣言することができます。
<!ATTLIST image src CDATA #REQUIRED 幅 CDATA #REQUIRED 高さ CDATA #REQUIRED alt CDATA #IMPLIED >
上記の記述は、src, width, height属性が必須で、alt属性は任意であることを示しています。
この記事はスクリプトハウス(https://www.jb51.net)が編集・公開したものです! この記事の出典を明記してください!ありがとうございました。

1. 属性の種類

    DTDでは属性を整数や日付で指定することはできず、Schemaではより強力なデータ型が用意されています。
    NMTOKEN型の属性値はXML名表記です。XML名表記はXML名と似ていますが、XML名表記は名前の開始文字としてすべての文字を許容するのに対し、XML名の最初の文字は文字、表意文字、アンダースコアでなければなりません。したがって10、.bashrcは合法的なXML名の表記法であるが、合法的なXML名ではない。すべてのXML名はXML名タグであるが、XML名タグがすべてのXML名であるとは限らない。属性が1990年、2005年などの整数を含む場合、その型はNMTOKENとして指定されるべきです。
    <!ELEMENT person birthday NMTOKEN #REQUIRED>
    NMTOKENSタイプ属性は、ホワイトスペースで区切られた一つ以上のXML名表記を含みます。例えば
    <person dates="02-01-2005 03-01-2005 05-01-2005">person</person>
    対応する文は、次のようになります。
    <!ATTLIST person dates NMTOKENS #REQUIRED>
    一方、この文の中のフォワードスラッシュは法的な名前文字ではないので、01/02/2005のようなフォームには使用できません。
    列挙宣言、列挙はキーワードを使用しません。すべての値は、縦線で区切られて直接リストされます。例えば
    <!ATTLIST date month(January | February | March | April | May | June | July | August | September | October | November | December) #REQUIRED>
    上記の記述の場合、date要素のmonth属性は12ヶ月のうち1つを選択することができます。
    ID型の属性は、文書内で一意であるXML名を含まなければなりません。ID属性は、要素に一意な識別子を割り当てます。
    <!ATTLIST name card_id ID #REQUIRED>
    数字は法的なXML名ではないので、ID番号を数字で始めることはできません。解決策は、数字の前にアンダースコアまたは文字を付けることです。
    IDREF型の属性は、文書中のある要素のID型の属性を指します。そのため、単純な包含関係では不十分な場合に、要素間の多対多の関係を確立するために使用されるXML名でなければなりません。例えば
    <project project_id="p1"> <goal>deploy linux</goal> <team_member person_card_id="c123"> </project> <person card_id="c123"> <name>linuxsir</name> <assignment project_project_id="p1"> </person>
    project要素のproject_id属性とperson要素のcard_id属性はID型、team_member要素のperson_card_id属性とassign要素のproject_project_id属性はIDREF型であることが必要です。対応する宣言は以下の通りである.
    <!ATTLIST person card_id ID #REQUIRED> <!ATTLIST project project_id ID #REQUIRED> <!ATTLIST team_member person_card_id IDREF #REQUIRED> <!ATTLIST assignment project_project_id IDREF #REQUIRED>
    IDREFS型の属性は、XML名のリストを含みます。名前は空白で区切られ、各名前は文書内の要素のIDです。これは、ある要素が他の複数の要素を参照する必要がある場合に使用されます。例えば
    <!ATTLIST person card_id ID #REQUIRED 課題IDREFS #REQUIRED> <!ATTLIST プロジェクト project_id ID #REQUIRED チームIDREFS #REQUIRED>
    対応する文書は、次のように書くことができる。
    <project project_id="p1" team="c123"> <gold>deploy linux</gold> </project> <person card_id="c123" assignment="p1"> <名前>Linuxsir</名前> </person>
    ENTITY型の属性は,DTDの他の場所で宣言された解析されていない実体の名前に含まれる。例えば、movie要素には、起動時に再生されるmpegやrmファイルを特定する実体属性があるかもしれません。
    <!ATTLIST movie src ENTITY #REQUIRED>
    この movie 要素は、DTD で play という解析不能な実体が宣言されている場合に、XML 文書にビデオファイルを埋め込むために使用することができる。
    <movie src="play" />
    ENTITIES型属性は、DTDの他の場所で宣言された複数の未解析の実体名を、空白で区切って含んでいます。
    <!ATTLIST slide_show slides ENTITIES #REQUIRED>
    DTD が解析不能な実体 slide1, slide2, slide3, ...を宣言している場合、slide_show 要素を使用して XML 文書にスライドを埋め込むことができる。
    <slide_show slides="slide1 slide2 slide3" />
    NOTATIONタイプの属性は、文書のDTDで宣言された表記法の名前を含んでいます。この属性タイプは、あまり一般的に使われません。理論的には、下の例のように、ある特別な要素を型と関連付けるのに使われるかもしれません。
    NOTATION GIF SYSTEM "image/gif"> <!NOTATION tiff SYSTEM "image/tiff">.NOTATION;image/tiff"> <!NOTATION jpeg SYSTEM "image/jpeg;"。 <!NOTATION png SYSTEM "image/png">.NOTATION;image/png"> <!ATTLIST image type NOTATION (gif | tiff | jpeg | png) #REQUIRED>
    各image要素のtype属性の値は、gif, tiff, jpeg, pngの4つの値のいずれかを指定します。この属性は、実際のMIMEメディア・タイプの表記が理論上可能であるため、列挙型よりも若干有利です。スラッシュはXML名では合法的な文字ではないので、列挙型ではimage/pngやimage/jpegを許容値として指定することができません。

    2. 属性のデフォルト値
    各ATTLIST宣言は、データ型を提供するだけでなく、属性のデフォルトの動作を宣言します。
    この記事はスクリプトハウス(https://www.jb51.net)が編集・公開したものです! 出典を引用してください、ありがとうございます

      #IMPLIED, 属性は任意です。
      #REQUIRED, 属性の指定が必要です。
      #FIXEDの場合、属性は定数であり、変更することはできません。
      <!ATTLIST person name CDATA #FIXED "linuxsir"
      リテラル、参照文字列の実際のデフォルト値として。
      ATTLIST person name NMTOKEN "linuxsir".ATTLIST person name NMTOKEN "linuxsir"
      指定された person 要素の name 属性が表示されていない場合、その値は linuxsir となります。