忙しい現代人の腰&肩のお悩み対策!

<?xml version="1.0" encoding="Shift_JIS" ?>
<試験>
  <タイトル>テスト</タイトル>
  <情報>
   <試験名 試験番号="01">国語</試験名>
   <試験時間>60</試験時間>
   <出題数>50</出題数>
   <合格基準>80</合格基準>
  </情報>
  <情報>
   <試験名 試験番号="02">数学</試験名>
   <試験時間>80</試験時間>
   <出題数>40</出題数>
   <合格基準>75</合格基準>
  </情報>
  <情報>
   <試験名 試験番号="03">英語</試験名>
   <試験時間>100</試験時間>
   <出題数>45</出題数>
   <合格基準>70</合格基準>
  </情報>
</試験>



上のXMLから、次の変換結果を得るようなXSLスタイルシートを作るにはどうすればいいんでしょうか。

1. 試験番号だけを抜き出して次のように列挙する。
<試験>
<試験番号>01</試験番号>
<試験番号>02</試験番号>
<試験番号>03</試験番号>
</試験>

2. 合格基準が70より大きい
試験を抜き出して、次のように列挙する
(「難易度」属性を追加)
※xsl:ifまたはxsl:chooseを用いよ
<試験 難易度="やや難">
<試験名>01</試験名>
<試験名>02</試験名>
</試験>

3. 1の試験番号のリストを出題数が多い順にソートして次のように列挙する
(「出題数」を属性として追加)
<試験>
<試験番号 出題数="50">01</試験番号>
<試験番号 出題数="45">03</試験番号>
<試験番号 出題数="40">02</試験番号>
</試験>

このQ&Aに関連する最新のQ&A

A 回答 (3件)

3. 1の試験番号のリストを出題数が多い順にソートして次のように列挙する


<?xml version="1.0" encoding="Shift_JIS"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="Shift_JIS" indent="yes" />
<xsl:template match="/">
<xsl:element name="試験">
<xsl:for-each select="/試験/情報">
<xsl:sort select="出題数" lang="ja" data-type="number" order="descending"/>
<xsl:element name="試験番号">
<xsl:attribute name="出題数"><xsl:value-of select="./出題数" /></xsl:attribute>
<xsl:value-of select="./試験名/@試験番号" />
</xsl:element>
</xsl:for-each>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
    • good
    • 0
この回答へのお礼

変換することができました。
ご丁寧にありがとうございました。

お礼日時:2006/01/24 19:10

1. 試験番号だけを抜き出して次のように列挙する。


<?xml version="1.0" encoding="Shift_JIS"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="Shift_JIS" indent="yes" />
<xsl:template match="/">
<xsl:element name="試験">
<xsl:for-each select="/試験/情報/試験名">
<xsl:element name="試験番号"><xsl:value-of select="@試験番号" /></xsl:element>
</xsl:for-each>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
    • good
    • 0

2. 合格基準が70より大きい試験を抜き出して、次のように列挙する


<?xml version="1.0" encoding="Shift_JIS"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="Shift_JIS" indent="yes" />
<xsl:template match="/">
<xsl:element name="試験">
<xsl:attribute name="難易度">やや難</xsl:attribute>
<xsl:for-each select="/試験/情報">
<xsl:if test="合格基準[.&gt; 70]">
<xsl:element name="試験名"><xsl:value-of select="./試験名/@試験番号" /></xsl:element>
</xsl:if>
</xsl:for-each>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング