電子書籍の厳選無料作品が豊富!

何方かご存知でしたら、ご教授下さい。

こんなXMLがあります。
<book>
 <ジャンプ>200円</ジャンプ>
 <マガジン>210円</マガジン>
 <サンデー>200円</サンデー>
:
:(可変)
</book>

上記のXMLをHTMLでこのように表示します。

<table>
 <tr>
  <td>ジャンプ</td>
  <td>200円</td>
 </tr>
 <tr>
  <td>マガジン</td>
  <td>210円</td>
 </tr>
 <tr>
  <td>サンデー</td>
  <td>200円</td>
 </tr>
</table>

<book>の子ノードは可変で、どんな要素名がくるかわかりません。
このときにどのようなXSLTを作成すればよいでしょうか?

宜しくお願い致します。

A 回答 (1件)

好みの都合で余計なものいっぱいくっついているけど


=================Q4511114-1.xml(入力)===============
<?xml version="1.0" encoding="UTF-8"?>
<book>
<ジャンプ>200円</ジャンプ>
<マガジン>210円</マガジン>
<サンデー>200円</サンデー>
</book>
=================Q4511114-1.xsl(変換)=============
<?xml version="1.0" encoding="UTF-8"?>
<!--
教えてgooのシステムはURIっぽい文字列の前後にNO WIDTH SPACEをつけるため,回答をそのままコピーしても動きません
-->
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" version="1.0">
<xsl:output
method="xml"
version="1.0"
encoding="UTF-8"
omit-xml-declaration="no"
standalone="no"
doctype-public="-//W3C//DTD XHTML 1.1//EN"
doctype-system="http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"
indent="yes"
media-type="text/xml"/>
<xsl:template match="/">
<html>
<head>
<title>Q4511114 TestCase 1</title>
</head>
<body>
<xsl:apply-templates />
</body>
</html>
</xsl:template>
<xsl:template match="book">
<table>
<xsl:for-each select="*">
<tr>
<td><xsl:value-of select="local-name(.)" /></td>
<td><xsl:value-of select="text()" /></td>
</tr>
</xsl:for-each>
</table>
</xsl:template>

</xsl:stylesheet>
==================Q4511114-2.xml(結果)============
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Q4511114 TestCase 1</title>
</head>
<body>
<table>
<tr>
<td>ジャンプ</td>
<td>200円</td>
</tr>
<tr>
<td>マガジン</td>
<td>210円</td>
</tr>
<tr>
<td>サンデー</td>
<td>200円</td>
</tr>
</table>
</body>
</html>
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
特定のものにmatchさせてから、<xsl:for-each select="*">であるだけまわすんですね。
なんとなくコツがわかりました。

どうもありがとうございました。

お礼日時:2008/12/02 09:11

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!