XSL: putting a XSL value inside an html attribute?

K

Kourosh

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
 
J

Joe Kesselman

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.
 
K

Kourosh

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>
 
J

Joe Kesselman

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>
 
J

Joe Kesselman

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.
 
K

Kourosh

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?
 
P

Peter Flynn

Kourosh said:
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
 

Ask a Question

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

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
474,002
Messages
2,570,258
Members
46,857
Latest member
ArleenWill

Latest Threads

Top