xsl-list
[Top] [All Lists]

RE: xsl:apply-templates doesn't fill variable correctly

2005-08-01 02:17:01
I can't see what's wrong here, I suspect the error is in the part of the
stylesheet that you haven't shown us.

One comment on your coding style:

You do this:

    <xsl:template match="*">
      <xsl:when test="name()='fussnote'">

and later this:

    <xsl:template match="@*">
              <xsl:when test="name()='href'">

In both cases, this isn't a good way of using template rules. It's much
better to have specific template rules for each kind of element or
attribute, than to have a generic rule which consists of a big xsl:choose
that switches on the element or attribute name.

Michael Kay
http://www.saxonica.com/
 

-----Original Message-----
From: Lensch, Thomas [mailto:Lensch(_at_)juris(_dot_)de] 
Sent: 01 August 2005 09:49
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: [xsl] xsl:apply-templates doesn't fill variable correctly

Hi,

the following snipet shows the usage of variable tHtml:

When i find a 'fussnote' in my xml i apply templates into tHtml. Then,
this variable is processed further.


    <xsl:template match="*">
      ...
                      <xsl:when test="name()='fussnote'">
                              <xsl:variable name="tHtml">
                                      <xsl:apply-templates
select="text()|*"/>
                              </xsl:variable>
                              <!-- Pos_1 -->
                              <xsl:variable name="ttHtml">
                                      <xsl:apply-templates
select="xalan:nodeset($tHtml)" mode="escape"/>
                              </xsl:variable>
                              .... further processing and output of
$ttHtml
                      </xsl:when>

    <!-- Process Attributes -->
    <xsl:template match="@*">
        <xsl:choose>
                      <xsl:when test="name()='href'">
                <xsl:choose>
                    <xsl:when test="starts-with(.,'#')">
                        <xsl:attribute name="href">
                            <xsl:call-template name="VerityLink">
                                <xsl:with-param name="price"
select="'0.0'"/>
                                <xsl:with-param name="part"
select="/*/parameter/doc.part"/>
                            </xsl:call-template>
                            <xsl:value-of select="."/>
                        </xsl:attribute>
                    </xsl:when>
                    <xsl:otherwise>
                              ....



Excerpts of my XML file:
a)
      <fussnote nr="13">
          <a href="#rd_200">Dazu Rn. 200</a>.</fussnote>

b)
      <fussnote nr="71">
          <a href="#rd_103">Dazu Rn. 103</a>.</fussnote>

While a) works b) doesn't. In b) only the "." ist output.

When i use apply-templates without putting the result in a 
variable, b)
works too!

Does anybody have some hints for me? Possible problem of recursion on
variable content?

Best regards
Thomas.


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





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



<Prev in Thread] Current Thread [Next in Thread>