In addition to what Jeni said (you should able to get the tab count from
your source?) you can do it by writing to the output stream.
I have had to do something similar, but with JSP 1.2 (the one with no
Expression Language). Basically, I created some elements in the source,
like:
<jsp:scriptlet>
String id = someAction.getId();
</jsp:scriptlet>
<jspp:outputElement name="a">
<jspp:outputAttribute name="href">
<jspp:concat str_value="next-page.jsp?id="/>
<jspp:concat var_value="id"/>
</jspp:outputAttribute>
</jspp:outputElement>
Then the transformation to the JSP (hope you can parse this into PHP) does:
<xsl:template match="jspp:outputElement">
out.print("<xsl:text disable-output-escaping="yes"><</xsl:text>");
out.print("<xsl:value-of select="@local_name"/>");
<xsl:apply-templates select="jspp:outputAttribute" mode="attrOut"/>
out.print("<xsl:text disable-output-escaping="yes">></xsl:text>");
<xsl:apply-templates/>
out.print("<xsl:text disable-output-escaping="yes"><</xsl:text>/");
out.print("<xsl:value-of select="@local_name"/>");
out.print("<xsl:text disable-output-escaping="yes">></xsl:text>");
</xsl:template>
<xsl:template match="jspp:outputAttribute"/>
<xsl:template match="jspp:outputAttribute" mode="attrOut">
<xsl:choose>
<xsl:when test="boolean(@name)">
out.print(" ");
out.print("<xsl:value-of select="@name"/>");
out.print("='");
<xsl:choose>
<xsl:when test="boolean(@str_value)">
out.print("<xsl:value-of select="@str_value"/>");
</xsl:when>
<xsl:when test="boolean(@var_value)">
out.print(<xsl:value-of select="@var_value"/>);
</xsl:when>
<xsl:otherwise>
out.print(<xsl:apply-templates/>);
</xsl:otherwise>
</xsl:choose>
out.print("'");
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates mode="attrOut"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="jspp:concat">
<xsl:if test="not($context='0')">
<xsl:if test="preceding-sibling::jspp:concat">
<xsl:text> + </xsl:text>
</xsl:if>
<xsl:choose>
<xsl:when test="boolean(@str_value)">
<xsl:text>"</xsl:text>
<xsl:value-of select="@str_value"/>
<xsl:text>"</xsl:text>
</xsl:when>
<xsl:when test="boolean(@var_value)">
<xsl:value-of select="@var_value"/>
</xsl:when>
</xsl:choose>
</xsl:if>
</xsl:template>
Let me know if it does not make sense.
best,
-Rob
Fabio Cuomo wrote:
Hi at all,
i've a problem with outputting special chars with xsl, particularly
given the following :
<a href="#" tabindex="<?=$tabindex++?>">
rather i want to generate all my link tags with dynamic tabindex
attribute. In xsl i have
<xsl:stylesheet ........
<xsl:output method="html"/>
......
......
<a href=#" tabindex="<?$tabindex++?>">......</a>
.....
.....
</xsl:stylesheet>
but the output produced is :
<a href=#" tabindex="<?$tabindex++?>">....</a>
that is not good because HTML page produced can't be execute
served-side while all php-let are printed in HTML page.
I tried in this way too:
<a href=#">
<xsl:attribute name="tabindex">
<xsl:text disable-output-escaping="yes"><?$tabindex++?></xsl:text>
</xsl:attribute>
</a>
but i obtain same result. Note that if i put
<xsl:text disable-output-escaping="yes"><?$tabindex++?></xsl:text>
on xsl not inside attribute, i get correct result. I think problem
concerne special chars inside attribute, problably there must be a
method that i dont'know to put correctly special chars in attribute
value.
Please help me, i'm in trouble.
ANy kind of help is granted.
regards,
Mulp.
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--