You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@xalan.apache.org by bu...@apache.org on 2002/09/17 10:37:10 UTC
DO NOT REPLY [Bug 12691] -
Problem with key-function.
DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://nagoya.apache.org/bugzilla/show_bug.cgi?id=12691>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND
INSERTED IN THE BUG DATABASE.
http://nagoya.apache.org/bugzilla/show_bug.cgi?id=12691
Problem with key-function.
------- Additional Comments From kenneth@gdpm.no 2002-09-17 08:37 -------
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet xmlns:x="http://www.xtractor.com"
xmlns:par="http://www.xtractor.com/party"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
xmlns:xalan="http://xml.apache.org/xalan" exclude-result-prefixes="xalan">
<xsl:output method="xml" encoding="ISO-8859-1" omit-xml-
declaration="yes"/>
<!-- Binder key -->
<xsl:key name="binder.key" match="par:party" use="@x:binder.key"/>
<xsl:template match="/">
<!-- Start XPath query processing -->
<xsl:call-template name="x:binder">
<xsl:with-param name="x:set">
<par:party x:binder.key="1"
xmlns:par="http://www.xtractor.com/party">
<par:party.id>1</par:party.id>
<par:person>
<par:name>
<par:first.name>First
1</par:first.name>
<par:middle.name>Middle
1</par:middle.name>
<par:last.name>Last
1</par:last.name>
</par:name>
</par:person>
<par:postal.address>
<par:postal.code>555</par:postal.code>
<par:city>City 1</par:city>
<par:address.line>Street
1</par:address.line>
</par:postal.address>
</par:party>
<par:party x:binder.key="2"
xmlns:par="http://www.xtractor.com/party">
<par:party.id>2</par:party.id>
<par:person>
<par:name>
<par:first.name>First
2</par:first.name>
<par:middle.name>Midle
2</par:middle.name>
<par:last.name>Last
2</par:last.name>
</par:name>
</par:person>
<par:postal.address>
<par:postal.code>666</par:postal.code>
<par:city>City 2</par:city>
<par:address.line>Street
2</par:address.line>
</par:postal.address>
</par:party>
<par:party x:binder.key="1"
xmlns:par="http://www.xtractor.com/party">
<par:party.id>1</par:party.id>
<par:person>
<par:name>
<par:first.name>First
1</par:first.name>
<par:middle.name>Middle
1</par:middle.name>
<par:last.name>Last
1</par:last.name>
</par:name>
</par:person>
<par:postal.address>
<par:country.code>NO</par:country.code>
<par:postal.code>777</par:postal.code>
<par:address.line>Street
1</par:address.line>
</par:postal.address>
</par:party>
</xsl:with-param>
</xsl:call-template>
</xsl:template>
<xsl:template name="x:binder">
<xsl:param name="x:set"/>
<xsl:variable name="bound">
<xsl:for-each select="xalan:distinct
($x:set/*/@x:binder.key)">
<xsl:variable name="binder.key" select="."/>
<x:bound>
<xsl:for-each select="$x:set">
<!--xsl:copy-of select="key
('binder.key',$binder.key)"/-->
<xsl:copy-of select="*
[@x:binder.key=$binder.key]"/>
</xsl:for-each>
</x:bound>
</xsl:for-each>
</xsl:variable>
<xsl:copy-of select="$bound"/>
</xsl:template>
</xsl:stylesheet>