解答例 - 実習課題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); } }