|
[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: Re: [xslt transform & grouping] Using the Muenchia
-----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: 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-----
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|

Cart








