Re: Re: Re: [xsl] Namespace and key function issue?

Subject: Re: Re: Re: [xsl] Namespace and key function issue?
From: "G. Ken Holman" <gkholman@xxxxxxxxxxxxxxxxxxxx>
Date: Tue, 12 Oct 2010 17:50:02 -0400
At 2010-10-12 16:19 -0500, russurquhart1@xxxxxxxxxxx wrote:
I can confirm the otherwise is being executed. I added the following:

                        <xsl:otherwise>
                        <xsl:element name="Emphasis">
                                                <xsl:attribute name="type">

<xsl:text>normal</xsl:text>
<!-- <xsl:value-of select="key ('style:find_style', @text:style-name)/style:text-properties/@fo:font-weight"/> -->
</xsl:attribute>
<xsl:value-of select="."/>
</xsl:element>
<xsl:apply-templates/>
</xsl:otherwise>
</xsl:choose>


And those elements were created with a normal @type attribute. When i commented out that line, and substituted the key function on the next line, i get a "" value for the type attribute.

Okay, I would next try to reproduce the key declaration in a (slow!) XPath address. Where you have the equivalent of:


 <xsl:otherwise>
  <Emphasis type="{key('style:find_style',@text:style-name)/
                   style:text-properties/@fo:font-weight}">
    <xsl:value-of select="."/>
  </Emphasis>
  <xsl:apply-templates/>
 </xsl:otherwise>

... change it to the following:

 <xsl:otherwise>
  <xsl:comment>
    text:style-name=<xsl:value-of select="@text:style-name"/>
    key=<xsl:value-of select="key('style:find_style',@text:style-name)"/>
    count=<xsl:value-of select="count(key('style:find_style',
                                      @text:style-name))"/>
    lookup=<xsl:value-of select="//style:style[@style:name=
                                       current()/@text:style-name]"/>
    count=<xsl:value-of select="count(//style:style[@style:name=
                                       current()/@text:style-name])"/>
  </xsl:comment>
  <Emphasis type="{key('style:find_style',@text:style-name)/
                   style:text-properties/@fo:font-weight}">
    <xsl:value-of select="."/>
  </Emphasis>
  <xsl:apply-templates/>
 </xsl:otherwise>

.... and inspect the result to see if that gives you any clues. I often resort to this kind of exposition to try and figure out what is going on.

Also, remember you can extract the XML from the ODF package and run your stylesheet externally to see if there are any differences in the results.

I hope this helps.

. . . . . . . . . Ken


-- XSLT/XQuery training: after http://XMLPrague.cz 2011-03-28/04-01 Vote for your XML training: http://www.CraneSoftwrights.com/s/i/ Crane Softwrights Ltd. http://www.CraneSoftwrights.com/s/ G. Ken Holman mailto:gkholman@xxxxxxxxxxxxxxxxxxxx Male Cancer Awareness Nov'07 http://www.CraneSoftwrights.com/s/bc Legal business disclaimers: http://www.CraneSoftwrights.com/legal

Current Thread