XSLT と文書の変換

応用Java(Java/XML) 第10回
2005年6月16日
植田龍男
後半の内容の予定
XPath (6/9)
 XSLT (6/16)
 名前空間(Namespace) (6/23)
 XML文書の妥当性の検証(6/30,7/7)
DTD,XML Schema

J2SE 5.0 と XML API










javax.xml
javax.xml.parsers
javax.xml.transform
javax.xml.transform.dom
javax.xml.transform.sax
javax.xml.transform.stream
javax.xml.xpath
javax.xml.namespace
javax.xml.validation
javax.xml.datatype
javax.xml.transform




javax.xml.transform
javax.xml.transform.dom
javax.xml.transform.sax
javax.xml.transform.stream
XSLTとは?



XSL Transform
XML文書を別の形式の文書へ変換
XSL(eXtensible Stylesheet Language)
変換のルールもまたXML文書で記述
(XSLファイル)
変換前の文書、変換後の文書、変換のた
めの文書
変換前の文書の例
<document>
<title>Java and XML</title>
<text>
Let's begin, now!
</text>
<image s="java.png" w="128"
h="64"/>
</document>
XSLTによる変換の例(1)
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/
XSL/Transform">
<xsl:template match="/">
:
</xsl:template>
</xsl:stylesheet>
XSLTによる変換の例(2)
<xsl:template match="text">
<p>
<xsl:apply-templates />
</p>
</xsl:template>
XSLTによる変換の例(3)
<xsl:template match="title“
mode="inhead">
<title>
<xsl:apply-templates />
</title>
</xsl:template>
XSLTによる変換の例(4)
<xsl:template match="image">
<img>
<xsl:attribute name="src">
<xsl:value-of select="@s"/>
</xsl:attribute>
</img>
</xsl:template>
参照:XPath の検索パターン
abc
//abc
abc[1]
@xyz
XSLT のAPI(1)



javax.xml.transform パッケージ
インタフェース Source
抽象化された入力元
変換前の文書
変換のXSLファイル
インタフェース Result
抽象化された出力先
変換後の文書
SourceやResultの実体は?
ローカルファイル
 Web上の資源
 DOMツリー
 SAXで処理中の文書
*それぞれに応じて実体を提供
3つのサブパッケージの役割り
処理そのものに違いは生じない

XSLT のAPI(2)
Source inputSource
= new StreamSource( "sample6.xml" );
Source transSource
= new StreamSource( "trans.xsl" );
Result outputResult
= new StreamResult( System.out );
XSLT のAPI(3)

Transofromerクラス
変換を実行する抽象クラス
TransformerFactory tf
= TransformerFactory.newInstance();
Transformer transformer
= tf.newTransformer( transSource );
XSLT のAPI(4)

変換の実行
transformer.transform(
inputSource, outputResult );
*これでResultに結果が格納
変換後の文書の例
<html>
<head> <title>Java and XML</title>
</head>
<body>
<h1>Java and XML</h1>
<hr>
<p> Let's begin, now!
: