倭マン's BLOG

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

XML

MarkupBuilder で RELAX NG スキーマを書いてみた

『MarkupBuilder でスタイルシートを書いてみた』ついでに、MarkupBuidler で RELAX NG スキーマも書いてみました。RELAX NG には、XML 形式でない簡略化された記法『RELAX NG Compact Syntax』というのがあるのであえて MarkupBuilder を使う必要はないかも…

MarkupBuilder でスタイルシートを書いてみた

XSLT スタイルシートは(特にロジックなどを)書くのが結構大変。 以前から RELAX NG Compact Syntax のような簡略記法がないかなぁと思っていましたが、Groovy の Builder を使うとこの目的が達せられるかと思いチョット試してみました。変換対象の XML デ…

Java と XML と空白と (6):テキストノードの正規化(JDOM 編)

前回、「テキストの正規化」として Nux JavaDoc API に定義されている空白の扱いを見ました。で、ふと JDOM の JavaDoc を見ると、似たような「テキストの正規化」が定義されていました・・・ しかも、こちらの方がなじみやすそうな命名で(^ ^;) ってことで…

Java と XML と空白と (5):XML の空白と Java

今回は、XML の空白を Java で扱う方法を幾つか。 正規表現 属性値の正規化 テキストの正規化 正規表現 XML での空白は ' ', '\t', '\r', '\n' の4文字なので、Java での正規表現(java.util.regex.Pattern の JavaDoc 参照)で XML の空白文字 (whitespace …

Java と XML と空白と (4) : HTML, XML, XHTML の空白

今回は、幾つかのマークアップ言語について、空白の扱いを見ていきます。 ここで見ていくのは次の3つ: HTML 4.01 XML 1.0 XHTML 1.0 正確にはそれぞれの仕様書を参照してください。HTML 4.01 仕様書は『HTML 4.01 Specification』。 以下では次の項目を見て…

Java と XML と空白と (3) : String#trim() メソッド

前回、Java での「whitespace」のややこしい扱いを見ましたが、哀しいかな、他にも「whitespace」のややこしい扱いがあります。 それは String#trim() です。String#trim() の JavaDoc をみると、 Returns a copy of the string, with leading and trailing …

Java と XML と空白と (2) : 正規表現

前回、java.lang.Character クラスの static メソッドを用いて、Java での空白文字を見ました。 このとき Character#isSpaceChar() Character#isWhitespace() という2つのメソッドを使って空白文字かどうかを判定していました。哀しいかな Java には他の空白…

Java と XML と空白と (1) : Java と XML の空白文字

Java での空白文字 Java で空白とみなされる文字は?と聞かれると、意外とよく分からない。 Character クラスの static メソッドに isSpaceChar() と isWhitespace() とが定義されているけど、JavaDoc を読んでも全然分からない。ということで、実際に Chara…

org.w3c.dom.Document を java.io.Reader に変換する

以前の記事で org.w3c.dom.Document オブジェクトを java.io.Writer へ書き出す処理を見ました。今回はそれを踏まえて、「org.w3c.dom.Document オブジェクトを java.io.Reader オブジェクトとして扱う」方法を考えます。 この目的のために java.io.Reader …

org.w3c.dom.Document を出力する

org.w3c.dom.Document オブジェクトを標準出力やファイルに出力するのに困ったことはありませんか? javax.xml.transform パッケージ内のクラスを使うと、ある程度簡単に Document オブジェクトを外部へ書き出すことが出来ます。java.io.Writer へ書き出す p…

XML 文書のフォーマット 出力編

前回に続き、今回は XML 文書のフォーマットの「出力編」。 SAX, DOM はナシ。 代わりに javax.xml.transform パッケージ (TrAX API) を扱います。各 API での対象となるクラスは以下の表の通り: API version クラス transform Java SE 6 (javax.xml.transf…

XML 文書のフォーマット 入力編

Java で XML 文書を扱う API がいろいろありますが、入出力の際に指定できるフォーマットが各 API でいろいろあるので、チョット整理しておきましょう。 JDOM の Format や dom4j の OutputFormat は次回。今回は読み込みの際に処理を行う「入力編」。 各 AP…

QName を使った SAX イベント・ハンドラ (3) : 実装クラス

今回は、前回作成したの2つのインターフェースの実装クラス JDefaultHandler, JAttributesImpl クラスを作成します。JDefaultHandler クラス JDefaultHandler は org.xml.sax.helpers.DefaultHandler を拡張して作成します。 各メソッドの実装の概要は以下の…

QName を使った SAX イベント・ハンドラ (2) : インターフェース

今回は、前回示したクラス群の中の2つのインターフェース JContentHandler, JAttributes を作成します。JContentHandler インターフェース JContentHandler は org.xml.sax.ContentHandler を拡張して作成します。 また、JContentHandler には、javax.xml.na…

QName を使った SAX イベント・ハンドラ (1) : 概要

org.xml.sax.ContentHandler で要素に対する SAX イベントを扱うとき(つまり startElement() や endElement() を実装するとき)、引数に3つも文字列が定義されているので少々扱いにくくなっています。 また、属性を表すインターフェース org.xml.sax.Attrib…

Java & XML

★メモリー上に展開しない API★ 以下の API はどちらも、XML 文書をメモリー上に展開しないので、軽快に動作します。 SAX (Simple API for XML) いわゆる PUSH 型の読み取り API。 XMLReader または SAXParser によって読み取りを開始すると、出現した要素や…

XML → HTML

XML

XML から XSL によって HTML を生成するためのメモ。 XSLT の仕様を解説するものではありません。サンプルの XML データ & XSL ファイル まず、サンプルの XML データとして、以下の様な XML ファイルがあるとします。locke.xml: <episode title="久遠の瞳" e-title="Eternal Eyes"> <story> 惑星ユーノで、エスパー</story></episode>…