• ベストアンサー

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

punchan_jpの回答

  • ベストアンサー
回答No.3

マッチしたものを全部出力すればいいだけなら、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>

myrimyri
質問者

お礼

な~んだ☆そうだったんですか! ありがとうございます(^‐^) 出来ました。馬鹿な質問をしてすみませんでした。

関連するQ&A

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

    XSLスタイルシートのテンプレートが多すぎて 訳がわからなくなってしまいました。 できれば他のプログラミング言語のように、部品でXSLファイルを分けたいのですが、XSLではできないのでしょうか? 「XML/XSL以外のプログラムを利用して」という回答は、なしでお願いします。 よろしくお願いします。

    • ベストアンサー
    • XML
  • xslの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するにはどうすればいいのでしょうか?

    • ベストアンサー
    • XML
  • xslでの最小値、最大値の取得

    <A>  <B>50</B>  <B>20</B>  <B>5</B>  <B>60</B>  <B>100</B> </A> 例えば上のようなXMLがあったとします。 それにxslを適用したときに、最小値と最大値のみを表示させたいのですが、xslではどのような処理をすればよいのでしょうか? <xsl:for-each select="A">  <xsl:sort select="./B"/>  <xsl:value-of select="."/> </xsl:for-each> 上のようだと全ての<B>が昇順に表示されるだけです。 何か最小値、最大値を取得する関数等ありますでしょうか?

    • ベストアンサー
    • XML
  • xslでの表示

    例えば <title>タイトルA</title> <P>no1</P> <P>no2</P> <P>no3</P> <P>no4</P> <title>タイトルB</title> <P>no5</P> <P>no6</P> <P>no7</P> <P>no8</P> というようなxmlがあったとします。 xslを適用して、 タイトルA no1 no2 no3 no4 タイトルB no5 no6 no7 no8 と表示するにはどのようにすればよいのでしょうか? <xsl:for-each select="//P">  <P><value-of select="."/></P> </xsl:for-each> ではnoのみが表示され、タイトルが表示されず、また、 <xsl:for-each select="//title">  <P><xsl:value-of select="."/></P>  <xsl:for-each select="../P">   <P><xsl:value-of select="."/></P>  </xsl> </xsl> では、 タイトルA no1 no2 no3 no4 no5 no6 no7 no8 タイトルB no1 no2 no3 no4 no5 no6 no7 no8 となってしまいます。

    • ベストアンサー
    • XML
  • xslでファイルオープンのようなことはできますか?

    こんにちは. XML,XSLを勉強し始めて間もない者ですがよろしくお願いします. XMLの中に画像のURLが記述してあって,XSLを用いてそのURLを抽出し,HTMLに変換する際画像を表示するということはできました. 例 XMLに 「<画像>http://***/***.jpg</画像>」 といった記述がされているとして, 「<img>  <xsl:attribute name="src">  <xsl:value-of select="画像"/>  </xsl:attribute>  </img>」 とXSLを記述することにより画像が表示できました. しかしXMLの中にテキストファイルのURLが記述してあり,そのテキストファイルの中に画像のURLが表示されていたとすると,そのテキストファイルをオープンして制御するようなことはできるのでしょうか? 例 XMLの中に 「<画像情報>http://***/***.txt</画像情報>」 といった記述があり,そのテキストの中に 「画像のURLです.  http://***/***.jpg」 のように書かれているとします. Cなどのプログラムを用いればすぐ出来そうですが,XSLのみでこのような制御を行うことは無理でしょうか? 説明が分りにくくて申し訳ありませんがよろしくお願いいたします.

    • 締切済み
    • XML
  • xsl:chooseでこんなことがしたい

    はじめまして。XML初心者です。 元データとなるXMLを読み込んでHTML変換する為のスタイルシートの作成を試みています。 xsl:chooseを使って以下のようなことがしたいのですが、 ご存知の方いましたら教えてください(xsl:chooseに拘りはありません) ・元データの基本構造 ------------------------------------------------------ <A> <B> <C1>てすと</C1> </B> </A> ------------------------------------------------------ ・やりたいこと  <C1>の要素内容がNULLなら"★"マークを表示したい。 作ったスタイルシート ------------------------------------------------------ ~ <xsl:choose> <xsl:when test="C1=''">★</xsl:when> <xsl:otherwise><xsl:value-of selct="C1"/></xsl:otherwise> </xsl:choose> ~ ------------------------------------------------------ という感じで試したらうまく”★”マーク表示ができたのですが、対象のXMLデータに例外があり、 <C1>以下の要素がない場合があったのです。 この例外でも同様の”★”表示させたいのですが、うまい方法ご存知の方いましたら教えてください。

    • ベストアンサー
    • XML
  • XSLで特定のタグだけを出力する方法

    もうすぐクリスマスなのに、むなしく質問をさせて頂きます。 XSLスタイルシートを使って、XML文書をHTML文書に変換することを今試して みているのですが、<name>myrimyri</name>というタグがあるとして、 そのタグの内容だけ表示しないようにしたいんです。どうすればいいですか? もっと分かりやすい例として、 <root> <name>myrimyri</name> <age>20</age> <root> というxml文書があるとして、それを以下のHTML文書に変換したいです。 (ageのタグ内容だけを表示したい。) <html> <body> 20 </body> </html> そのXSL文を教えて下さい。お願いします。

    • ベストアンサー
    • XML
  • XSLでの指定方法

    こういったXMLファイルがあり、 XSLにて変換をしたいと思っています。 <success> <table> <list> <row> <value>value1</value> <value>value2</value> <value>2</value> <value>10</value> <value>20</value> </row> ・ ・ ・ ・ </list> </table> </success> 上の例にある、 <value>20</value> valueの5番目が20以上のときだけ 色を変更して表示したいと思っています。 xslで <xsl:for-each select="value"> <xsl:if test="value[5]&gt;= 20"> <xsl:attribute name="bgcolor">255,50,50</xsl:attribute> <xsl:value-of select="."/>, </xsl:if> としたのですが、 うまくいきません。 条件式が問題だとは思いますが、 どのような式にしたらよいのでしょうか?

    • ベストアンサー
    • XML
  • xml+xslでの変換内容をtextareaへ

    お世話になります。 xml+xslでhtmlに変換する際、その変換内容をtextareaにも表示させるようにしたいのです。 使用ブラウザ:FireFox。現状はFirebugでDOMツリーを手動で参照してる状況です。 現在は、ノードをtextareaに表示しようとすると[object DocumentFragment]とだけ出てしまい、DocumentFragmentという概念あることは分かり、色々調べcreateElement()やcreateTextNode()など、その他思いつく限りの事でテストしてみてるのですが、どうにもノードをHTMLタグとしてtextareaに表示させる事が出来ません。 以下にポイントとなるソースを掲示しますので、どなた様か、お助け願えませんでしょうか --test.html---- <html><head> <meta content="text/html; charset=utf8" http-equiv="content-type"> <title>JS+xslt</title> <script type="text/javascript"> function tramsformlists(xmlFile, xslFile, resultNodeID){ var xml, xslt, newDoc; if(document.all){ xml = new ActiveXObject("Microsoft.XMLDOM"); xslt = new ActiveXObject("Microsoft.XMLDOM"); }else { xml = document.implementation.createDocument("", "", null); xslt = document.implementation.createDocument("", "", null); } xml.async = false; xslt.async = false; xml.load(xmlFile); xslt.load(xslFile); if(document.all){ document.getElementById(resultNodeID).innerHTML = xml.transformNode(xslt); }else { var xsltp = new XSLTProcessor(); xsltp.importStylesheet(xslt); newDoc = xsltp.transformToFragment(xml, window.document); var df = document.createDocumentFragment(); cloneDoc= newDoc.cloneNode(true); document.getElementById("Div"+resultNodeID).innerHTML = ""; document.getElementById("Div"+resultNodeID).appendChild(newDoc); t = document.msg_form.TextareaTest.value; document.msg_form.TextareaTest.value =t + df.appendChild(cloneDoc); } } </script> </head><body> <form name="msg_form"> <ul> <li> <input type="button" value="Menu" onclick="tramsformlists('test0.xml','test0.xsl','Test')"><br> <div id="DivTest"></div> <textarea cols="50" rows="10" id="TextareaTest">あああああああ</textarea> </li> </ul> </form> </body></html> --test0.xml-- <?xml version="1.0" encoding="utf-8"?> <root> <nolink_logo> </nolink_logo> </root> --test0.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="html" encoding="utf-8"/> <xsl:template match="root"> <xsl:apply-templates select="nolink_logo"/> </xsl:template> <xsl:template match="nolink_logo"> <xsl:call-template name="Test" /> </xsl:template> <xsl:template name="Test"> <xsl:variable name="menu" select="document('test1.xml')/root"/> <div>画像を表示 <xsl:for-each select="$menu"> <xsl:element name="a"> <xsl:attribute name="href"> <xsl:value-of select="url[1]"/> </xsl:attribute> <xsl:attribute name="target">_blank</xsl:attribute> <xsl:element name="img"> <xsl:attribute name="src"> <xsl:value-of select="img[1]"/> </xsl:attribute> </xsl:element> </xsl:element> </xsl:for-each> </div> </xsl:template> </xsl:stylesheet> --test1.xml-- <?xml version="1.0" encoding="utf-8"?> <root> <img>http://domain/image2.gif</img> <url>http://domain/test.html</url> </root>

  • xsl:variable の使用方法

    こんにちは xml,xsl を今日はじめて使う初心者です。 変数を使おうとして下記のようなメッセージが出てしまいます。 >ここではキーワード xsl:variable を使用できません。 どうすればよろしいでしょう? area.xls: <?xml version="1.0" encoding="Shift_JIS"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl"> <xsl:template match="/"> <html> (中略) </html> </xsl:template> <xsl:template match="変換結果"> <table align="left" border="1" width="1500" cellspacing="0" cellpadding="0"> <tr> (中略) </tr> <tr> (中略) <xsl:comment>合計 </xsl:comment> <th>数量</th> (中略) </tr> <xsl:variable name="coLor" select="white" /> <xsl:for-each select="row" order-by="+column0"> <tr bgcolor="$coLor"> <td width="200" align="right"> <xsl:value-of select="column0" /> </td> (中略) </tr> </xsl:for-each> </table> </xsl:template> </xsl:stylesheet> ************************************************************* area.xml <?xml version="1.0" encoding="Shift_Jis"?> <?xml-stylesheet type="text/xsl" href="area.xsl" ?> <変換結果> <row row-Num='1'><column0>,4536163880211</column0> (中略) </row> </変換結果>

    • ベストアンサー
    • XML