我对 XML 和 XSLT 还很陌生。我有一个家庭作业要求我们根据一些 XML 数据生成一个页面。它非常简单,所以这里是:
我的 XML 数据如下所示:
<convention>
<title>ABC Web Development Conference</title>
<location>ABC College, San Diego, CA</location>
<date> March 25, 2011 - March 27, 2011</date>
<exhibitor>
<name>John Smith</name>
<address1>1234 2nd Avenue</address1>
<address2></address2>
<city>San Diego</city>
<state>CA</state>
<email>john@john.com</email>
<specialization>
<subject>Web Development</subject>
<subject>Software Design</subject>
</specialization>
</exhibitor>
<exhibitor>
<name>Jane Smith</name>
<address1>1234 First Avenue</address1>
<address2>Ste 123</address2>
<city>San Diego</city>
<state>CA</state>
<email>jane@jane.com</email>
<specialization>
<subject>Web Development</subject>
</specialization>
</exhibitor>
</convention>
基本上,我已将其设置为很好地输出到表格中。当我输出地址 2 时,我的问题出现了。我想这样做,如果地址 2 的字符串长度大于 0,则输出一个逗号。
这是我的 XSL 数据的样子:
<table width="600" border="1" cellspacing="3" cellpadding="5">
<tr>
<td colspan="3" align="center"><xsl:value-of select="convention/title"/></td>
</tr>
<tr>
<td colspan="3" align="center"><xsl:value-of select="convention/location"/></td>
</tr>
<tr>
<td colspan="3" align="center"><xsl:value-of select="convention/date"/></td>
</tr>
<tr>
<th>Exhibitor</th>
<th>Address</th>
<th>Specialization</th>
</tr>
<xsl:for-each select="convention/exhibitor">
<tr>
<td><xsl:value-of select="name"/><br /><xsl:value-of select="email"/></td>
<td><xsl:value-of select="address1"/>, <xsl:value-of select="address2"/> <xsl:value-of select="city"/>, <xsl:value-of select="state"/></td>
<td><xsl:for-each select="specialization/subject"><xsl:value-of select="."/><br /></xsl:for-each></td>
</tr>
</xsl:for-each>
<tr>
<td colspan="3">Total Number of Exhibitors: <xsl:value-of select="count(convention/exhibitor)"/></td>
</tr>
</table>
非常感谢任何帮助:)
最佳答案
你有课本吗?我会给你一些提示,帮助你找到你需要的信息:
- XSL 支持条件语句(提示:
xsl:if
) - 使用特定的 XPath 函数,您可以检查字符串的长度(提示:http://www.w3schools.com/xpath/xpath_functions.asp)
如果您不熟悉这些概念,我建议您从您的类(class) Material 中查看更多信息。
祝你好运!
关于xml - XSLT:如果值存在,添加逗号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8275202/