<xsl:for-each select="A">
<tr>
<xsl:choose>
<xsl:when test="@a='True'">
<td bgcolor="#FFFF00"><xsl:value-of select="../@e"/></td>
<td bgcolor="#FFFF00"><xsl:value-of select="../@b"/></td>
<td bgcolor="#999999"><xsl:value-of select="@be"/></td>
<xsl:for-each select="T">
<td bgcolor="#FFFF00"><xsl:value-of select="@o"/></td>
</xsl:for-each>
</xsl:when>
<xsl:otherwise>
<td bgcolor="#999999"><xsl:value-of select="../@e"/></td>
<td bgcolor="#999999"><xsl:value-of select="../@b"/></td>
<td bgcolor="#999999"><xsl:value-of select="@be"/></td>
<xsl:for-each select="T">
<td bgcolor="#999999"><xsl:value-of select="@o"/></td>
</xsl:for-each>
</xsl:otherwise>
</xsl:choose>
</tr>
我的XSLT的這部分做一個表中的行。
的列是../@e,../@b,@be,@o
對於每個A元素,我在表中創建一個行。
第3列的單元格有白色背景顏色無論如何。
所以: 首先前兩列未滿並且只有第一個兩列的第一個單元格必須已滿。所有其他的細胞都是空的。
但是如果任何A元素中至少有一個屬性爲真,則前2列(1ST行)的單元格必須是黃色的,以表明存在@i是真的。
請幫我弄明白。最近幾天它變成了一場噩夢。 預先感謝您。
完整的XSLT轉換是這樣的:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" encoding="UTF-8" doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"/>
<!-- param values may be changed during the XSL Transformation -->
<xsl:param name="shared_item_name"> Animal </xsl:param>
<xsl:param name="description"> Birth </xsl:param>
<xsl:param name="properties"> Kind </xsl:param>
<xsl:template match="/">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title>Problem</title>
</head>
<body>
<xsl:apply-templates/>
</body>
</html>
</xsl:template>
<xsl:template match="AA">
<table border="1" cellspacing="0">
<tr bgcolor="#9acd32">
<th> <xsl:value-of select="$shared_item_name" /> </th>
<th> <xsl:value-of select="$description" /> </th>
<th> <xsl:value-of select="$properties" /> </th>
<xsl:for-each select="IRO[position()=1]/P[position()=1]/T">
<th> <xsl:value-of select="@s" /> </th>
</xsl:for-each>
</tr>
<xsl:for-each select="AI">
<xsl:for-each select="A">
<tr>
<xsl:if test="position()=1">
<td><xsl:value-of select="../@e"/></td>
<td bgcolor="#999999"><xsl:value-of select="../@b"/></td>
</xsl:if>
<xsl:if test="not(position()=1)">
<td></td>
<td></td>
</xsl:if>
<td bgcolor="#999999"><xsl:value-of select="@be"/></td>
<xsl:choose>
<xsl:when test="@a='True'">
<xsl:for-each select="T">
<td bgcolor="#FFFF00"><xsl:value-of select="@o"/></td>
</xsl:for-each>
</xsl:when>
<xsl:otherwise>
<xsl:for-each select="T">
<td bgcolor="#999999"><xsl:value-of select="@o"/></td>
</xsl:for-each>
</xsl:otherwise>
</xsl:choose>
</tr>
</xsl:for-each>
<xsl:for-each select="AI">
<xsl:for-each select="A">
<tr>
<xsl:choose>
<xsl:when test="@i='True'">
<td bgcolor="#FFFF00"><xsl:value-of select="../@e"/></td>
<td bgcolor="#FFFF00"><xsl:value-of select="../@b"/></td>
<td bgcolor="#999999"><xsl:value-of select="@be"/></td>
<xsl:for-each select="T">
<td bgcolor="#FFFF00"><xsl:value-of select="@o"/></td>
</xsl:for-each>
</xsl:when>
<xsl:otherwise>
<td bgcolor="#999999"><xsl:value-of select="../@e"/></td>
<td bgcolor="#999999"><xsl:value-of select="../@b"/></td>
<td bgcolor="#999999"><xsl:value-of select="@be"/></td>
<xsl:for-each select="T">
<td bgcolor="#999999"><xsl:value-of select="@o"/></td>
</xsl:for-each>
</xsl:otherwise>
</xsl:choose>
</tr>
</xsl:for-each>
</xsl:for-each>
</xsl:for-each>
</table>
</xsl:template>
</xsl:stylesheet>
你能插入XML源的改造,以及完整的XSLT? – 2012-07-11 08:07:23
@YvesB我插入了它。希望你的建議:\我迷路了! – 2012-07-11 08:21:23
恐怕您還需要提供預期的HTML,因爲您的解釋不容易理解。 – 2012-07-11 09:37:56