プロが教えるわが家の防犯対策術!

XMLとXHTMLの違いってなんでしょうか?教えてください!

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

A 回答 (6件)

 まず,XML と XHTML の関係をはっきりさせておきましょう。

「XHTML は XML からつくられたもの」ということです。

 経緯を説明すると,まず,ウェブで HTML が普及したわけですが,そのうちに HTML では不足が生じてきました。HTML はタグ群で文書を記述するのですが,要素の種類が固定されていて柔軟な運用ができなかった(具体的には,文書:ウェブページを記述する以外の用途につかえなかった)のです。もっと抽象的な言語をつくって,それから用途に応じてさまざまな言語をつくれるようにしようということになりました。こうして誕生したのが XML です。
 XML は抽象的な言語(メタ言語)で,簡単に言えば「タグ群でデータを記述する」という文法規則をもちます。しかし,HTML のように要素の種類は定義されていません(ですから,「XML タグ辞典」なるものは存在しないのです)。XML から「具体的な言語(XML アプリケーション)」をつくって運用することになります。
 かくして XML は普及するところとなったのですが,すると,HTML にまた問題が生じました。HTML は XML の文法規則にのっとっておらず,XML 時代を生き残れないという点です。そこで HTML を XML の枠組みの中で作り直すことにしました。これが XHTML です。XHTML は XML アプリケーションということになります。

 ちなみに,HTML と XML の背景には SGML というものがあります。SGML もメタな言語で,要素の種類などは定義されていません。XML よりはるかに古いものです。SGML は主に文書交換を想定して作られました。HTML は(いちおう)SGML アプリケーションです。
 XML は,SGML のサブセット(部分集合)という位置付けになります。実は SGML は処理が難しく,処理を思い切って簡単にするために XML では文法規則が改められています。

 以上をまとめると,
 - HTML は SGML アプリケーション
 - XML は SGML のサブセット
 - XHTML は XML アプリケーション
 - XHTML は HTML を XML の枠内で作り直したもの
ということになります。
    • good
    • 5

lunamariaさんがXMLとXHTMLとのどちらかをイメージしておられる、と思ってよいのでしょうか。



No.3やNo.5の方がおっしゃられていることがもしかしたら難しいかもしれない、と思って補足の意味で書きます。以上で分かれば読み飛ばしてください。

XMLというのは、とにかく「タグ」を使って文章の構造を表すことのできる言語です。
タグというのは、この場合、<html>や<name>といったカッコで囲まれたもののことです。
このタグは「開始タグ」と「終了タグ」が必ずセットになっていなければいけません。そして入れ子構造になっていなければいけません。大雑把に言うと、このようなルールがあります。

このXMLのルールの中で、WEBブラウザのために作られたのがXHTMLです。
XMLのタグは命名規則に基づいて色々名前を決められますが、XHTMLで使えるタグの名前は決まっています。
XHTMLはXMLのルールの中でHTMLを作り直したもの、といったほうがもしかしたら分かりやすいかもしれません。

つまり、XHTMLで書かれた文書はXMLで書かれた文書であるといえます。

補足としてはこのくらいで分かりますでしょうか?
    • good
    • 1

「たのしいXML XML-XHTML入門ページです」というページに詳しく記載されております。



参考URL:http://www.cityfujisawa.ne.jp/~yanai/xml/
    • good
    • 1

もともと、XMLもHTMLも、SGMLという複雑な仕様を簡略化したもので。


HTMLはとにかく書きやすく、XMLはとにかく構造をわかりやすく
といったコンセプトでそれぞれ簡略化されました。

HTMLが復旧し、それはそれでよかったのですが、
その後、アプリケーションの分野でXMLが急速に成長し、
HTMLもXMLとして扱いたいという要望が膨れ上がりました。

そこで生まれたのがXHTMLです。
XMLとしても扱えて、HTMLとしてもかろうじて扱える。
そんなものです。

で、

> XMLとXHTMLの違いってなんでしょうか?教えてください!

XHTMLはXML形式で書かれたHTMLです。ということでしょうか?

--HTMLとXHTMLの具体的な違い--

HTMLでは、以下のように終了タグの無いタグをかける
<br>

XHTMLでは、終了タグの無いタグは許可されず。
<br></br>(または、それを簡略かした<br />)と書かなければならない。
    • good
    • 2

僕は、


XMLは階層型オブジェクト指向の
HTMLで、
XHTMLは単なるHTMLの拡張だと
思っています…。
    • good
    • 1

簡単に言ってしまうと、HTMLの文法がごちゃごちゃ


