0

私の試験の答えは正しいですか?

与えられた入力 XML:

<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>

必要:

e) XSLT (20 点) 指定された XML を入力として受け取り、摂氏 24 度以上の温度を持つすべての地域名を含むテキストを出力する XSL 変換を作成します。上記の XML の場合、出力は次のようになります。 Karlsruhe: 26.54 Freiburg: 24.21

私の答えは正しいかどうかわかりません:

<?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"/>

4

1 に答える 1

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>
于 2013-02-06T12:22:03.823 に答える