• 締切済み

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

みんなの回答

回答No.1

俺の過去の回答から http://oshiete1.goo.ne.jp/qa3362718.html ソースコードから察してください (ただ、教えてgooの仕様で,URIっぽい文字列の前後に​をシステムが埋め込むため, 置換するなり,自分で書き直すなりしないと動きません) 実際には#2において, <xsl:value-of select="ItemAttributes/Title" /> は上部の記述と合致していません。XPathに接頭辞つけないと (#1のコードは上記の点を直せば正しい) オマケ http://okwave.jp/qa3477885.html

heysos
質問者

お礼

ググっていたら、なんとか力技で、xsltを ----- <?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="*[local-name()='html']/*[local-name()='head']/*[local-name()='tit le']" /></title> </head> <body> <xsl:value-of select="*[local-name()='html']/*[local-name()='head']/*[local-name()='title']" / > </body> </html> </xsl:template> </xsl:stylesheet> ------ 上記のようにすることで、出力はできるようになりましたが、スマートな解決方法ではありません。もっとスマートな解決方法はないでしょうか?

heysos
質問者

補足

すいません。解答を見ながらぐぐってみたんですが、いまだによく分かりません。 「xPathにはデフォルトの名前空間を取得する手段がない」ということは理解できましたが、「それでは、どうやって解決するか」が分かりません。もう少しヒントをいただけないでしょうか?