しすぎたんで、XMLの形式にあわせて整理しなおした
のがXHTMLということだと私は解釈してます。

参考URL:http://www.kanzaki.com/docs/html/xhtml1.html
    • good
    • 0

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人が検索しているワード

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

QHTMLとXMLの違いがよくわからないのですが

HTMLとXMLの違いがよくわからないのですが、
HPを作る分にはHTMLの知識があれば十分ですか?
XMLも必要なのでしょうか?

Aベストアンサー

さかのぼると、SGMLという軍事目的で定められた規格があります。たとえば、ある軍艦のWordで作成されたマニュアルを数十年経って読もうとしたら、すでにこの世に、当時の古いWordを扱えるコンピューターが無かったら・・。そのために純粋なテキストだけで作成されたデータに、段落や題字を示すタグと、それぞれのタグがどういう意味であるかなどをも規定--「インスタンス・DTD・SGML宣言」--しておけば、何年後でも使えます。
 ただ、SGMLは膨大で複雑なため、簡略化されたXMLが考案され広く使われています。

 一方HTMLは、このSGMLを参考に---ときもりではない---作られたもので、後になってSGMLらしくはなりましたが---、DTDという文書規定とタグ付けされたテキストのセットで利用されるものです。
 一時期、HTMLはHTML4.01を最後にXMLに合わせて書き直された、XHTMLに完全移行する予定でしたが、やはり複雑で受け入れられにくく、結局HTML5として再び歩み始めることになりました。
 XHTML(XMLの文法で書かれたHTML)とHTMLには、いくつか違いがあります。
・XHTMLは、要素名、属性名は小文字で書くこと
・XHTMLは、属性値は""で囲むこと
・XHTMLは空要素は/>で閉じること
  空要素とは、タグに括られた内容を持つ得ない要素--IMG,BR,HRなど
 が大きな違いです。この違いはXMLとの比較にもあてはまりますが、XMLはタグを自在に設定できるのが異なります。
<document>
 <midashi>なんたらについて</midashi>
 <p>なんたらかんたら・・・・</p>
 <photo>
  <path>/images/photo/abc.jpg</path>
  <data k="date">2112.12.01</data>
