サーバサイドでxmlとxslをxhtmlに変換して出力する方法

このQ&Aのポイント
  • xmlとxslを使ってfirefoxで確認したところxhtmlになっていました。IEやFirefoxなどのブラウザに対応するためには、サーバサイドでxhtmlに変換して出力する必要があります。
  • PHPのUAを使用してブラウザを判断し、共通部分をインクルードして表示することができます。ただし、この方法ではxml文書とxslファイルの場所を指定する必要があります。
  • xml文書のみを指定すれば、単純なxml文書を見ることができます。しかし、より高度な処理やブラウザごとの表示の調整を行う場合は、サーバサイドでxhtmlに変換する必要があります。
回答を見る
  • ベストアンサー

xmlとxslをサーバサイドでxhtmlに変換して出力

xmlとxslを使ってfirefoxで確認したところxhtmlになっていました。 で、これを全てのブラウザに対応したく、サーバサイドでxhtmlに変換して出力したいのです そうするとIEやFirefoxなどでヘッダ調節やなにやらできると思ったので 共通部分も部品化できそうだし。 問題はまだPHPでUAでブラウザを判断してとばしたり 共通部分をインクルードして表示する程度しかできません。 これぐらいの技術でなんとかなるものなのでしょうか? この関数を見ろという感じでも構いませんので、何かヒントをください これだけはやりたいというのが、xml文書にできればxslファイルの在処は記載したくないのです。 xml文書を指定すれば、単純なxml文書を見るという感じにしたいので どうかよろしくお願いします

noname#14955
noname#14955
  • PHP
  • 回答数1
  • ありがとう数1

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

  • ベストアンサー
  • moon_night
  • ベストアンサー率32% (598/1831)
回答No.1

XMLを直接扱えたりします。

参考URL:
http://www18.tok2.com/home/koumori27/xml/pxml/pxml_menu.html
noname#14955
質問者

お礼

すごく分かりやすいですね! 参考にしてさっそくやってみたいと思います! ありがとうございました^^

