XMLからXSLスタイルシートを使って、携帯Webコンテンツ用のソースを生成したいのですが、そのようなスタイルシートのサンプルコードはないでしょうか?
また、HDML・HTML両方に対応できるようなXMLのサンプルはないでしょうか?
もしあればURLおよびソースのどちらでもかまいません。教えてください。

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

A 回答 (2件)

media typeを設定し読み込むXSLスタイルシートを定義すれば


XSLのふりわけというのは可能です。

記事が公開されていますのでリンク先のXML PRESS vol.2のBXSの
解説のところを参考にしてください。

参考URL:http://www.gihyo.co.jp
    • good
    • 0

ないと思いますよ。



ないから最近NECがそのようなものを発表して話題に(?)
なっているので・・・

ついでにですが、共通のものがあったとしても画像は
共通のものが使えないので、自分で変換する必要が
ありますよ。
#最低限GIF/PNG変換。

ではでは☆
    • good
    • 0

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

このQ&Aと関連する良く見られている質問

QXMLから、次の変換結果を得るようなXSLスタイルシートを作る

<?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</試験番号>
</試験>

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

Aベストアンサー

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>

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:...続きを読む

Qxslのdocument関数で読込んだ2つのxmlをxsl:sortしたい

次のXSLで動作させています。

<?xml version="1.0" encoding="Shift_JIS"?>
<xsl:stylesheet xml:space="default" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" xmlns:rs="urn:schemas-microsoft-com:rowset" xmlns:z="#RowsetSchema">
<xsl:output method="text" />
<xsl:template match="/">
<xsl:for-each select="document('取り込むXMLファイル')//z:row">
<xsl:value-of select="@取り出したい属性の名前" />
</xsl:for-each>
<xsl:for-each select="//z:row">
<xsl:value-of select="@取り出したい属性の名前" />
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>

ここまでは出来たのですが、xsl:sortでまとめてsortするにはどうすればいいのでしょうか?

次のXSLで動作させています。

<?xml version="1.0" encoding="Shift_JIS"?>
<xsl:stylesheet xml:space="default" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" xmlns:rs="urn:schemas-microsoft-com:rowset" xmlns:z="#RowsetSchema">
<xsl:output method="text" />
<xsl:template match="/">
<xsl:for-each select="document('取り込むXMLファイル')//z:row">
<xsl:value-of select="@取り出したい属性の名前" />
</xsl:for-each>
<xsl:for-each select="//z:row">
<xsl:value...続きを読む

Aベストアンサー

こんにちは、なんか、変な風にとられてもいやなので、他の人の回答が付くのを待ってましたが、付かないようなので、また回答しておきます。
(また!)勘違いコメントだったらすみません。
*
<xsl:for-each select="document('取り込むXMLファイル')//z:row">
<xsl:value-of select="@取り出したい属性の名前" />
</xsl:for-each>
<xsl:for-each select="//z:row">
<xsl:value-of select="@取り出したい属性の名前" />
</xsl:for-each>
の部分を
<xsl:for-each select="//z:row|document('取り込むXMLファイル')//z:row">
<xsl:value-of select="@取り出したい属性の名前" />
</xsl:for-each>
のように、まずは、1つにまとめることができます。
そうすることで、xsl:sortでまとめてsortできます。
xsl:sortについては、既知かもしれませんが
<xsl:for-each select="//z:row|document('取り込むXMLファイル')//z:row">
<xsl:sort select="ソートキー" lang="ja" data-type="text" order="ascending" />
<xsl:value-of select="@取り出したい属性の名前" />
</xsl:for-each>
のように書きます。
ソートキーが数値の場合、data-typeにはnumberを
降順にするには、orderをdescendingにします。

こんにちは、なんか、変な風にとられてもいやなので、他の人の回答が付くのを待ってましたが、付かないようなので、また回答しておきます。
(また!)勘違いコメントだったらすみません。
*
<xsl:for-each select="document('取り込むXMLファイル')//z:row">
<xsl:value-of select="@取り出したい属性の名前" />
</xsl:for-each>
<xsl:for-each select="//z:row">
<xsl:value-of select="@取り出したい属性の名前" />
</xsl:for-each>
の部分を
<xsl:for-each select="//z:row|document('取り込むXM...続きを読む

