XSLT a little confused -
having little problem xslt.. think may going wrong way.. trying display client name sku of items special 1 status in line... client special 2 items etc. part 2(which haven't started) items without status themselves
so xml file output be
joe prod1 //special1 joe prod3 //special2 joe prod2 //no status joe prod4 //no status joe prod5 //no status john smith prod6 prod8 //special1 john smith prod7 //no status john smith prod9 //no status john smith prod10 //no status
it kind of works @ moment problem if there no special1 or special2 can't figure out how create not print client name..
and i'm not sure how display ones no status afterwards either - help much appreciated!
xml:
<customer> <name>joe</name> <order> <item> <sku>prod1</sku> <status>special1</status> </item> <item> <sku>prod2</sku> </item> <item> <sku>prod3</sku> <status>special2</status> </item> <item> <sku>prod4</sku> </item> <item> <sku>prod5</sku> </item> </order> </customer> <customer <name>john smith</name> <order> <item> <sku>prod6</sku> <status>special1</status> </item> <item> <sku>prod7</sku> </item> <item> <sku>prod8</sku> <status>special1</status> </item> <item> <sku>prod9</sku> </item> <item> <sku>prod10</sku> </item> </order>
xslt:
<!doctype xsl:stylesheet[ <!entity nl "
"> ]>
<xsl:template match="customer"> <xsl:value-of select="name" /><xsl:apply-templates select="order/item[status='special1']" /><xsl:text>&nl;</xsl:text> <xsl:value-of select="name" /><xsl:apply-templates select="order/item[status='special2']" /><xsl:text>&nl;</xsl:text> </xsl:template> <xsl:template match="item[status='special1']"><xsl:text> </xsl:text><xsl:value-of select="sku" /></xsl:template> <xsl:template match="item[status=special2']"><xsl:text> </xsl:text><xsl:value-of select="sku" /></xsl:template> <xsl:template match="text()"/>
your simplest alternative xsl:if
<xsl:template match="customer"> <xsl:if test="order/item[status='special1']"> <xsl:value-of select="name" /><xsl:apply-templates select="order/item[status='special1']" /><xsl:text>&nl;</xsl:text> </xsl:if> <xsl:if test="order/item[status='special2']"> <xsl:value-of select="name" /><xsl:apply-templates select="order/item[status='special2']" /><xsl:text>&nl;</xsl:text> </xsl:if> </xsl:template>
xslt
No comments:
Post a Comment