XSL: putting a XSL value inside an html attribute?

Discussion in 'XML' started by Kourosh, May 17, 2006.

  1. Kourosh

    Kourosh Guest

    I can't figure out how to do this because the tags have to be properly
    nested... and I dont have much XSL experience. Say I'm generating an
    HTML tag in my XSL file, and for one of it's attributes, I want to put
    the value of an XSL tag... for example:

    XSL file...
    ......
    <xsl:template match="/"
    <div class = "{value of XSL tag 'entry' goes here}" > hello
    world</div>
    </xsl:template>

    how would I do this?
    thanks in advance
    Kourosh, May 17, 2006
    #1
    1. Advertising

  2. I presume you actually meant
    <div class = "{value of XSL tag 'entry' goes here}"> hello world</div>

    The question is: What do you mean by "value of XSL tag 'entry'"?
    Depending on what value you're actually trying to obtain, you may be
    able to use an Attribute Value Template as here, or you may need to use
    <xsl:attribute> to create this attribute.
    Joe Kesselman, May 17, 2006
    #2
    1. Advertising

  3. Kourosh

    Kourosh Guest

    well yea my example up there wasnt accurate:D. My xml file is like
    this:

    <entry>
    <type>128</type>
    </entry>
    <entry>....</entry
    <entry>....

    so in the XSL file, I have a template that looks at each 'entry' tag
    and creates an html DIV tag for it. As the div tag is created, I want
    the 'type' tag (inside each entry) to be used as its class name.
    is that more clear??
    so for the first entry above, it would create something like

    <div class="128">some text here</div>
    Kourosh, May 17, 2006
    #3
  4. Sounds like what you want is something like

    <xsl:template match="entry">
    <div class="{type}">some text here</div>
    </xsl:template>

    or

    <xsl:template match="entry">
    <div>
    <xsl:attribute name="class">
    <xsl:value-of select="type"/>
    </xsl:attribute>
    <xsl:text>some text here</xsl:text>
    </div>
    </xsl:template>
    Joe Kesselman, May 17, 2006
    #4
  5. BTW, the xsl:text in the second version was mostly for readability; I
    could have written it as

    <xsl:template match="entry">
    <div>
    <xsl:attribute name="class">
    <xsl:value-of select="type"/>
    </xsl:attribute>some text here</div>
    </xsl:template>

    but that would tend to obscure the intent.
    Joe Kesselman, May 17, 2006
    #5
  6. Kourosh

    Kourosh Guest

    oh wow I didnt know it'd be that simple thanks! I'll try it out.

    So the second example that you have... does that actually put the
    attribute inside the div tag?
    Kourosh, May 17, 2006
    #6
  7. Kourosh

    Peter Flynn Guest

    Kourosh wrote:
    > I can't figure out how to do this because the tags have to be properly
    > nested... and I dont have much XSL experience. Say I'm generating an
    > HTML tag in my XSL file, and for one of it's attributes, I want to put
    > the value of an XSL tag... for example:


    See http://xml.silmaril.ie/authors/makeup/

    > XSL file...
    > .....
    > <xsl:template match="/"
    > <div class = "{value of XSL tag 'entry' goes here}" > hello
    > world</div>
    > </xsl:template>
    >
    > how would I do this?


    <div class="{entry}">

    But that presupposes that "entry" is a child element of the context
    node. If "entry" is somewhere else in the document, you have to give
    the XPath to it.

    ///Peter
    --
    XML FAQ: http://xml.silmaril.ie/
    Peter Flynn, May 17, 2006
    #7
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. John Lau
    Replies:
    4
    Views:
    661
    John Lau
    May 5, 2004
  2. Saurabh
    Replies:
    6
    Views:
    4,518
    Chris Smith
    May 30, 2004
  3. Jon Noring
    Replies:
    5
    Views:
    2,892
    Peter Flynn
    Nov 16, 2005
  4. Replies:
    1
    Views:
    4,264
    Joe Kesselman
    Aug 2, 2006
  5. Replies:
    8
    Views:
    521
Loading...

Share This Page