我的考试答案是否正确?
<weather>
<date>2011-07-14T8:00</date>
<region sky="sunny">
<name>Karlsruhe</name>
<temperature>26.54</temperature>
</region>
<region sky="rainy">
<name>Stuttgart</name>
<temperature>12.54</temperature>
</region>
<region sky="sunny">
<name>Freiburg</name>
<temperature>40</temperature>
</region>
</weather>
<?xml version="1.0" ?>
<!-- Edited by XMLSpy® -->
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<output method="text"/>
<xsl:template match="/">
<xsl:for-each select="weather/region">
<xsl:if test="temperature>30">
<xsl:value-of select="name"/>
<xsl:value-of select="temperature"/>
</xsl:if>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
我不确定是否应该使用
<xsl:value-of select="name"/><xsl:value-of select="temperature"/>
或
<apply-template select="name"/> : <apply-template select="temperature"/>
答案 0 :(得分:0)
看起来没问题,只是output
元素需要其名称空间前缀:
<xsl:output method="text"/>
并且指示说“至少24度”,所以这将是:
<xsl:if test="temperature >= 24">
为了正确输出值,我建议使用concat()
:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:template match="/">
<xsl:for-each select="weather/region">
<xsl:if test="temperature >= 24">
<xsl:value-of select="concat(name, ': ', temperature, ' ')"/>
</xsl:if>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
稍微好一点的方法是使用模板和XPath选择来评估条件,但我不确定这是否超出了你的课程范围:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:template match="/">
<xsl:apply-templates select="weather/region[temperature >= 24]" />
</xsl:template>
<xsl:template match="region">
<xsl:value-of select="concat(name, ': ', temperature, ' ')" />
</xsl:template>
</xsl:stylesheet>