[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

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


Subject: Re: [xsl] Re: [xslt transform & grouping] Using the Muenchian Method?
From: "Werner, Wolfgang" <mail@xxxxxxxxxxxxxxxxxxx>
Date: Tue, 05 Oct 2004 16:52:23 +0200

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hi Michael,

as David pointed out before,
	<xsl:param name="filter" select="food"></xsl:param>
does not set the parameter named filter to the String 'food'.
I used
	<xsl:param name='filter'>food</xsl:param>
with xsltproc and it gives the following result (I removed some whitespace):
<?xml version="1.0" encoding="utf-8"?>
~ <Documents>
~  <Document name="sub"/>
~  <Document name="main"/>
~  <Document name="sub"/>
~  <Document name="main"/>
</Documents>

which is not what you hope to get, but it should help you to debug your
XPath.

Wolfgang

Michael PG wrote:

| 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="*[@filter=$filter]"/>
|
|             <Documents>
|                  <xsl:for-each
|
select="Document[@filter=$filter]/Article[count(.|key('by-info',@info)[1])=1]">

|
|                     <Document name="{@info}">
|                          <xsl:copy-of
| select="key('by-info',@info)[@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@xxxxxxxxx>
|> Reply-To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
|> To: xrow@xxxxxxx
|> CC: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
|> 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
|> ________________________________________________________________________
|>
|>
|
| _________________________________________________________________
| Express yourself instantly with MSN Messenger! Download today - it's
| FREE! hthttp://messenger.msn.click-url.com/go/onm00200471ave/direct/01/
|
|
|
|

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.4 (Cygwin)
Comment: Using GnuPG with Thunderbird - http://enigmail.mozdev.org

iD8DBQFBYrUmqjaicDyx8o8RAs6NAJwI8TI63GOU/1HU/0Mr7cRTm1MJXgCfTVKo
/Q/d/cBfgkXPsL3f8DJTVr0=
=zlKj
-----END PGP SIGNATURE-----

Current Thread
Keywords