• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:xml→htmlへの変換&ページ分割したい)

XMLからHTMLに変換&ページ分割したい

このQ&Aのポイント
  • XMLからHTMLに変換し、ページ分割を行いたい。
  • 1000個のデータがある場合でも、ページ分割をして見やすいインデックスページを作成したい。
  • 現在のXSLでは3ページしか出力されないため、10個までのデータを1ページに出力し、それ以上のデータは次のページに出力したい。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

JDK 7でやろうとしたらエラーが出たし、エラーの原因を把握して動作するようにするのも面倒なのでメモだけ <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" version="1.0"> <xsl:output method="html" encoding="UTF-8"/> <xsl:template match="/all"> <html> <head> <title>Q3861990 TestCase 1</title> </head> <body> <dl> <xsl:apply-templates select="index"/> </dl> </body> </html> </xsl:template> <xsl:template match="index"> <xsl:apply-templates select="product" /> </xsl:template> <xsl:template match="product"> <xsl:variable name="pos" select="floor((position() - 1) div 3)" /> <xsl:call-template name="compare"> <xsl:with-param name="pos" select="$pos" /> <xsl:with-param name="current" select="." /> <xsl:with-param name="nodes" select="../product[floor((position() - 1) div 3) = $pos]" /> </xsl:call-template> </xsl:template> <xsl:template name="compare"> <xsl:param name="pos"/> <xsl:param name="current" /> <xsl:param name="nodes" /> <xsl:if test="count($nodes[1]|$current) = count($current)"> <!-- 実際はここら辺にredirect:open要素やredirect:write要素の開始タグ・・ --> <dt><xsl:value-of select="concat($current/../@file_id,string($pos))" /></dt> <xsl:apply-templates select="$nodes/yoso" /> <!-- 実際はここら辺にredirect:open要素やredirect:write要素の終了タグ・・ --> </xsl:if> </xsl:template> <xsl:template match="yoso"> <dd><xsl:value-of select="../@file_id" />:<xsl:value-of select="text()" /></dd> </xsl:template> </xsl:stylesheet> 出力結果 <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Q3861990</title> </head> <body> <dl> <dt>a0</dt> <dd>a-01:ああああああああああああああああ</dd> <dd>a-02:いいいいいいいいいいいいいいいい</dd> <dd>a-03:うううううううううううううううう</dd> <dt>a1</dt> <dd>a-04:ああああああああああああああああ</dd> <dd>a-05:いいいいいいいいいいいいいいいい</dd> <dd>a-06:うううううううううううううううう</dd> <dt>b0</dt> <dd>b-01:ああああああああああああああああ</dd> <dd>b-02:いいいいいいいいいいいいいいいい</dd> <dd>b-03:うううううううううううううううう</dd> <dt>b1</dt> <dd>b-04:うううううううううううううううう</dd> <dt>c0</dt> <dd>c-01:ああああああああああああああああ</dd> <dd>c-02:いいいいいいいいいいいいいいいい</dd> <dd>c-03:うううううううううううううううう</dd> </dl> </body> </html> ============================================ 教えてgooの仕様で,URIっぽい文字列の前後にXMLに存在できない空白文字を埋め込まれることが多い。動作しないことがよくあるのでテキストエディタで適宜編集してから使用すること。