Subject: [xsl] Re: How to compare the attributes of two elements to ensure that they are equal From: "Dimitre Novatchev" <dnovatchev@xxxxxxxxx> Date: Wed, 29 Oct 2003 09:53:52 +0100 |
> What is the best way to compare two elements in terms of their > attributes, and the attribute values? I need to ensure that each > element has the same number of attributes, the same attribute names and > the same attribute values. Here's a simple way to do this (the separators must be well chosen not to be a substring of the values of the attributes): <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="text"/> <xsl:template match="x"> attributeEq(t, u) = <xsl:text/> <xsl:call-template name="compAttributes"> <xsl:with-param name="pAtt1" select="t/@*"/> <xsl:with-param name="pAtt2" select="u/@*"/> </xsl:call-template> attributeEq(t, v) = <xsl:text/> <xsl:call-template name="compAttributes"> <xsl:with-param name="pAtt1" select="t/@*"/> <xsl:with-param name="pAtt2" select="v/@*"/> </xsl:call-template> </xsl:template> <xsl:template name="compAttributes"> <xsl:param name="pAtt1" select="/.."/> <xsl:param name="pAtt2" select="/.."/> <xsl:choose> <xsl:when test="count($pAtt1) = count($pAtt2)"> <xsl:variable name="v1"> <xsl:for-each select="$pAtt1"> <xsl:sort select="name()"/> <xsl:value-of select="concat('N', name(), 'N', 'V', ., 'V')"/> </xsl:for-each> </xsl:variable> <xsl:variable name="v2"> <xsl:for-each select="$pAtt2"> <xsl:sort select="name()"/> <xsl:value-of select="concat('N', name(), 'N', 'V', ., 'V')"/> </xsl:for-each> </xsl:variable> <xsl:value-of select="number($v1 = $v2)"/> </xsl:when> <xsl:otherwise>0</xsl:otherwise> </xsl:choose> </xsl:template> </xsl:stylesheet> When this thransformation is applied on the following source.xml: <x> <t a="xxx" b="yyy" c="zzz"/> <u b="xxxT" a="yyy" c="zzz"/> <v c="zzz" b="yyy" a="xxx"/> </x> the correct result is produced: attributeEq(t, u) = 0 attributeEq(t, v) = 1 ===== Cheers, Dimitre Novatchev. http://fxsl.sourceforge.net/ -- the home of FXSL XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] How to compare the attrib, Michael Kay | Thread | Re: [xsl] How to compare the attrib, Mukul Gandhi |
[xsl] xml and xslt to html attribut, Michael Olszynski | Date | RE: [xsl] xml and xslt to html attr, Jarno . Elovirta |
Month |