finding the correct rows
Hi,
I have table with rows as specified below. The main key is <TL1Position> value and <TL1Commands> value. If two rows contain same <TL1Position> value but any one containing the value for <TL1Commands cmdType = "Create"> as M, then that <TL1Attribute> value should be shown.
<rattrow attrfield = "1">
<rattcell><TL1Instance>0001</TL1Instance></rattcell>
<rattcell><TL1Position>1</TL1Position></rattcell>
<rattcell><TL1Attribute attrType = "Positional">AID</TL1Attribute></rattcell>
<rattcell><TL1Commands cmdType = "Create">M</TL1Commands></rattcell>
<rattcell><TL1Commands cmdType = "Modify">Mgr</TL1Commands></rattcell>
<rattcell><TL1Commands cmdType = "Delete">N</TL1Commands></rattcell>
<rattcell><TL1Commands cmdType = "Remove">M</TL1Commands></rattcell>
<rattcell><TL1Commands cmdType = "Restore">M</TL1Commands></rattcell>
<rattcell><TL1Commands cmdType = "RetrieveIn">N</TL1Commands></rattcell>
<rattcell><TL1Commands cmdType = "RetrieveOut">M</TL1Commands></rattcell>
</rattrow>
<rattrow attrfield = "1">
<rattcell><TL1Instance>0001a</TL1Instance></rattcell>
<rattcell><TL1Position>1</TL1Position></rattcell>
<rattcell><TL1Attribute attrType = "Positional">AID</TL1Attribute></rattcell>
<rattcell><TL1Commands cmdType = "Create">N</TL1Commands></rattcell>
<rattcell><TL1Commands cmdType = "Modify">N</TL1Commands></rattcell>
<rattcell><TL1Commands cmdType = "Delete">N</TL1Commands></rattcell>
<rattcell><TL1Commands cmdType = "Remove">N</TL1Commands></rattcell>
<rattcell><TL1Commands cmdType = "Restore">N</TL1Commands></rattcell>
<rattcell><TL1Commands cmdType = "RetrieveIn">Ogr</TL1Commands></rattcell>
<rattcell><TL1Commands cmdType = "RetrieveOut">N</TL1Commands></rattcell>
</rattrow>
<rattrow attrfield = "1">
<rattcell><TL1Instance>0002</TL1Instance></rattcell>
<rattcell><TL1Position>2</TL1Position></rattcell>
<rattcell><TL1Attribute attrType = "Positional">AID</TL1Attribute></rattcell>
<rattcell><TL1Commands cmdType = "Create">N</TL1Commands></rattcell>
<rattcell><TL1Commands cmdType = "Modify">Mgr</TL1Commands></rattcell>
<rattcell><TL1Commands cmdType = "Delete">M</TL1Commands></rattcell>
<rattcell><TL1Commands cmdType = "Remove">M</TL1Commands></rattcell>
<rattcell><TL1Commands cmdType = "Restore">M</TL1Commands></rattcell>
<rattcell><TL1Commands cmdType = "RetrieveIn">N</TL1Commands></rattcell>
<rattcell><TL1Commands cmdType = "RetrieveOut">M</TL1Commands></rattcell>
</rattrow>
<rattrow attrfield = "1">
<rattcell><TL1Instance>0002a</TL1Instance></rattcell>
<rattcell><TL1Position>2</TL1Position></rattcell>
<rattcell><TL1Attribute attrType = "Positional">AID</TL1Attribute></rattcell>
<rattcell><TL1Commands cmdType = "Create">N</TL1Commands></rattcell>
<rattcell><TL1Commands cmdType = "Modify">N</TL1Commands></rattcell>
<rattcell><TL1Commands cmdType = "Delete">N</TL1Commands></rattcell>
<rattcell><TL1Commands cmdType = "Remove">N</TL1Commands></rattcell>
<rattcell><TL1Commands cmdType = "Restore">N</TL1Commands></rattcell>
<rattcell><TL1Commands cmdType = "RetrieveIn">Ogr</TL1Commands></rattcell>
<rattcell><TL1Commands cmdType = "RetrieveOut">N</TL1Commands></rattcell>
</rattrow>
XSL:
<xsl:template match="rattrow[.//TL1Attribute]" mode="positional">
<xsl:param name="tl1c"/>
<xsl:variable name="currRow" select="."/>
<xsl:variable name="check4">
<xsl:for-each select="$currRow">
<xsl:choose>
<xsl:when test="$tl1c = 'Retrieve'">
<xsl:for-each
select=".[matches($currRow//TL1Commands[@cmdType='RetrieveIn'], '^[O|Y].*$')]">
<xsl:text>[<</xsl:text>
<xsl:value-of select=".//TL1Attribute"/>
<xsl:text>>]</xsl:text>
</xsl:for-each>
<xsl:for-each
select=".[matches($currRow//TL1Commands[@cmdType='RetrieveIn'], '^M.*$')]">
<xsl:text><</xsl:text>
<xsl:value-of select="$currRow//TL1Attribute"/>
<xsl:text>></xsl:text>
</xsl:for-each>
</xsl:when>
<xsl:when test="$tl1c = 'Read'">
<xsl:for-each
select=".[matches($currRow//TL1Commands[@cmdType='ReadIn'], '^[O|Y].*$')]">
<xsl:text>[<</xsl:text>
<xsl:value-of select="$currRow//TL1Attribute"/>
<xsl:text>>]</xsl:text>
</xsl:for-each>
<xsl:for-each
select=".[matches($currRow//TL1Commands[@cmdType='ReadIn'], '^M.*$')]">
<xsl:text><</xsl:text>
<xsl:value-of select="$currRow//TL1Attribute"/>
<xsl:text>></xsl:text>
</xsl:for-each>
</xsl:when>
<xsl:otherwise>
<xsl:for-each
select=".[matches($currRow//TL1Commands[@cmdType=$tl1c], '^[O|Y].*$')]">
<xsl:text>[<</xsl:text>
<xsl:value-of select="$currRow//TL1Attribute"/>
<xsl:text>>]</xsl:text>
</xsl:for-each>
<xsl:for-each
select=".[matches($currRow//TL1Commands[@cmdType=$tl1c], '^M.*$')]">
<xsl:text><</xsl:text>
<xsl:value-of select="$currRow//TL1Attribute"/>
<xsl:text>></xsl:text>
</xsl:for-each>
<xsl:text>,</xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</xsl:variable>
<xsl:value-of select="$check4"/>
</xsl:template>
__________________
Rummy
|