xsl-list
[Top] [All Lists]

Re: Re: [xslt transform & grouping] Using the Muenchian Method?

2004-10-05 07:27:17
Listen,

I think that we're going back and forth here.


when this line is used:

<xsl:param name="filter" select="'food'"></xsl:param>

this error is generated:

"Exception Details: System.NullReferenceException: Object reference not set to an instance of an object."

but when i use

<xsl:param name="filter" select="food"></xsl:param>

there is no error.

OK ?

Now,

When everything works without errors, generated XML output is:

<Documents></Documents>

instead of the required elements.

THat is, some expression must be wrong.

Could you do following, please, and give me your result of the output file.
If your output generates only <Documents></Documents>, could you see how to make it generate the filtered elements instead?


Use this XSLT to genterate new XML file by using specified XML input file:

XSLT:

<?xml version="1.0" encoding="UTF-8"?>

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>

   <xsl:output method="xml" version="1.0" encoding="utf-8" indent="yes"/>

   <xsl:param name="filter" select="food"></xsl:param>

   <xsl:template match="Documents">

                <xsl:apply-templates select="*[(_at_)filter=$filter]"/>

                        <Documents>
<xsl:for-each select="Document[(_at_)filter=$filter]/Article[count(.|key('by-info',@info)[1])=1]">
                                        <Document name="{(_at_)info}">
                                                 <xsl:copy-of 
select="key('by-info',@info)[(_at_)filter=$filter]"/>
                                        </Document>
                                  </xsl:for-each>
                        </Documents>

                </xsl:template>

</xsl:stylesheet>


INPUT XML:

<?xml version="1.0" encoding="utf-8"?>

<Documents>
        <Document chapter="1" title="title 1" href="file1.xml" filter="food">
                <Article title="1.1" info="sub" filter="food"/>
                <Article title="1.2" info="main" filter="drink"/>
        </Document>
        <Document chapter="2" title="title 2" href="file2.xml" filter="food">
                <Article title="2.1" info="sub" filter="drink"/>
                <Article title="2.2" info="main" filter="food"/>
        </Document>
</Documents>







From: David Carlisle <davidc(_at_)nag(_dot_)co(_dot_)uk>
Reply-To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
To: xrow(_at_)msn(_dot_)com
CC: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: Re: [xsl] Re: [xslt transform & grouping] Using the Muenchian Method?
Date: Tue, 5 Oct 2004 15:08:46 +0100

[going back on list]
> As I said, I am unable to use

as posted I get:

$ saxon filter.xml filter.xsl

Error at xsl:for-each on line 17 of file:/c:/tmp/filter.xsl:
  Key 'by-info' has not been defined
Transformation failed: Run-time errors were reported

taking

    <xsl:key name="by-info" match="Article" use="@info"/>

from an earlier post and adding it after xsl:stylesheet, I get:

$ saxon filter.xml filter.xsl
<?xml version="1.0" encoding="utf-8"?>






<Documents>
   <Document name="sub">
      <Article title="1.1" info="sub" filter="food"/>
   </Document>
   <Document name="main">
      <Article title="2.2" info="main" filter="food"/>
   </Document>
</Documents>



That is, apart from droping your key definintion, the code you posted
works as expected. So if you really get

"Exception Details: System.NullReferenceException: Object reference not set
to an instance of an object." in myXslTrans.Transform(myXPathDoc, null,
writer, null);

looks like a bug in your processor (Microsoft .net implementation?)

David

________________________________________________________________________
This e-mail has been scanned for all viruses by Star. The
service is powered by MessageLabs. For more information on a proactive
anti-virus service working around the clock, around the globe, visit:
http://www.star.net.uk
________________________________________________________________________

--+------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--+--


_________________________________________________________________
Express yourself instantly with MSN Messenger! Download today - it's FREE! hthttp://messenger.msn.click-url.com/go/onm00200471ave/direct/01/



<Prev in Thread] Current Thread [Next in Thread>