ようこそ ゲスト さん、新規登録(無料)して気になる疑問を解決しませんか?

質問

QNo.4045055 xsl:variableについて
質問者:masaota56 お世話になります。xsl:variableについて質問です。

xsl:elementのnameを動的に指定したく、次のようにしました。
FireFox3 Beta 5にて、innerHTMLをtextareaに貼り付けて確認しました。

xml
<testNode>aaa</testNode>

xsl
<xsl:variable name="el"><xsl:value-of select="name(.)"/></xsl:variable>
<xsl:element name="$el">aiueo</xsl:element>

こうすると、
aiueo
のみ出力されました。希望する出力は
<testNode>aiueo<testNode>
です。

xsl:variableの使い方が間違っているのでしょうか?先程からずっとこれに悩んでいます。。。
よろしくお願いします。
困り度:
  • 困っています
質問投稿日時:
08/05/23 22:14
この質問に対する回答は締め切られました。

回答良回答20pt

ANo.1 ============hoge.xml==============
<testNode>aaa</testNode>
=====================fuga.xsl==============
<xsl:stylesheet version="1.0" xmlns:xsl="​http://www.w3.org/1999/XSL/Transform">
<xsl:template match ="/">
<p>
s<xsl:value-of select="name(.)" />s <!-- name(.)は何もありません。match="/testNodeとかなら値は出てくるだろうけど。"-->
<xsl:apply-templates />
</p>
</xsl:template>
<xsl:template match="testNode">
<xsl:variable name="el"><xsl:value-of select="name(.)"/></xsl:variable>

<!--
7.6.2 Attribute Value Templates
In an attribute value that is interpreted as an attribute value template,
such as an attribute of a literal result element, an expression can be
used 【by surrounding the expression with curly braces ({}). 】
{}で括らないでテストしたら$は要素名に使えないって怒られた。
-->
<xsl:element name="{$el}">aiueo</xsl:element>
</xsl:template>
</xsl:stylesheet>

=============
出力結果
<?xml version="1.0" encoding="utf-8"?>
<p>
ss <testNode>aiueo</testNode>
</p>
回答者:himajin100000
種類:回答
どんな人:一般人
自信:参考意見
回答日時:
08/05/23 23:59
この回答へのお礼なるほど、中かっこを使わないと駄目だったんですね。
他のサイトでは中かっこ無しのサンプルがあったのですがあれは一体・・・^^;

なにはともあれ助かりました、ありがとうございました。