- PR -

XSLでHTMLのタグを作成するには?

1
投稿者投稿内容
ともさか
会議室デビュー日: 2001/09/18
投稿数: 1
投稿日時: 2001-09-18 17:44
はじめまして。
私はXSL初心者なのですが、
今回、XMLデータをXSLを使ってHTMLに変換する、という
作業を行っています。

今回、あるXMLファイル(複数の商品データがある)から
複数の商品リストをHTMLで表示させ、
その商品コードからリンクして個々の商品情報をHTMLで
表示させようと思っています。

その際に呼び出すサーブレットに、選択された商品コードデータを
渡すようにしたいのですが、その部分が上手くいきません。
最初に<A href タグの中にさらに<xsl: タグを記述していたのですが、
当然(?)上手く値を入れられませんでした。
このような場合どうすれば良いのでしょうか?

<A href="http://..../ManyServlet?GOODS_CODE=<xsl:apply-templates select="../../@goods_code"/>">
と書いたらもちろんダメだったので、

<A href="http://..../ManyServlet?GOODS_CODE=<xsl:apply-templates select="../../@goods_code"/>">と記述したら、
HTMLでは
<xsl:apply-templates select="../../@goods_code"/>の値が入らず

GOODS_CODE=<xsl:apply-templates select="../../@goods_code"/>
となってしまいました。

まだXSLに関する知識が乏しいので、どのような手段があるのかが
わかりません。アドバイスがあれば宜しくお願いします。

以下は、XSLの一部です。

<xsl:template match="/">
<HTML>
<BODY>
<TABLE BORDER="1" ALIGN="CENTER">
 <TR>
  <TD bgcolor="#FFF0F0" ALIGN="CENTER">商品コード</TD>
  <TD bgcolor="#FFF0F0" ALIGN="CENTER">商品名</TD>
 </TR>
 <xsl:for-each select="/catalog/goods/special/buyer">
 <TR>
  <TD ALIGN="CENTER">
    <A href="http://..../ManyServlet?GOODS_CODE=0001"><xsl:apply-templates select="../../@goods_code"/></A></TD>
  <TD ALIGN="CENTER"><xsl:apply-templates select="../../standard/name"/></TD>
  </TR>
 </xsl:for-each>
</TABLE>
</BODY>
</HTML>
</xsl:template>
junk
会議室デビュー日: 2001/09/19
投稿数: 1
投稿日時: 2001-09-19 17:51
HTMLの<A>の属性「href」に、
XMLの属性「goods_code」の値を入れたいということなんでしょうか?

だとしたら、XSL内で直接<A href="...">と記述するのではなく、
<xsl:element>を使って"A"という要素を、
<xsl:attribute>を使って"href"という属性をそれぞれ
HTMLに出力してやれば良いと思います。

具体的には
<A href="http://..../ManyServlet?GOODS_CODE=0001"><xsl:apply-templates select="../../@goods_code"/></A>
となっている部分を

<xsl:element name="A">
<xsl:attribute name="href">
http://..../ManyServlet?GOODS_CODE=<xsl:apply-templates select="../../@goods_code"/>
</xsl:attribute>
</xsl:element>

としてみたらどうでしょう。

あと、"../../@goods_code"の部分は"//@goods_code"の方が良いような
気がするのですが・・・。意味合いが違うんでしょうか。

私も初心者なので、見当違いのことを言っているかもしれません。
変なところがあったらどなたか突っ込んで下さい。


[ メッセージ編集済み 編集者: junk 編集日時 2001-09-19 17:52 ]

[ メッセージ編集済み 編集者: junk 編集日時 2001-09-19 17:54 ]
1

スキルアップ/キャリアアップ(JOB@IT)