・・・とか。
 ブラウザで表示するためには、別途スタイルシート(XSLT)が必要ですが・・

 ⇒XML画像データををHTMLで簡単に表示する方法 - HTML - 教えて!goo( http://oshiete.goo.ne.jp/qa/7779854.html )
 ⇒XSL変換したが画像が表示できません - HTML - 教えて!goo( http://oshiete.goo.ne.jp/qa/7782480.html )
 XMLとHTMLの関係は、上記を見れば分かるでしょう。

 なお、次期バージョンのHTML5には、XML(XHTML)として記述する方法もあります。
 ⇒Polyglot マークアップ: HTML 互換の XHTML 文書( http://standards.mitsue.co.jp/resources/w3c/TR/html-polyglot/ )

[HTML4あたり]
・HTMLとXHTMLは異なる。一方に従えば一方ではエラー
・XHTMLはHTMLをXML文法であらわしたもの
・XMLはHTMLのみならず、様々なものに使われる。最新のwordやexcelのファイルはXMLです。
[HTML5]
・HTMLであってもXML的な書き方が出来る。エラーにならない
・mathMLやSVGのようなXML要素をそのまま埋め込むことができる。

さかのぼると、SGMLという軍事目的で定められた規格があります。たとえば、ある軍艦のWordで作成されたマニュアルを数十年経って読もうとしたら、すでにこの世に、当時の古いWordを扱えるコンピューターが無かったら・・。そのために純粋なテキストだけで作成されたデータに、段落や題字を示すタグと、それぞれのタグがどういう意味であるかなどをも規定--「インスタンス・DTD・SGML宣言」--しておけば、何年後でも使えます。
 ただ、SGMLは膨大で複雑なため、簡略化されたXMLが考案され広く使われています。

 ...続きを読む

QHTMLとXMLの違い

HTMLとXMLの違いについて、簡単かつ分かりやすくご説明いただくことが可能でしょうか?

Aベストアンサー

共通点は、両方ともタグをつけたテキストであること。
異なる点は、
HTMLは
・ブラウザでの表示専用の言語である
・表示できればいいってことで、あんまり文法をうるさく言われない(間違っていても、ブラウザが何とかしてくれることが多い)
→気楽に使える

XMLは
・本来はタグに意味を持たせて、データの交換をするためのもの。
・CSSを使って、HTMLと同じようにブラウザで表示をさせることもできる。
・文法が厳しい(でないとデータ交換ができなくなる)
・文法が厳密なため、その規則を踏まえて変換することができる(XSLT)

みたいな感じかなあ。使用目的を持っていない方に対してわかりやすく説明するのは、私の能力ではちょっとムリです。

QIOException ってどういうときに起こるのでしょうか?

IOException ってどういうときに起こるのでしょうか?

http://www.atmarkit.co.jp/fjava/rensai2/javaent12/javaent12.html
を見て勉強しています。

  catch ( IOException e) {
    System.out.println( "キーボードが故障しているのかもしれません" );
  }

と書いてあります。
ハード(キーボード)が故障しているのを Java のプログラムのレベル(ソフトウェア)で感知できるというのがよくわかりません。「

NumberFormatException の方はわかるのですが・・・

Aベストアンサー

現実的には、キーボードからの入力でIOExceptionが発生することは、
ほとんどあり得ないと思います。
そもそも、キーボードが故障していたとしても、
IOExceptionは投げられないでしょう。
「キーボードが故障しているのかもしれません」というのは、
その記事の著者が冗談で書いたのだと思います。

ではなぜ、try-catchを書かなくてはいけないのか?
InputStreamやBufferedReaderは、
データ入力を抽象化したものだからです。
実際の入力元はキーボードだったり、ファイルだったり、
ネットワーク接続だったりするわけですけど、
InputStreamは、その入力元の情報を持っていないので、
データを読み取る際は常に
IOExceptionをキャッチするコードを書かなくてはいけません。
たとえ、絶対にIOエラーが発生しないストリームだとしても。

さらに付け加えるなら、
そもそも「標準入力=キーボード」であるとは限りません。
(一般的にはキーボードであることが多いですが。)
Javaでは、
System.setIn(InputStream)
を呼び出して、標準入力を変えてしまうことができますし、
標準入力を指定してプログラムを実行することができるOSもあります。

追伸1:
例外をキャッチしたときは、
スタックトレースをプリントすることをおすすめします。
catch (IOException e) {
e.printStackTrace();
}

追伸2:
そのプログラムでIOExceptionを発生させる最も簡単な方法は、
readLine()を呼び出す前に
標準入力(System.in)を閉じてしまうことです。
System.in.close();

現実的には、キーボードからの入力でIOExceptionが発生することは、
ほとんどあり得ないと思います。
そもそも、キーボードが故障していたとしても、
IOExceptionは投げられないでしょう。
「キーボードが故障しているのかもしれません」というのは、
その記事の著者が冗談で書いたのだと思います。

ではなぜ、try-catchを書かなくてはいけないのか?
InputStreamやBufferedReaderは、
データ入力を抽象化したものだからです。
実際の入力元はキーボードだったり、ファイルだったり、
ネットワーク接...続きを読む

QJavaScriptde途中で、「exit」するには?

function kensaku(){
s_data = document.kaiin_form.input_name.value;

if(!s_data){ alert("キーワードを入れて下さい!"); }

if(s_data != dumy){ ...... }
for(i=st_no;i<=n;i++){
......省略.................;
.......省略................}
}

----------------------------------
3行目で表示されたアラートをOKで閉じても、4行目以下が実行されてしまいます。
3行目でexitするにはどうすれば良いでしょうか?

Aベストアンサー

>関数(kensaku())からは抜けられませんでした。
そうですね、勘違いしていました、f(^^;
すみません。
if(!s_data){
alert("キーワードを入れて下さい!");
return;
}
ですね。

QEclipseでのJDBCドライバについて

Eclipse3.1でデータベース(mysql)にアクセスするプログラムを作ったのですが下記のエラーが出ます。

java.lang.ClassNotFoundException: com.mysql.jdbc.Driver

これはJDBCドライバのセットアップがうまく出来ていないからなのでしょうか?
またEclipseでは、~.jarというファイルをプロジェクトのWEB-INFのlibフォルダに入れれば使える印象があるのですが、参考書(EclipseのではなくJAVAなどの)などにあるようにTomcatのインストールフォルダ以下common/libに入れて環境変数を変更しないといけないのでしょうか?

ご存知の方教えてください、よろしくお願いします。

Aベストアンサー

WEB-INF以下に入れると実行はできるのですが、エクリプスが.javaファイルをコンパイルすることができません。projectの一覧を右クリックしてpropertyを選択し、ダイアログ右側からJava Build Pathを選択し、タグからLibrariesを選び、Add JARsボタンをおして.jarファイルを登録して下さい。
たぶんこれでコンパイルできるはずです。

QXMLのHTMLへの変換 (初心者)

例えば、以下のようなsample.xmlをWebブラウザで表示する為には
どのようにするればよろしいのでしょうか。どなたか教えてください。


 <?xml version="1.0" encoding="Shift_JIS" ?>
- <cars>
- <car>
<name>乗用車</name>
<price>150</price>
 </car>
</cars>

Aベストアンサー

こんにちわ。
もう1ヶ月以上たっているから、遅いかもしれませんが
現在私も同じような勉強をしていて、難しいことはわからないけど
質問内容を見て「私もこのレベル!!」と思ったので参加してみます。

まず、XMLってそのままではブラウザーに表示できないようです。
HTMLと違って表示機能はもっていなくて、質問に書かれていたものは
単なるデータのみのようですね。
 他に方法はたくさんあるのかもしれませんが、私の勉強したところによると
XMLをブラウザーに表示する為には、他にXSLと言われるスタイルシートを
用意して、XML(データ)+XSL(スタイルシート)の2ファイル(この場合は)
を元に、XSLT(extensible Stylesheet Language Transformation)と呼ばれる
変換ツールを使って、HTMLや他の形式に変換して初めて表示できる
(スタイルシートによっては、音声として聞ける)状態のファイルに
なるようです。
 このXSLTというツールは、無料でダウンロードできるものが多数あるようです。
ちなみに私はApache(アパッチ)のサイトからダウンロードしました。


質問のXMLには、以下の2行と、下の1行をかぶせて、

<?xml version="1.0" encoding="Shift_JIS" ?>
<PAGE>
・・・・・・・・・・・・・・・・・・・・・・
</PAGE>


別に用意するスタイルシートは以下のような感じに作るのかなぁ。。。。

<?xml version="1.0" encoding="Shift_JIS"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/
1999/XSL/Transform" version="1.0">
<xsl:output method="html" encoding="Shift_JIS"/>

<xsl:template match="/">
<xsl:apply-templates/>
</xsl:template>

<xsl:template match="PAGE">
<HTML>
<BODY>
<xsl:apply-templates/>
</BODY>
</HTML>
</xsl:template>

<xsl:template match="cars">
<xsl:apply-templates/>
</xsl:template>

<xsl:template match="car">
<xsl:value-of select="name"/><BR/>
<xsl:value-of select="price"/><BR/>
</xsl:template>

</xsl:stylesheet>

そして、XSLTツールで変換するとHTMLができると思いますよ。

http://www.atmarkit.co.jp/fxml/tanpatsu/xslt/xslt00.html
には、XMLをHTMLに変換する方法について、サンプルをもとにやり方とか
書かれています。結構参考になるので覗いてみてはいかがですか?

参考URL:http://www.atmarkit.co.jp/fxml/tanpatsu/xslt/xslt00.html

こんにちわ。
もう1ヶ月以上たっているから、遅いかもしれませんが
現在私も同じような勉強をしていて、難しいことはわからないけど
質問内容を見て「私もこのレベル!!」と思ったので参加してみます。

まず、XMLってそのままではブラウザーに表示できないようです。
HTMLと違って表示機能はもっていなくて、質問に書かれていたものは
単なるデータのみのようですね。
 他に方法はたくさんあるのかもしれませんが、私の勉強したところによると
XMLをブラウザーに表示する為には、他にXSLと言われるス...続きを読む

QonClickに複数の関数を挿入する方法

初心者なのですがアニメーションの関数anime1、anime2、anime3を作成し、onClickに下記のように設定しました。
クリックするとアニメーション2つの設定ではは動くのですが、3つ目を設定すると動かなくなります。
通常はこのような設定はしないものなのでしょうか?
教えてください。
よろしくお願いします。
<INPUT type="button" value="START" onClick="anime1(), anime2()">・・・OKです。
<INPUT type="button" value="START" onClick="anime1(), anime2(),anime3()">・・・動きません。

Aベストアンサー

セミコロンでつなぐのが常道ですが、3つ以上なら
別途function化したほうが、可読性が高くなると
思います。

Qhtml で 変数を定義できますか?

html(できればjava不使用)で変数に文字列をいれてつかう、またはそれに近いことはできないでしょうか?

例**************************
$color1="#000000"

<tr bgcolor=$color1>内容1<tr>
<tr bgcolor=$color1>内容2<tr>
****************************
みたいな感じです

Aベストアンサー

調べりゃ分かることは???だけど。

CSS2で無理やり作れば・・簡単だけど・・・
生成内容、自動番号振り、リスト ( http://www.swlab.it.okayama-u.ac.jp/man/rec-css2/generate.html )
 本来はXSLTで作るほうがよいかと・・・
 <th><xsl:value-of select="parson" />の歌</th>


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="ja">
<head>
<meta http-equiv="content-type" content="text/html; charset=Shift_JIS">
<title>サンプル</title>
<meta name="author" content="ORUKA1951">
<meta http-equiv="Content-Style-Type" content="text/css">
<link rev="made" href="mailto:orika1951@hoge.com" title="send a mail" >
<link rel="START" href="../index.html">
<style type="text/css">
<!--
.parson1:before{content:"田中";}
p.age1:after{content:"36歳";}
-->
</style>
</head>
<body>
<h1>サンプル</h1>
<p class="parson1">は男の子</p>
<p class="parson1 age1">の年齢は</p>
<p>私の彼氏は<span class="parson1">君だよ</p>
</body>
</html>

調べりゃ分かることは???だけど。

CSS2で無理やり作れば・・簡単だけど・・・
生成内容、自動番号振り、リスト ( http://www.swlab.it.okayama-u.ac.jp/man/rec-css2/generate.html )
 本来はXSLTで作るほうがよいかと・・・
 <th><xsl:value-of select="parson" />の歌</th>


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="ja">
<head>
<meta http-equiv="content-type" content="text/html; charset=Shift_JIS">
<title>サンプル</title>
<met...続きを読む

QInner join と Left joinの明確な違いは?

Inner join と Left joinの違いがよくわかりません。
教えてください。

Aベストアンサー

出てくる結果が違います。

テーブル1のフィールド1に、






が、

テーブル2のフィールド1に、






が入力されている場合、

SELECT [テーブル1].[フィールド1], [テーブル2].[フィールド1]
FROM テーブル1 LEFT JOIN テーブル2 ON [テーブル1].[フィールド1]=[テーブル2].[フィールド1];
では、結果は、
テーブル1.フィールド1 テーブル2.フィールド1
1               1
2               2
3               3
4               NULL
5               NULL
6               NULL
の6レコードが出力されますが、

SELECT [テーブル1].[フィールド1], [テーブル2].[フィールド1]
FROM テーブル1 INNER JOIN テーブル2 ON [テーブル1].[フィールド1]=[テーブル2].[フィールド1];
では、結果は、
テーブル1.フィールド1 テーブル2.フィールド1
1               1
2               2
3               3
の3レコードしか出力されません。

出てくる結果が違います。

テーブル1のフィールド1に、






が、

テーブル2のフィールド1に、






が入力されている場合、

SELECT [テーブル1].[フィールド1], [テーブル2].[フィールド1]
FROM テーブル1 LEFT JOIN テーブル2 ON [テーブル1].[フィールド1]=[テーブル2].[フィールド1];
では、結果は、
テーブル1.フィールド1 テーブル2.フィールド1
1               1
2               2
3           ...続きを読む

Qpublic static void main (String args[])

基本すぎて申し訳ありませんが、
public static void main (String args[])とはどういう意味を持っていますか?
教えてください。。

Aベストアンサー

staticとかの意味はNo1の方の説明以外にありません。

mainは最初に実行されるメソッドという説明がされますので、「クラスを実行する時の引数とは?」と引っかかっているのかもしれませんね。
これはコマンドライン引数と呼ばれます。

たとえば、次のプログラム

public class ArgsTest{
  public static void main(String[] args){
    System.out.println(args.length);
    for(int i = 0 ; i < args.length ; i++){
      System.out.println(args[i]);
    }
  }
}

これを
>java ArgsTest abcde fghij(エンター)
として実行するとabcdeとfghijが引数となります。

ちなみに、mainはpublicでstaticなメソッドなので、
public class ArgsTest2{
  public static void main(String args[]){
    tamesi();
  }
  void tamesi(){
    String[] test = {"abcde","fghij"};
    ArgsTest.main(test);
  }
}
のように、外部のクラスからクラス名.mainで呼び出せます。(この2つのプログラムは、私が悩んだ時に試しにつくったものです)

ちなみにargsはarguments(=引数)の略で、mainの引数として、よく使われます。
argvのほうはargument valueの略です。C言語を使っていた人の中にはargvを使う人がいるかもしれません。

staticとかの意味はNo1の方の説明以外にありません。

mainは最初に実行されるメソッドという説明がされますので、「クラスを実行する時の引数とは?」と引っかかっているのかもしれませんね。
これはコマンドライン引数と呼ばれます。

たとえば、次のプログラム

public class ArgsTest{
  public static void main(String[] args){
    System.out.println(args.length);
    for(int i = 0 ; i < args.length ; i++){
      System.out.println(args[i]);
    }
  }
}

...続きを読む


人気Q&Aランキング