XSLT遇到了一些问题..我想我可能会完全错误的解决这个问题.. 尝试在一行中显示具有特殊1状态的项目SKU的客户名称.. 。 然后用特殊的2项客户等则第2部分(我还没有开始)无状态的项目由自己XSLT有点困惑
所以这个XML文件的输出将
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
这种方法目前有效,但问题是,如果没有special1或special2,我不知道如何使它不打印客户的名字..
我不知道如何显示没有状态之后的任何 - 任何帮助将不胜感激!
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()"/>
如果我是你,我会尝试做'嵌套的'和''元素循环。 –
2013-02-17 05:27:48
我也试过这种方式..做一个为每个通过客户..显示名称,然后通过特殊状态的foreach,但我不明白如何不显示客户名称这样做,如果有没有特殊的状态项目! – Keiiz 2013-02-17 06:06:34
好吧怎么样我只是使用一个if语句..叹了一个漫长的一天..我发誓我遇到了这样做的问题,这样做之前!但到目前为止这么好..感谢让我回到轨道上Jacob – Keiiz 2013-02-17 06:12:59