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>