<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://www.w3.org/Bugs/Public/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4"
          urlbase="https://www.w3.org/Bugs/Public/"
          
          maintainer="sysbot+bugzilla@w3.org"
>

    <bug>
          <bug_id>10425</bug_id>
          
          <creation_ts>2010-08-25 08:22:53 +0000</creation_ts>
          <short_desc>[XSLT 2.1] snapshot() applied to attribute nodes</short_desc>
          <delta_ts>2014-05-15 14:00:43 +0000</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>XPath / XQuery / XSLT</product>
          <component>XSLT 3.0</component>
          <version>Working drafts</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Windows NT</op_sys>
          <bug_status>CLOSED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Kay">mike</reporter>
          <assigned_to name="Michael Kay">mike</assigned_to>
          
          
          <qa_contact name="Mailing list for public feedback on specs from XSL and XML Query WGs">public-qt-comments</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>37827</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Kay">mike</who>
    <bug_when>2010-08-25 08:22:53 +0000</bug_when>
    <thetext>The algorithm given in section 18.6 of the XSLT 2.1 WD to define the behaviour of the snapshot() function is incorrect in the case where the supplied node is an attribute or namespace node. The expression

&lt;xsl:sequence select=&quot;$node/descendant-or-self::node()[$level]&quot;/&gt;

which terminates the recursion is assuming that the original node is a descendant of the root, which is not the case if it is an attribute or namespace.

The fix for this isn&apos;t easy, because when the original node is an attribute or namespace, all the attributes and namespaces of its parent element will be copied, so the only way we can find the right one is by name. 

One solution might be to build a path to the node and then evaluate that path using xsl:evaluate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>49387</commentid>
    <comment_count>1</comment_count>
    <who name="Michael Kay">mike</who>
    <bug_when>2011-06-09 16:33:32 +0000</bug_when>
    <thetext>I have redesigned the algorithm for the snapshot() function and I believe the new code solves this problem. I&apos;m therefore recording this as fixed.</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>