関連するQ&A

  • 次のxhtml文

    <?xml version="1.0" encoding="EUC-JP"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja"> <head> <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=EUC-JP" /> <title></title> </head> <body> <address></address> </body> </html> において <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja"> を <html xmlns="http://www.w3.org/1999/xhtml" lang="ja"> とするのは正式には正しいことなのでしょうか?

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

    PHPを使ってXHTMLを出力しています。 下記のようなソースを使った場合、IE系ブラウザでXMLツリーが表示されてしまいます。IE8beta2、IE7、IE5で確認しています。 Google Chrome、Opera、FireFox 3ではこのような問題は起きていません。 どのようにすれば解決できるでしょうか。XML宣言を除けば一応表示はされたのですが。後方互換モードのことなどもIE7で改善されたとのことなので、混乱しています。 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title></title> <body> </body> </html>

  • XHTML meta属性 文字化け

    XHTMLを勉強しています。 以下のように記述して表示すると タイトルの部分が文字化けします。 何故でしょうか <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="Content-Style-Type" content="text/css" /> <meta http-equiv="Content-Script-Type" content="text/javascript" /> <title>ホームページの作り方</title> <meta name="description" content="初心者のためのホームページテスト" /> <meta name="keywords" content="ホームページ,作成,初心者" /> </head> <body> テスト </body> </html>

    • ベストアンサー
    • HTML
  • XHTMLの文字コードのEUC-JPの文字化け

    いつもはHTML4.01で作業をしていて XHTMLはどうも不慣れなせいか 今、外注が作成したHPを修正していて 文字コードをEUC-JPにどうしても変更しなければならないのですが それがうまくいかず、文字化けが発生してます。 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> を <?xml version="1.0" encoding="euc-jp"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=euc-jp" /> このように設定したら文字化けが発生しました。 どのように設定したら文字化けがなくなりますか?

  • XHTML のタイトルが表示されません ご教授おね

    タイトル通りなのですがHTML のタイトルが上手く表示されず、本文の中に入ってしまっています。(cf,添付画像)   一番最初の所で躓いてしまいました、解説書の通り何度もやり直したのですが、原因が分からないのです・・・かなり初歩的なこととは思われますがよろしくお願いいたします! ソースは以下のとおりです。 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> <titile>a</title> <style type="text/css"> </style> </head> <body> </body> </html> *ちなみにサンプルでは以下のとおりになっています。(サンプルをインストールすればしっかりと表示されるのです、同じなはずなのに僕が入力しますと上手くいきません) <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> <title>a</title> <style type="text/css"> </style> </head> <body> </body> </html>

    • ベストアンサー
    • CSS
  • 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
  • XHTMLの正しい書き方について質問です。

    WordPressにてHPを作成しています。 出力されたページをAnother HTML-lintでチェックしたところ、XHTML 1.0 Transitionalとして記述しているはずなのですが「HTML4.01 Transitional としてチェックしました。」となり、かなりの数のエラーが検出されてしまいました。 HP作成に関してかなりの初心者でして、何が悪いのかが分かりません。なにとぞご教授下さい。 /* ------------------------------------------------------------ ページソース最初の3行 ------------------------------------------------------------ */ <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja"> /* ------------------------------------------------------------ 最初の3行に対するエラー内容 ------------------------------------------------------------ */ 8: line 1: 最初の記述が DOCTYPE宣言ではありません。 4: line 1: ここに <HTML> が省略されているようです。省略しないようにしましょう。 4: line 1: ここに <HEAD> が省略されているようです。省略しないようにしましょう。 2: line 1: ここに </HEAD> が省略されているとみなします。 9: line 1: <HEAD>~</HEAD> 内には <TITLE> が必要です。 1: line 1: <HEAD> と </HEAD> の間が空です。 4: line 1: <HEAD>~</HEAD> 内に <META HTTP-EQUIV="CONTENT-TYPE" CONTENT="~"> が含まれていません。 4: line 1: ここに <BODY> が省略されているようです。省略しないようにしましょう。 5: line 1: メタ文字 `<` は `&lt;` と書かなければなりません。 5: line 1: メタ文字 `>` は `&gt;` と書かなければなりません。 9: line 2: DOCTYPE宣言は文書の先頭でなければなりません。 2: line 3: <HTML> の前に </BODY> が省略されているとみなします。 9: line 3: <HTML> を 1行目の <HTML>~</HTML> 内に書くことはできません。 5: line 3: <HTML> に他のHTML用の属性 `XMLNS` が指定されています。 5: line 3: <HTML> に他のHTML用の属性 `XML:LANG` が指定されています。

    • ベストアンサー
    • HTML
  • firefox+xhtml+javascript

    お世話になっております。 divをweb上でドラッグできるスクリプトを組みました。 Opera9.6,IE6では動いているのですが、Firefoxでは、ある条件下でしか動きません。 ある条件とは、DOCTYPEの宣言がされていないことで、XHTMLにしようとDOCTYPEを宣言すると、動作しなくなってしまいます。 <?xml version='1.0' encoding='UTF-8'?> <!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.1//EN' 'http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd'> <html xmlns='http://www.w3.org/1999/xhtml' xml:lang='ja'> <head> <meta http-equiv='Content-Type' content='text/html; charset=UTF-8' /> <meta http-equiv='Content-Script-Type' content='text/javascript' /> <title>test</title> <script type='text/javascript' src='FILENAME.js'></script> -------- <!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.1//EN' 'http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd'> を消せば動きます。 仮に、DOCTYPEをHTML4.1などにしても動きません。 クオートをシングルからダブルにしても同じです。 動かない状態でも、JS自体は読んで、onload関数の中は見に行っているようです(alertを埋め込んだらでたので) 可能性として、 外部ファイルのJSの書き方に問題があるのでしょうか? それとも、HTML側に問題があるのでしょうか? ソースを見なくても何か考えられることがあれば、教えてください。 よろしくお願いします。

  • charsetとフォーム入力文字

    Htmlファイルの先頭が <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> ・・・ で始まります。 このファイルのフォームに入力した文字はUTF-8で送られるのでしょうか。 それともOSの文字コードに依存するのでしょうか?

    • ベストアンサー
    • HTML
  • xhtmlからtxt変換 半角文字のせいで文字化け

    題名の通りxhtmlをtxtに変換させたいです。 ウェブサービスを利用してxhtmlをtxtに変えましたが、半角文字から後ろが文字化けしているようです。 例)あいうえお!かきくけこ!さしすせそ  →あいうえお!□□□□□!さしすせそ ヘッドの部分は以下のようになっています。 <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="ja" lang="ja"> <head> よろしくお願いします。

専門家に質問してみよう