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

Re: Cannot process a result tree fragment as a node-se

Subject: Re: Cannot process a result tree fragment as a node-set under XSLT 1.0 - My alternative don´t function
From: "Alejandro" <alexcontini@xxxxxxxx>
Date: Sat, 12 Apr 2008 18:50:14 +0100
Re:  Cannot process a result tree fragment as a node-se
Hi Michael,

Thank you so much for the quick response.

Michael >>However, it's not clear to me that you need to create an RTF in the first place. Why not define $filter as
<xsl:variable name="filter" select="//RecursoEx1[($option=1 and F_FIN=$date1 and contains(TITULO,'o')) or ($option=2 and F_FIN=$date2)]"/>


I want to count the RecursoEx1 elements:
<p>Number: <xsl:value-of select="count(exsl:node-set($filter)/RecursoEx1)"/></p> CORRECT!


I want to iterate over the RecursoEx1 elements:
   <xsl:for-each select="exsl:node-set($filter)/RecursoEx1"> CORRECT !

I use xsl:copy-of and exsl:node-set because to error "Cannot process a result tree fragment as a node-set under XSLT 1.0" if i code :

<xsl:variable name="filtro">
       <xsl:choose>
           <xsl:when test="$option=1">
               <xsl:copy-of
select="//RecursoEx1[F_FIN=$date1]"/></xsl:when>
           <xsl:otherwise>
               <xsl:copy-of
select="//RecursoEx1[F_FIN=$date2]"/></xsl:otherwise>
       </xsl:choose>
   </xsl:variable>

<p>Number: <xsl:value-of select="$filter"/></p>

   <xsl:for-each select="$filter">
        <p><xsl:value-of select="TITULO"/></p>
   </xsl:for-each>


and i don4t know if exits another posibility. Exists??


The variable "option" is to received from one formulary, but there are more and then the "filter" will be dynamic.

How can i do to construct the filter dynamic? For example, i receive one varible named "title" from the formulary with the value: "John Martin Car Monday" and i like to enumerate the RecursoEx1 elements that meet with this condition: TITLE=John or TITLE=Martin or TITLE=Car or TITLE=Monday.

or title variable is Apple Pencil, ..... then the condition will be TITLE=Apple or TITLE=Pencil

i don4t know how may parameters i will receive in advance..

Thanks again Michael,

Alexander


----- Mensaje original ----- De: "Michael Kay" <mike@xxxxxxxxxxxx>
Para: <xsl-list@xxxxxxxxxxxxxxxxxxxxxx>
Enviado: sabado, 12 de abril de 2008 14:03
Asunto: RE: Cannot process a result tree fragment as a node-set under XSLT 1.0 - My alternative don4t function



The node-set returned by the exsl:node-set() function will always contain a single (document or root) node. Perhaps you wanted its children: exsl:node-set()/*.

However, it's not clear to me that you need to create an RTF in the first
place. Why not define $filter as

<xsl:variable name="filter"
  select="//RecursoEx1[($option=1 and F_FIN=$date1 and
contains(TITULO,'o'))
                       or ($option=2 and F_FIN=$date2)]"/>

Note also, that horrible bit of disable-output-escaping can be avoided by
setting the doctype-system and doctype-public attributes on xsl:output.

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


-----Original Message-----
From: Alejandro [mailto:alexcontini@xxxxxxxx]
Sent: 12 April 2008 13:05
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Subject:  Cannot process a result tree fragment as a
node-set under XSLT 1.0 - My alternative don4t function

Hello, i want to recover any records in function of one
variable (option in this case), and i don4t know to do it. I
want to print the TITULO element the those records.
Can you help me, please?

Cheers,
Alexander


********************************* XML *************************************

<?xml version="1.0"?>

<List>
<RecursoEx1>
<TITULO>Sara Baras</TITULO>
<F_INICIO>20080125000000</F_INICIO>
<F_FIN>20080211000000</F_FIN>
</RecursoEx1>

<RecursoEx1>
<TITULO>Exposicion de pintura</TITULO>
<F_INICIO>20080201000000</F_INICIO>
<F_FIN>20080211000000</F_FIN>
</RecursoEx1>

<RecursoEx1>
<TITULO>Inaguracion de ...</TITULO>
<F_INICIO>20080205000000</F_INICIO>
<F_FIN></F_FIN>
</RecursoEx1>

<RecursoEx1>
<TITULO>Clausura de ..</TITULO>
<F_INICIO>20080101000000</F_INICIO>
<F_FIN>20080205000000</F_FIN>
</RecursoEx1>

</List>


********************** XSL **********************


<?xml version="1.0" encoding="ISO-8859-1"?> <xsl:stylesheet
xmlns:i18n="http://apache.org/cocoon/i18n/2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:exsl="http://exslt.org/common"
    extension-element-prefixes="exsl" version="1.0">

<xsl:output method="html" media-type="text/html;charset=iso-8859-1"
indent="yes" encoding="ISO-8859-1" omit-xml-declaration="yes" />

<xsl:variable name="date1" select="20080205000000"></xsl:variable>
<xsl:variable name="date2" select="20080211000000"></xsl:variable>
<xsl:variable name="option" select="1"></xsl:variable>

<xsl:template match="/">

<xsl:text disable-output-escaping="yes"><![CDATA[<!DOCTYPE
html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">]]></xsl:text>

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es">

<head>
 <title>Gabinete of Prensa</title>
    <meta http-equiv="Content-Type" content="text/html;
charset=iso-8859-1"
/>
</head>

<body>

    <xsl:variable name="filter">
        <xsl:choose>
            <xsl:when test="$option=1">
                <xsl:copy-of
select="//RecursoEx1[F_FIN=$date1 and
contains(TITULO,'o')]"/></xsl:when>
            <xsl:otherwise>
                <xsl:copy-of
select="//RecursoEx1[F_FIN=$date2]"/></xsl:otherwise>
        </xsl:choose>
    </xsl:variable>





 <p>Number: <xsl:value-of
select="count(exsl:node-set($filter))"/></p> <!-- DON'T FUNCTION -->

 <xsl:for-each select="exsl:node-set($filter)">
     <p><xsl:value-of
select="exsl:node-set($filter)/TITULO"/></p>      <!--
DON'T FUNCTION -->
</xsl:for-each>

</body>
</html>
</xsl:template>

</xsl:stylesheet>

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.