有没有办法解决以下问题:
您可以有两列,一列标题为“签名”,另一列为“帖子”。但是只显示实际使用的是什么? (如果您有400个客户,那么签名的人会<th>
说出叹息等,就好像他们通过帖子收到的那样,PostID和其他<th>
会出现在表格中。
我使用的是这种方法:
<th> Sign Via</th>
<th> Sign Name</th>
<th> Sign Address</th>
<th> Sign City</th>
<xsl:for-each select="delivery/sign">
<td><xsl:value-of select="SignVia"/></td>
<td><xsl:value-of select="SignName"/></td>
<td><xsl:value-of select="SignAddress"/></td>
<td><xsl:value-of select="SignCity"/></td></xsl:for-each>
<th> Post ID</th>
<th> Post Date</th>
<th> Post Address</th>
<xsl:for-each select="delivery/post">
<td>
<xsl:value-of select="postID"/>
</td>
<td>
<xsl:value-of select="postDate"/>
</td>
<td>
<xsl:value-of select="postAddress"/>
</td>
</xsl:for-each>
我试图添加一个XSL select语句:
<xsl:choose>
<xsl:when test="PostID">
<td>
<xsl:value-of select="postID"/>
</td>
<td>
<xsl:value-of select="postDate"/>
</td>
<td>
<xsl:value-of select="postAddress"/>
</td>
</xsl:when>
<xsl:otherwise>
<td><xsl:value-of select="SignVia"/></td>
<td><xsl:value-of select="SignName"/></td>
<td><xsl:value-of select="SignAddress"/></td>
<td><xsl:value-of select="SignCity"/></td>
</xsl:for-each>
</xsl:otherwise>
我对XSL和XML非常陌生,并使用W3教程让我完成了每个阶段,但是我想我错过了一些东西,因为我在使用时无法找到方法
我希望最终结果会有类似下面的内容(因为我是新手,我无法发布图片)。 预期结果:
一张桌子。 表格包含有关产品的大量信息,最后缩小到客户如何收到此项目。 表格将包括客户详细信息(地址等),订单信息和产品规格(所有这些都已成功输入)。但是,当我上传它时,它显示信息加上额外的'标题'。
例如: 客户1已经签署了他们的项目,它出现'signvia signname'等。但也在它上面附着'postID,postDate',即使它们是空的。
提前干杯。
编辑: XSL的剩余部分:
<body>
<th> Customer Name</th>
<th> Number</th>
<th>Address</th>
<xsl:for-each select="customer">
<tr style="color:black; background: #eee;">
<td><xsl:value-of select="CustomerName"/></td>
<td><xsl:value-of select="Number"/></td>
<td><xsl:value-of select="Address"/></td>
</tr>
<th> Post ID</th>
<th>Post Date</th>
<th> Post Address</th>
<xsl:choose>
<xsl:when test="PostID">
<td>
<xsl:value-of select="postID"/>
</td>
<td>
<xsl:value-of select="postDate"/>
</td>
<td>
<xsl:value-of select="postAddress"/>
</td>
</xsl:when>
<xsl:otherwise>
<th> Sign Name</th>
<th> Sign Address</th>
<th> Sign City</th>
<td><xsl:value-of select="SignName"/></td>
<td><xsl:value-of select="SignAddress"/></td>
<td><xsl:value-of select="SignCity"/></td>
</xsl:for-each>
</xsl:otherwise>
<th> ProductN</th>
<th> Quan</th>
<th> Unit </th>
<th> Disc </th>
<xsl:for-each select="productStock/product">
<td><xsl:value-of select="ProductN"/></td>
<td><xsl:value-of select="Quan"/></td>
<td><xsl:value-of select="Amoun"/></td>
<td><xsl:value-of select="Reas"/></td>
</xsl:for-each>
</xsl:for-each>
</xsl:for-each>
</xsl:for-each>
</xsl:for-each>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
答案 0 :(得分:0)
嗯,我不是Xml大师,而是我感觉你的程序流程错误。试试这个:
<xsl:if test="customer/PostID">
<xsl:for-each select="delivery/post">
<td>
<xsl:value-of select="postID"/>
</td>
<td>
<xsl:value-of select="postDate"/>
</td>
<td>
<xsl:value-of select="postAddress"/>
</td>
</xsl:for-each>
</xsl:if>
<xsl:if test="not(customer/PostID)">
<xsl:for-each select="delivery/sign">
<td><xsl:value-of select="SignVia"/></td>
<td><xsl:value-of select="SignName"/></td>
<td><xsl:value-of select="SignAddress"/></td>
<td><xsl:value-of select="SignCity"/></td>
</xsl:for-each>
</xsl:if>