xmlc
コマンドは ドキュメントを 以下のような特徴をもつ Java のクラスにコンパイルします。
org.enhydra.xml.xmlc.html.HTMLObject
を継承。
org.w3c.dom.html.HTMLDocument
を実装。
org.enhydra.xml.xmlc.html.HTMLFrameSetObject
を継承。
org.w3c.dom.html.HTMLDocument
を実装。
HTML ドキュメントの場合、この識別子属性は ほとんど全ての要素で有効な id
属性である。
XML ドキュメントは DTD において、ID
型で指定された全ての属性となる。
得られたメソッドは getElementId名
という形式で命名されている。
id の最初の文字は Java の習慣に合致させるために大文字に変換されている。返される値の型は
その要素を表す DOM のクラスとなる。
以下のような要素には:
<INPUT ID="nameInput">以下のようなメソッド:
HTMLInputElement getElementNameInput();が生成される。
文法上の Java の識別子として利用できない文字を含む(HTML/XML の)要素の id については アクセスメソッドは生成されない。
ある要素:
<INPUT NAME="myName"> CLASS="class1 class2">にたいして 文字定数
public static final String NAME_myName; public static final String CLASS_class1; public static final String CLASS_class2;が定義される。
HTML の標準仕様では NAME 属性は文字の大文字・小文字を区別しないのであるが、 HTTP サーバーは name 属性値の大文字・小文字を区別する。文字の大小だけが違う要素名をサポートするため name 属性値の文字の大小は( Java のクラスの)フィールド名を生成する時には修正されない。 Class 属性値の大文字・小文字は区別される、よってそれらの大小の区分は修正されない。 文法上の Java の識別子として利用できない文字を含む要素の name 属性、class 属性値の場合、 文字定数のフィールドは生成されない。
こうした定数は DOM にアクセスする際に用いられる。 例えば以下のとおりである。:
NodeList elements = htmlObj.getElementsByName(htmlObj.NAME_myName);
多くのアプリケーションにおいて、HTML を含むテキストデータをデータベースやユーザーの入力等の
外部から入力することは可能である。 これによりこうした HTML ドキュメントの部分をパースして
DOM の階層構造の中へ埋め込むのは 実際にできないかもしれない。XMLC の HTML フォーマッタは
まだパースされない HTML のために標準的ではない拡張機構を提供する。
CDATASection
ノードの中のデータは何も変換せずに、toDocument()
メソッドで生成された HTML
ドキュメントに挿入される。
警告:
DOM の仕様では パースされていない HTML を含むことを許していない。しかし、これは DOM
仕様の目標の一つではない。
DOM は ファイルシンタックスに依存しないように意図されたドキュメントオブジェクトの表現形式である。
CDATASection
の利用は標準的ではなく注意深く利用しなければならない。
XMLC で生成したオブジェクトと一緒に利用したいかもしれない他の DOM ベースのツールでは
こうした機能を多分サポートしていないかもしれない。一般的に 要素の DOM
による階層構造として、ドキュメントを作成するのはより安全で拡張性のあるアプローチである。
このような機能は XML ドキュメントの場合はサポートされない。