- ベストアンサー
XSLでの表示方法
- XSLを使ってXMLのタイトルと内容を表示する方法について説明します。
- タイトルA、no1、no2、no3、no4、タイトルB、no5、no6、no7、no8のような表示を実現するためには、XSLのfor-each文を使います。
- for-each文を使って、タイトルとそれに続くP要素の内容を順番に表示することで、目的の表示形式を実現できます。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
だいぶ経ってしまっているので、回答が役に立つのか分かりませんが、 一応書いておきます。 正確な意図が分かりにくいので、この回答が見当違いかもしれません。 <xsl:for-each select="//title"> <P><xsl:value-of select="."/></P> <xsl:for-each select="../P"> <P><xsl:value-of select="."/></P> </xsl> </xsl> と記述しようとしている場所に <xsl:apply-templates select="//title | //P"/> と記述しておいて、 <xsl:template match="title"> <!-- title要素に対する処理 --> </xsl:template> <xsl:template match="P"> <!-- P要素に対する処理 --> </xsl:template> というテンプレートを呼び出すようにすれば良いのでは? もちろん、apply-templatesでtitle要素とP要素を区別しない点が 意図と異なるかもしれませんが。 この場合のデータ構造があまり良くないので、例えば <Group> <title>タイトルA</title> <P>no1</P> <P>no2</P> <P>no3</P> <P>no4</P> </Group> <Group> <title>タイトルB</title> <P>no5</P> <P>no6</P> <P>no7</P> <P>no8</P> </Group> のようにデータ構造をより良いものにしてから、 という手もあります。 こうするとだいぶ処理が楽になります。 最後に、余計な忠告かもしれませんが、 xsl:for-eachにこだわり過ぎないで柔軟に考えた方が良いのでは、 と私は思います。