|
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
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.
| 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 |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| RE: [xsl] Re: [xslt transform & gro, Michael Kay | Thread | Re: [xsl] Re: [xslt transform & gro, David Carlisle |
| Re: [xsl] Re: [xslt transform & gro, Ragulf Pickaxe | Date | [xsl] using ENTITYRESOLVER with Xal, Al |
| Month |