- ベストアンサー
xsl:variableの使い方について
- xsl:variableを使用してxsl:elementのnameを動的に指定しようとしていますが、うまくいきません。希望する出力が得られず、どのように修正すれば良いか悩んでいます。
- FireFox3 Beta 5でのテスト結果から、xsl:elementのnameをxsl:variableで指定する方法が間違っている可能性があります。
- 要望する出力は<testNode>aiueo<testNode>ですが、現在のコードではaiueoのみが出力されてしまいます。xsl:variableの使い方に誤りがあるかもしれません。
- みんなの回答 (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>
お礼
なるほど、中かっこを使わないと駄目だったんですね。 他のサイトでは中かっこ無しのサンプルがあったのですがあれは一体・・・^^; なにはともあれ助かりました、ありがとうございました。