QXSLスタイルシートを2つ当てる方法はありませんか?

XSLスタイルシートのテンプレートが多すぎて
訳がわからなくなってしまいました。

できれば他のプログラミング言語のように、部品でXSLファイルを分けたいのですが、XSLではできないのでしょうか?

「XML/XSL以外のプログラムを利用して」という回答は、なしでお願いします。
よろしくお願いします。

Aベストアンサー

実践してみたことはないんで自信はないけど

xsl:importとかxsl:includeとか
使ってどうにかできないだろうか?

QXSLスタイルシートについて

こんな馬鹿な質問でごめんなさい。XMLファイルをXSLスタイルシートを使って表示させたいですけど、どうやら、XSLファイルの作り方が間違っているようで…
でも、どこだか分からないんです。助けてください。
---XMLファイルの内容は---
<root>
<first>
<second1>22</second1>
<second2>2</second2>
<third1>
<fourth1>4</fourth1>
<fourth2>44</fourth2>
</third>
<third1>
<fourth1>4</fourth1>
<fourth2>44</fourth2>
</third>
</first>
<first>
...

rootの中にはfirstがいくつかあって、
firstの中にはsecondが二つ、thirdがいくつか、
thirdの中にはfourthが二つあります。

xsl:for-each を使って2と4をそのまま表示させたいのですが、

xsl:for-eachの中にxsl:for-eachを書くんですか?
どなたか書き方を教えて下さい。

こんな馬鹿な質問でごめんなさい。XMLファイルをXSLスタイルシートを使って表示させたいですけど、どうやら、XSLファイルの作り方が間違っているようで…
でも、どこだか分からないんです。助けてください。
---XMLファイルの内容は---
<root>
<first>
<second1>22</second1>
<second2>2</second2>
<third1>
<fourth1>4</fourth1>
<fourth2>44</fourth2>
</third>
<third1>
<fourth1>4</fourth1>
<fourth2>44</fourth2>
</third>
</first>
<first>
...続きを読む

Aベストアンサー

マッチしたものを全部出力すればいいだけなら、for-each とか使わなくても、
apply-templates を繰り返していけばいいと思います。例えば次のように。
というか、match したものに対して、その中でいろいろ繰り返すのが for-each
なので、template の中に for-each が出てくるのが基本です。

<?xml version="1.0" encoding="shift_jis"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >
<xsl:template match="/">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="root">
<html><xsl:apply-templates /></html>
</xsl:template>
<xsl:template match="first">
<xsl:apply-templates/>
!!!!<br/>
</xsl:template>
<xsl:template match="second1">
<xsl:value-of select="."/><br/>
</xsl:template>
<xsl:template match="second2">
<xsl:value-of select="."/><br/>
</xsl:template>
<xsl:template match="third1">
<xsl:apply-templates/>
----<br/>
</xsl:template>
<xsl:template match="fourth1">
<xsl:value-of select="."/><br/>
</xsl:template>
<xsl:template match="fourth2">
<xsl:value-of select="."/><br/>
</xsl:template>
</xsl:stylesheet>

マッチしたものを全部出力すればいいだけなら、for-each とか使わなくても、
apply-templates を繰り返していけばいいと思います。例えば次のように。
というか、match したものに対して、その中でいろいろ繰り返すのが for-each
なので、template の中に for-each が出てくるのが基本です。

<?xml version="1.0" encoding="shift_jis"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >
<xsl:template match="/">
<xsl:apply-templates/>
</xsl:template>
...続きを読む

QRSS と XMLスタイルシート

XMLをHTMLのように表示するために、スタイルシートがあることを知りました
XMLなどのことはほとんどしりませんが
RSSもXMLの一つですよね

そのRSSにスタイルシートを適用すれば、HTMLのように表示できるんですか

また、古いブラウザでは XMLを表示できない?ですが、スタイルシートを適用して表示させることもできないんですか

2点、よろしくお願いします

Aベストアンサー

RSS+XSLなページだけどIE5で見れません。

参考URL:http://web1.aaacafe.ne.jp/~tenki/tenki.xml


おすすめ情報