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

Re: xsl:sequence produces error I cant understand

Subject: Re: xsl:sequence produces error I cant understand
From: Jeni Tennison <jeni@xxxxxxxxxxxxxxxx>
Date: Sun, 10 Oct 2004 21:36:38 +0100
xsl sequence
Hi Kenneth,

> bash-2.05b$ java net.sf.saxon.Transform seq.xsl seq.xsl
> Error at if on line 15 of file:/C:/cygwin/home/zaphod/code/seq.xsl:
>   Cannot write an attribute when there is no open start tag
> Transformation failed: Run-time errors were reported

The result of an XSLT transformation (if there is a result) needs to
be the document node of a legal XML document (well, technically, a
legal data model instance). The XSLT processor automatically generates
the document node for you, if you don't tell it to make one
explicitly, and anything that you create in the transformation gets
added to that document node.

Now, document nodes can't have attributes: the only things you can add
to them are (as content) elements, text, comments, and PIs. It's an
error to try to add attributes to a document node; in fact, the only
kind of nodes you can add attributes to are element nodes.

The result of your template:

<xsl:template match="/">
  <xsl:for-each select="document('')/xsl:stylesheet/ns:root/ns:child">
    <xsl:if test="@attr = 'y'">
       <xsl:sequence select="@attr" />
    </xsl:if>
  </xsl:for-each>
</xsl:template>

is a sequence of attributes. The error is telling you that these
attributes can't be added to the document node that the XSLT processor
is creating automatically; to output them, you have to add them to an
element. If you do:

<xsl:template match="/">
  <result>
    <xsl:for-each select="document('')/xsl:stylesheet/ns:root/ns:child">
      <xsl:if test="@attr = 'y'">
         <xsl:sequence select="@attr" />
      </xsl:if>
    </xsl:for-each>
  </result>
</xsl:template>

then you won't get the error, but will get the result:

  <result attr="y" />

Cheers,

Jeni

---
Jeni Tennison
http://www.jenitennison.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.