- - PR -
XSLでHTMLのタグを作成するには?
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> |
|
投稿日時: 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