0

私は以下のようなxml入力を持っています:

<food>
  <fruit>Orange</fruit>
    isGood
  <fruit>Kiwi</fruit>
    isGood
  <fruit>Durian</fruit>
    isBad
</food>

以下のようなhtmlステートメントに変換したい:

オレンジはいいね。キウイはいいね。ドリアンはまずい。

果物の要素はすべてイタリックであることに注意してください。

私が持っているコードは以下のようなものですが、問題があります。

  <xsl:template match="/" >
    <food>
   <xsl:apply-templates select="food"/>
    </food>
  </xsl:template>

  <xsl:template match="food">
    <xsl:element name="fruit"> 
       <xsl:value-of select="fruit" /> 
    </xsl:element>        
  </xsl:template>
4

1 に答える 1

1

XSLT は、必要な HTML 出力を生成するのではなく、元の入力を再現しようとしているようです。

これを行う1つの方法の例を次に示します...

XML 入力

<food>
    <fruit>Orange</fruit>
    isGood
    <fruit>Kiwi</fruit>
    isGood
    <fruit>Durian</fruit>
    isBad
</food>

XSLT1.0

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output indent="yes" method="html"/>
    <xsl:strip-space elements="*"/>

    <xsl:template match="food">
        <html>
            <p><xsl:apply-templates/></p>
        </html>
    </xsl:template>

    <xsl:template match="fruit">
        <i><xsl:value-of select="."/></i>
        <xsl:value-of select="concat(' ',normalize-space(following-sibling::text()),'. ')"/>
    </xsl:template>

    <xsl:template match="text()"/>

</xsl:stylesheet>

HTML 出力(生)

<html>
   <p><i>Orange</i> isGood. <i>Kiwi</i> isGood. <i>Durian</i> isBad. 
   </p>
</html>

HTML出力(ブラウザ表示)

オレンジはいいね。キウイはいいね。ドリアンはまずい。

于 2012-10-31T05:23:25.437 に答える