[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

An xsl:number problem

Subject: An xsl:number problem
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Thu, 10 Jul 2008 09:57:25 +0100
 An xsl:number problem
I've raised a bug report against the spec on this one, but I would be
interested to know how various processors handle it. Please try it and
report the results. The bug report is at 

http://www.w3.org/Bugs/Public/show_bug.cgi?id=5849

Source document:

<?xml version="1.0"?>
<doc>
  <a mark="true"/>
  <a/>
  <a/>
  <a/>
  <a mark="true"/>
  <a/>
  <a/>
  <a/>   
</doc>

Stylesheet:

<?xml version="1.0"?> 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="2.0">
<xsl:output indent="yes"/>

<xsl:template match="*">
  <xsl:copy>
    <xsl:copy-of select="@*"/>
    <xsl:attribute name="nr">
      <xsl:number from="a[@mark='true']" count="a" level="any"/>
    </xsl:attribute>
    <xsl:apply-templates/>
  </xsl:copy>
</xsl:template>
 
</xsl:stylesheet>

The output of Saxon 9.1 and other recent releases is clearly wrong, and is
being fixed by a patch. After correction, the output is still strange, but I
believe it is correct according to the spec:

<?xml version="1.0" encoding="UTF-8"?>
<doc nr="">
  <a mark="true" nr=""/>
  <a nr="2"/>
  <a nr="3"/>
  <a nr="4"/>
  <a mark="true" nr="5"/>
  <a nr="2"/>
  <a nr="3"/>
  <a nr="4"/>   
</doc>

This is the Saxon 6.5.5 output:

<?xml version="1.0" encoding="utf-8"?>
<doc nr="">  
   <a mark="true" nr="1"/>  
   <a nr="1"/>  
   <a nr="2"/> 
   <a nr="3"/  
   <a mark="true" nr="4"/>  
   <a nr="1"/>  
   <a nr="2"/> 
   <a nr="3"/>   
</doc>

The 1.0 spec is so terse that it's quite hard to decide whether this is
correct or not, but it's certainly not intuitive.

I would be interested to know what other XSLT 1.0 or 2.0 processors do with
this one.

I think the intuitively correct result is:

<?xml version="1.0" encoding="UTF-8"?>
<doc nr="">
  <a mark="true" nr="1"/>
  <a nr="2"/>
  <a nr="3"/>
  <a nr="4"/>
  <a mark="true" nr="1"/>
  <a nr="2"/>
  <a nr="3"/>
  <a nr="4"/>   
</doc>

Do you agree?

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

Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.