解答例 - 実習課題2 - 8.Transformer
(実習課題2)
以下のXMLを、スタイルシートに従い変換するプログラムを作成しなさい。
- 出力結果は見やすくインデントする。
- 文字コードEUC-JP、またはShift-JISで出力する。
- パラメータnの値を、引数で指定できるようにする。
people.xml
<?xml version="1.0" encoding="EUC-JP"?> <people> <person>会田 太郎</person> <person>植田 次郎</person> <person>岡田 三朗</person> <person>菊田 四郎</person> <person>家古田 五郎</person> </people>
to_html.xsl
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:param name="n" select="2"/>
<xsl:template match="/">
<html>
<head><title>html method</title></head>
<xsl:apply-templates select="people"/>
</html>
</xsl:template>
<xsl:template match="people">
<p><xsl:value-of select="person[position()=$n]"/></p>
</xsl:template>
</xsl:stylesheet>
解答例
/**
* XsltTransformer.java
*
* TECHSCORE Java XML DOM XSLT 8章 実習課題2
*
* Copyright (c) 2004 Four-Dimensional Data, Inc.
*/
package com.techscore.dom.chapter8.exercise2;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Result;
import javax.xml.transform.Source;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;
public class XsltTransformer {
public static void main(String[] args) throws Exception {
Source xsltSource = new StreamSource("to_html.xsl");
TransformerFactory transFactory = TransformerFactory.newInstance();
Transformer transformer = transFactory.newTransformer(xsltSource);
transformer.setOutputProperty(OutputKeys.METHOD, "html");
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformer.setOutputProperty(OutputKeys.ENCODING, "EUC-JP");
if (args.length > 0) {
transformer.setParameter("n", args[0]);
}
Source source = new StreamSource("people.xml");
Result result = new StreamResult(System.out);
transformer.transform(source, result);
}
}