関連するQ&A

  • xhtml2.0をhtmlに変換したい

    xhtml2.0をhtmlに変換したいと考えています。 ---------------- [ 共通 essay.xsl ] <?xml version="1.0" encoding="UTF-8" ?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output method="html" encoding="UTF-8" /> <xsl:template match="/"> <html lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" /> <title><xsl:value-of select="html/head/title" /></title> </head> <body> <xsl:value-of select="html/head/title" /> </body> </html> </xsl:template> 15 </xsl:stylesheet> ----------------- <例1> [偽物xhtml2.xml] <?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="essay.xsl" ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 2.0//EN" "http://www.w3.org/MarkUp/DTD/xhtml2.dtd"> <html xml:lang="ja"> <head> <title>偽xhtml2.0</title> <meta property="keywords" xml:lang="ja">xhtml2.0</meta> <meta property="dc:dreated" content="2008-01-06" /> </head> <body> <h>テスト</h> <p>偽xhtml2.0</p> </body> </html> --------------------------- <結果> 「偽xhtml2.0」と表示される ------------------------ 上記のように、xmlns無しで書いた、偽物xml2.0は変換できるのですが、下記の ------------------------------ <正式xhtml2.xml> <?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="essay.xsl" ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 2.0//EN" "http://www.w3.org/MarkUp/DTD/xhtml2.dtd"> <html xmlns="http://www.w3.org/2002/06/xhtml2/" xml:lang="en" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2002/06/xhtml2/ http://www.w3.org/MarkUp/SCHEMA/xhtml2.xsd" > <head> <title>正式xhtml2.0</title> <meta property="keywords" xml:lang="ja">xhtml2.0</meta> <meta property="dc:dreated" content="2008-01-06" /> </head> <body> <h>テスト</h> <p>正式xhtml2.0</p> </body> </html> ------ 正式な形のxhtml2.0を共通xsltで変換しようとすると、うまくいきません。名前空間あたりが怪しいと思うのですが、どうすればうまく変換できるでしょうか?

    • 締切済み
    • XML
  • XHTMLで書いて、XML宣言を書くとバグるブラウザはIEだけ?

    IEで、XHTMLを書いたとして、「XML宣言あり」だと、標準モードでなく互換モードで表示しようとして、ページがみられないというバグがあると思います。 参考 http://cssbug.at.infoseek.co.jp/detail/winie.html XHTML(XML宣言あり): 互換モード(この動作はバグです) で、他のブラウザで、XHTMLで書いて、XML宣言を書くと同様にバグるブラウザは存在するのでしょうか? なお、ケータイのUA、あるいはもっと言えば海外のUAも考慮に入れています・・・が、わかる範囲でおこたえいただければ幸いです。 よろしくお願いいたします。

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

  • SEO的に

    まだまだ初心者なのですが、xmlとxslを勉強しようと思っています。 それで、xslでxhtmlに変換してブラウザで表示する方法の場合、今のロボットはxmlしか読んでくれずseo的には弱いという認識をもっているのですが実際のところどうなのでしょうか? 確実な回答でなく、「xml+xslで組んでるけどちゃんと検索引っかかるよ」みたいなものでも良いので回答をもらえたらと思います。 よろしくお願いします。

    • 締切済み
    • XML
  • xsl内での<script>タグの書き方

    すいません。もうひとつ質問させてください。 以下のように、xsl内に<script>タグを書こうと思っています。しかし、 <script type="text/javascript"><xsl:comment><![CDATA[ var v = 1; if (v < 2) {alert(v);} ]]></xsl:comment> </script> と書くと、IEではalertが動きますが、FireFoxではalert出ません。<xsl:comment>を削除して、 <script type="text/javascript"><![CDATA[ var v = 1; if (v < 2) {alert(v);} ]]> </script> と書くと、今度はFireFoxでは動作しますが、IEで動作しません。 ブラウザは、IE7とFireFox2.0.0.5です。おそらくエスケープの問題かなと思っていますが、どうすればいいでしょうか? ====== [sample.xml] <?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet href="b.xsl" type="text/xsl"?> <sample> <smp>サンプル</smp> </sample> ====== [b.xsl] <?xml version="1.0" encoding="UTF-8" ?> <xsl:stylesheet version="1.0" xmlns="http://www.w3.org/1999/xhtml" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="html" encoding="UTF-8" omit-xml-declaration="yes" doctype-public="-//W3C//DTD XHTML 1.1//EN" doctype-system="http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd" media-type="text/html" /> <xsl:template match="/"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <title>サンプル</title> <script type="text/javascript"> <xsl:comment><![CDATA[ var v = 1; if (v < 2) {alert(v);} ]]></xsl:comment> </script> </head> <body>サンプル</body> </html> </xsl:template> </xsl:stylesheet>

    • ベストアンサー
    • 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
  • FireFoxにてPHPで生成したをXML表示するには?

    PHPにてXML文書を生成して、それをXMLデータを読み取るFlashにデータを渡す処理を作成しました。 そこで、作成されるXML文書を確認するため、 IE7にて、http://hoge.ne.jp/xml.phpと入力してXMLのツリー上になっていることを確認しました。 ですが、ブラウザをFireFoxに切り替えたら文字化けされた(?)文書が表示されるのみです。 ためしに生成されたソースをそのまま、サーバに上げたらツリーが表示されました。 FireFoxでもIEと同様にXMLをツリー形式で見るにはどのようにしたらいいのでしょうか? 出来るなら、ブラウザ関係なく見れるのが好ましいですが、 最低限FireFoxだけでもいいので表示したいと思っています。 わかる方がおられたらご教示ください。 以上、よろしくお願いします。

  • XHTMLの必要性について質問!

    XHTMLを調べると次のような文章がありました。 ------------------------------ <XHTMLとは、Webページを記述するためによく使われるHTMLを、XMLに適合するように定義し直したマークアップ言語。W3Cが仕様策定を行っている。 もともとHTMLはXMLの親にあたるSGMLから派生した言語で、Webブラウザメーカー主導で独自の拡張が続いてきた。このため、HTMLはXMLとは一部整合性を欠く言語仕様となっているが、両者の違いはある程度吸収できる範囲のものであるため、従来のWebブラウザでも問題なく見られ、かつXMLに準拠した文書を作成する言語仕様としてXHTMLが作成された。 HTMLをXML準拠のものに更新した理由として、インターネットをはじめとしたオンラインでのデータの送受信にXMLが使用されることを想定し、HTML文書もXML処理系で統一的に扱える環境を整える必要があったことが挙げられている。> ------------------------------- (質問1) この文面からすると、HTMLでも「従来のWebブラウザで問題なく見られる」と判断するのですが、どうしてXHTMLが必要なのかが解りません。 (質問2) 現在、HTMLでは不都合が生じているPCサイトがあれば、ご紹介願います。 (質問3) 今後、HTMLでは動作が出来なくなるのでしょうか? 以上。宜しくお願いします。

    • ベストアンサー
    • HTML
  • xsl 内の実体参照を宣言する方法??

    xsl 内で xhtml を使用する際に、&nbsp; などの実体参照のエンティティ宣言をしたいのですが、方法がわかりません。パーサは libxslt(AxKit) です。 例えばこんな感じかな、と思うのですが・・。 <?xml version="1.0" encoding="EUC-JP" ?> <!DOCTYPE html [ <!ENTITY nbsp " "> ]> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="html" encoding="EUC-JP"/> <xsl:template match="/"> <xsl:apply-templates /> </xsl:template> <xsl:template match="root"> <html> <head> ......

    • ベストアンサー
    • XML
  • XMLでホームページ

    今更こういう事を質問して大変恥ずかしいのですが、XML初心者の私に、ぜひ教えて頂けませんでしょうか。 XMLでテキストを書いて、XSLで構築し、CSSでデザインをする事はよくわかりました。 しかしXMLについてのホームページも沢山拝見しましたが、どれもエクセルで作るような、テーブル使用の会員のページやら、そういったものばかりで、はたして普通のホームページによる、日記やら写真館やらそういったものはXMLではできるのかそうではないのかが、はっきりせずにいます。 そして、説明をみても拡張子はXMLで、htmlではないのに、XHTMLはhtmlでいいんですよね。 XML文書で開いたら普通に表示されるファイルをhtmlで開いてみましたが、もちろんうまく表示される訳もなく・・。 ホームページでXMLを表示させるには、index.xmlになるのでしょうか。それとも、XMLは普通のホームページには不向きですか? こんな見当違いな質問をして、大変申し訳ございません。 どうぞよろしくお願い致します。

    • 締切済み
    • XML

専門家に質問してみよう