XMLの勉強を始める・・基礎XML−山田祥寛

基礎的な部分から理解するということで、本を読み始め、3章のXLSTまで読了。次からDOMでいよいよプログラミングに近いところへ。
基礎XML 基礎XML
ネット上にも

などいくつかあり、基礎固めはできそう。

XMLについては、業務で使用しているツールの設定ファイルがXMLベースのものになっていたり、とある産業向けネットワークのコンフィグレーションの定義がXMLだったり、そもそも開発しているアプリが内部データ構造としてXMLを採用していてSchemaがどうとか言ってるので、一応ついていけるだけの知識は仕入れておきたい。

今日のメモ

  • SGMLとの比較
    • SGML
      • 仕様が複雑であるため、習得が困難
      • 文書型定義が必須
      • 名前空間の概念がない
      • インターネットに未対応
    • XML
      • 必要な機能のみコンパクトに盛り込んだ
      • 文書型定義は必須でない
      • 名前空間に対応
      • インターネットを強く意識
  • その他のデータ記述言語
    • CSV - Comma Separated Value
    • TDV - Tab Delimited Value
      • これはTSV(Tab Separated Value)の方がより一般的か
  • 関連技術
  • 既存のタグセット例
  • 適用事例
    • RSS - RDF Site Summary
    • アプリケーションの設定ファイル
    • NXDB - Native XMLデータベース
    • SOAP - Simple Object Access Protocol
      • XML Web サービス
  • 構成
    • 最小単位はノード
    • ノードの種類
      • 要素
      • 属性
        • タグ内に含まれる 名前="値"
      • 名前空間
      • 処理命令
      • テキスト
      • CDATAセクション
      • コメント
      • 文書
        • XML文書全体
      • 文書型言語
      • 実体
        • 任意の実データ
      • 実体参照
        • &実体名;
      • 記法
    • XML文書はノードの木構造
  • 要素ノード
    • 空要素
      • 本体に何も含まず開始タグと終了タグのみ
    • テキストのみ
      • テキストノードのみを含む
    • 入れ子
      • 子要素が入れ子になっている
    • 混合モデル
      • 要素とテキストが混在
      • タイトル入門書
    • HTMLとの違い
      • 唯一のルート要素
      • 閉じタグは省略不可
        • 空要素でも とする
      • 必ず入れ子関係とする
        • < b>< i>test< / b>< / i>は不可
      • 属性の値はダブルクオーテーションもしくはシングルクオーテーションで囲む
      • 名前は大文字、小文字が区別される
    • well-formed XML document
      • XMLの構文規則にしたがっている
      • XMLパーサを使う上での必須条件
    • valid XML document
      • DTD(文書型定義)にしたがっている
      • SGMLの必須条件
    • # 親はコンテナと考えればまとまりやすいのかな…。
  • 要素と属性の使い分け
    • 出所
    • 視点
      • 独立性
      • ユーザーに見えない(処理のためだけに必要な)データは属性、それ以外は要素
      • 属性ではパーサが取り出す順序と記述順序は保障されない
      • 原則として要素を使う
      • 属性が苦手なこと
        • 複雑、または長大なデータ
        • 拡張、分割する可能性があるデータ
    • 指標
      • 属性にすべきもの
        • 親そのもののバリエーションを規定するもの(子要素に関係なく)
        • 親なしにはありえないもの(結合度が高いもの)
        • DTDを使うなら、型指定したいもの
        • 単純なもの
      • 子要素にすべきもの
        • 複数入れたいもの
        • 親がなくても考えうるもの(結合度が低いもの)
        • 構造を持っているもの(ツリーだったり、グループ化したかったりするもの)
  • 処理命令ノード
  • 記述
  • CDATAセクション
  • 名前空間
  • XSLT
    • ルート要素
    • 出力形式の指定
      • 要素
    • 変換ルールの指定
      • 要素
    • XML文書とXSLスタイルシートとの関連付け
  • XPath
    • XML文書内のタグや属性を特定、抽出するため問い合わせ言語
    • XSLTでの用途
      • ノードを特定
        • アドレッシング
      • 対象ノードを抽出
        • フィルタリング
    • XPath式の戻り値
      • 種類
        • ノード(集合)
          • 特定の部分ツリー
          • 集合を元に繰り返し処理を行う
        • 真偽値
          • true/false
          • 条件分岐に使用する
        • 数値
          • 浮動小数点数
          • インデックス番号にして特定のノードを取得する
        • 文字列
          • 任意の文字列
          • 変換結果として出力する
    • ロケーション・パス
      • 相対パス
        • コンテキストノード起点
        • books/book[1]/title
        • child::books/child::book[position()=1]/child::title
      • 絶対パス
        • ルートノード起点
        • /books/book[2]/@isbn
        • child::books/child::book[position()=2]/attribute::title
      • 構文
        • 基準点
        • ノードテスト
        • 述語
    • XPath関数
      • ノードセット関数
      • 登録数は
      • 文字列関数
      • 数値演算関数
      • ブール関数
      • XSLT拡張関数
        • XPathの仕様に含まれるものではなく、XLSTスタイルシート上のみで使用可能
  • XSLT要素
    • 繰り返し
    • 出力順序の規定
    • 多方向分岐
    • 条件分岐
    • 要素の作成
    • 属性の作成
    • テキストノード
    • コメントノード
    • 処理命令ノード
    • 外部ファイルの取り込み