QA@IT

xslの書き方について質問です

1856 PV

下記のようなxmlがあります。
<qa-koumoku-qa-2>
 <qa-midashi-qa-3>(1) テスト項目</qa-midashi-qa-3>

 <qa-midashi-qa-3>(2) <min>テスト項目文章</min></qa-midashi-qa-3>
</qa-koumoku-qa-2>

xslで変換後、下記のようなhtmlにしたいのです。
<p class="0_1"><b>(1) テスト項目</b></p>
<p class="0_1">(2) テスト項目文章</p>
※<min>がある場合は<b>で囲みたくありません。

上記を実現できるxslの書き方を御教示ください。
よろしくお願い致します。

回答

xsl:choose を利用すれば実現できないでしょうか?

  • XSLの記述例
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="xml" indent="yes" encoding="UTF-8" />
  <xsl:template match="qa-koumoku-qa-2">
    <xsl:for-each select="qa-midashi-qa-3">
      <p class="0_1">
        <xsl:choose>
          <xsl:when test="min != ''">
            <xsl:value-of select="." />
          </xsl:when>
          <xsl:otherwise>
            <b><xsl:value-of select="." /></b>
          </xsl:otherwise>
        </xsl:choose>
      </p>
    </xsl:for-each>
  </xsl:template>
</xsl:stylesheet>
  • 変換元の XML
<?xml version="1.0" encoding="UTF-8"?>
<qa-koumoku-qa-2>
  <qa-midashi-qa-3>(1) テスト項目</qa-midashi-qa-3>
  <qa-midashi-qa-3>(2) <min>テスト項目文章</min></qa-midashi-qa-3>
</qa-koumoku-qa-2>
  • 変換結果
<?xml version="1.0" encoding="UTF-8"?>
<p class="0_1">
<b>(1) テスト項目</b>
</p>
<p class="0_1">(2) テスト項目文章</p>

Java6 の JAXP(Apache Xalan) で動作確認しています。
XSL コンパイラによっては結果が変わってくるかもしれませんのでご参考まで。

編集 履歴 (2)
  • tm_senda様
    XLSの記述例を参考に記載した所、解決致しました。
    分かりやすい御回答ありがとう御座いました。
    -
ウォッチ

この質問への回答やコメントをメールでお知らせします。