XSLで特定のタグだけを出力する方法

このQ&Aのポイント
  • XSLスタイルシートを使って、特定のタグの内容だけを表示する方法について解説します。
  • 例えば、<name>myrimyri</name>というタグがある場合、そのタグの内容を表示しないようにする方法を説明します。
  • また、<root>タグ内の<age>タグの内容だけを表示するためのXSL文も提供します。
回答を見る
  • ベストアンサー

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
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • Samara
  • ベストアンサー率80% (4/5)
回答No.1

表示させたくない<name>タグの部分は、<xsl:template match="name"/>という具合に閉じてしまうだけでできますよ。 <xsl:stylesheet> <xsl:template match="/"> <html> <xsl:apply-templates /> </html> </xsl:template> <xsl:template match="name"/> <xsl:template match="age"> <body> <xsl:value-of select="."/> </body> </xsl:template> </xsl:stylesheet>

myrimyri
質問者

お礼

なんだ(^^; …汗汗 単純。。ですね。 どうもありがとうございます。

関連するQ&A

  • XSL : 変数について

    XSL : 変数について 初めて質問致します。 ご教示宜しくお願い致します。 ****** XML文書 ****** <root> <A>1</A> <B> <B_1>2</B_1> <B_2>3</B_2> </B> </root> ****** 質問 ****** xsl で、上記xml文書の<B>タグ配下 <B_1>2</B_1> <B_2>3</B_2> を変数に代入するにはどのようにすれば いいでしょうか?(タグ名も含めて) 下記の2つを試してみましたが、 いずれも 「2 3」となります。 ・ <xsl:variable name="hoo" select="B"/> ・<xsl:variable name="hoo"> <xsl:copy-of select="B"> </xsl:variable> 質問に不明瞭な点がありましたら ご指摘下さい。 宜しくお願い致します。

    • 締切済み
    • XML
  • XSLの中でHTMLタグが使えない

    XMLとXSLTを使って、Formの中のListのオプションを、XML から取ってきたいと思ってます。イメージ的には、下記 の○○○の中に、<xsl:value-of select="."/>を入れる ことによって、<option value="<xsl:value-of select="."/>"><xsl:value-of select="."/></option> の様にしたいのですが、<や>を&lt;や&gt;に変えても、 うまく表示されません。また、Selectタグの属性の Multipleも=サインが無いとかで使えませし,Inputタグ も、終了タグが無いため使えませんでした。どのように 対処したら良いのでしょうか?よろしくお願いしま す。 <select name="list1" size="10" id="select5"> <xsl:apply-templates/> </select> <xsl:template match="//name"> <option value="○○○">○○○</option> </xsl:template>

    • 締切済み
    • 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で、XMLの空タグを制御したい。

    値がないXML文書に、 <exsample /> こう書かれてしまうものを、 <exsample></exsample> このように出力したいのですが、出来ずでした。 以下は、私のやり方です。 ■ XSL <?xml version="1.0" encoding="Shift_JIS"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xalan="http://xml.apache.org/xslt"> <xsl:output method="xml" encoding="Shift_JIS" indent="yes" xalan:indent-amount="4"/> <xsl:template match="/"> <xsl:copy-of select="."/> </xsl:template> </xsl:stylesheet> ■ XML <?xml version="1.0" encoding="Shift_JIS"?> <root> <section> <category> <exsample1>value</exsample1> <exsample /> </category> </section> </root> ご教授、よろしくお願いいたします。

    • ベストアンサー
    • XML
  • XML → HTML の確認方法

    閲覧ありがとうございます。 まったくの初心者で、かなり初歩的なことだと思うのですが質問させていただきます。 XML文書についてなんですが、Web上でHTMLとして確認したいのですが、それができなくて困っています。泣 XMLの知識がまったくなかったので、色々調べてみたのですが、結果 XML + XSLスタイルシート → HTMLに変換されてWeb上でみれる・・・ということが分かりました。 また、その変換に processorが必要・・・ということも分かりました。 パソコン内にXSLスタイルシートを発見し、HTMLに変換するのに、Easy XSLT processortというのもダウンロードしてみたのですが、使いたかがよくわからず、使えずにいます・・・泣。 また、XML文書につきましては、あるツールを使って簡単に作成しているのでXML文書についての知識は本当にありません。XSLスタイルシートももともと入っていたものなのでよくわかりません。 XML文書もXSLスタイルシートもあるので、このEasy XSLT processorがうまく使えればWeb上でうまく表示されると思うのですが、どのようにすればいいのでしょうか(><)? XMLの部分にXML文書のファイルを、XSLの部分にXSLスタイルシートのファイルを選択しているのですが、毎回「オートフォーメーションサーバーはオブジェクトを作成できません」「undifindはNullまたはオブジェクトではありません」と言われて、終了してしまいます。 本当に初歩的なことでごめんなさい。 長文を読んで下り、ありがとうございます。ご回答お待ちしております。 (補足) 今までWindowsXPを使用しておりまして、作成したXML文書をクリックするだけでWeb上で文書が表示され、確認することができてたのですが、最近Windows7にかわってから、作成したXML文書をクリックしてもWeb上でうまく表示されなくなってしまいました(><)。 見られなくなった、というよりは、今まで表のように見れていたものが、ずらずら~とした単なる文字の羅列になってしまいました。泣 もしprocessorうんぬんの問題ではない場合も、ご指摘いただけると幸いです。

    • 締切済み
    • 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>

  • XSLTにてタグ名を取得する方法

    XML勉強中です。実は、XML文書に決められたタグがあって、その中身を探してXSL変換、というのは覚えたのですが、ふと迷ってしまいました。 たとえば、トップレベルにあるタグの名前が不明な場合、エレメントの一覧を取得するにはどうしたら良いのでしょうか? 自分でXMLを記述しておいてそれはないだろと言われそうなのですが、HTMLのための資源としてではなく、データとしての利用を考えたときにふと悩んでしまいました。 <person>  <name> <ID> etc... </person> <company>  <name> <adress> <tel>etc... </company> このとき、personとcompanyを取得したいのですが・・・。 template match="/" にて value-of select="name(.)" とか一通り試したのですが、出てくれませんでした。 まだはっきりとXSLTの書き方を習得していないので、とてつもなくアホな質問かもしれませんが、よろしくお願いいたします。

    • ベストアンサー
    • XML
  • XSL変換したが画像が表示できません

    下記のXMLの画像データを表示するためXSL変換したが画像が表示できません ちなみに同drに設置しています。  PHOT.XML <?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="style.xsl"?> <photos>  <photo url="http://www.kahokanko.com/demo/10.jpg"/>  <photo url="http://www.kahokanko.com/demo/19.jpg"/>  <photo url="http://www.kahokanko.com/demo/31.jpg"/> </photos> STYLE.XSL <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">  <xsl:template match="/">  <html>   <head>    <title>サンプル</title>    <link rel="styleSheet" type="text/css" href="./xx.css" />   </head>   <body>    <h1>画像を表示</h1>    <div>     <xsl:apply-templates />    </div>   </body>   </html>  </xsl:template>  <xsl:template match="photo">   <p class="album">    <img>     <xsl:attribute name="src">      <xsl:value-of select="@url" />     </xsl:attribute>    </img>   </p>  </xsl:template> </xsl:stylesheet>

  • スタイルシートを使って、要素タグがついたまま文を取り出したい

    お世話になります。 下記出力.xmlの内容で 「出力.xml <文> I <u>have <空欄>a</空欄> pen</u> <文>」 という内容があります。 そこで、スタイルシートの処理を通して、 「I <u>have <空欄>a</空欄> pen</u>」とタグが付いたまま取り出したいのですが、 下記のようなスタイルシートにすると 「I <u>have a pen </u>」 と外の<u>のタグしか表示されません。 「変換.xsl <xsl:apply-templates select="文"> <xsl:template match="u"> <xsl:element name="u"> <xsl:value-of select="." /> </xsl:element> <xsl;template> <xsl:template match="空欄"> <xsl:element name="空欄"> <xsl:value-of select="." /> </xsl:element> <xsl;template>                  」 どのようにすれば 「I <u>have <空欄>a</空欄> pen</u>」とタグがついたままで 取り出せるのでしょうか? 大変お手数ですが、何卒よろしくお願いします。

    • ベストアンサー
    • 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

専門家に質問してみよう