IBM Support

IC88111: UNEXPECTED RESTART MIGHT BE TRIGGERED BY COMPILING STYLESHEET WITH NON-COMPLIANT <XSL:FOR-EACH> SELECT XPATH EXPRESSION

Subscribe

You can track all active APARs for this component.

 

APAR status

  • Closed as program error.

Error description

  • An unexpected restart might occur when compiling a
    style sheet with non-specification compliant "select"
    XPath expression and a call to dyn:evaluate() inside a
    <xsl:for-each> loop.
    
    An example of a construct with the problem is this:
    
    <xsl:variable name="key" select="'someString'"/>
    ...
    <xsl:for-each select="*/$key">
      <xsl:copy-of select="dyn:evaluate('.')"/>
    </xsl:for-each>
    
    The variable reference on the right hand side of the XPath "/"
    operator is forbidden by the spec.
    

Local fix

  • Correct the non-compliant style sheet.
    
    
    For the specific sample above this might be what is really
    wanted:
    
    <xsl:variable name="key" select="'someString'"/>
    ...
    <xsl:for-each select="*">
      <xsl:copy-of select="dyn:evaluate($key)"/>
    </xsl:for-each>
    

Problem summary

  • Affected is the use of "dyn:evaluate" EXSLT extension function
    inside a <xsl:for-each> loop.
    
    If the XPath expression in the loop's "select" attribute has
    errors, the appliance might restart while compiling the
    style sheet.
    

Problem conclusion

  • With the APAR fix, errors of a loop's "select" XPath expression
    are reported
    at compile time, in the case of "dyn:evaluate" being used inside
    the loop.
    
    Therefore the following will log a compile error:
    <xsl:template ...>
      <xsl:param name="para1"/>
    ...
      <xsl:for-each select="$para1/...">
    ...
         "dyn:evaluate(...)"
    
    
    Reason is that <xsl:param name="para1"/> is equivalent to
    <xsl:param name="para1" select="''"/> by the spec, which
    initializes
    "para1" as empty string. But left hand side of XPath "/" step
    expression must be a nodeset.
    
    Please use <xsl:param name="para1" select="/.."/> to
    initialize the default value to an empty nodeset in order to
    avoid the error in such a case.
    
    Fix is available in 3.8.2.17, 4.0.1.15, 4.0.2.11 and 5.0.0.5
    
    For a list of the latest fix packs available, please see:
    http://www-01.ibm.com/support/docview.wss?uid=swg21237631
    

Temporary fix

Comments

APAR Information

  • APAR number

    IC88111

  • Reported component name

    DATAPOWER

  • Reported component ID

    DP1234567

  • Reported release

    401

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt

  • Submitted date

    2012-11-09

  • Closed date

    2012-12-21

  • Last modified date

    2013-01-24

  • APAR is sysrouted FROM one or more of the following:

  • APAR is sysrouted TO one or more of the following:

Fix information

  • Fixed component name

    DATAPOWER

  • Fixed component ID

    DP1234567

Applicable component levels

  • R382 PSY

       UP

  • R401 PSY

       UP

  • R402 PSY

       UP

  • R500 PSY

       UP

[{"Business Unit":{"code":"BU059","label":"IBM Software w\/o TPS"},"Product":{"code":"SS9H2Y","label":"IBM DataPower Gateway"},"Component":"","ARM Category":[],"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"4.0.1","Edition":"","Line of Business":{"code":"LOB45","label":"Automation"}}]

Document Information

Modified date:
11 February 2022