独習XML

独習XML1章を読んでのメモを少し.


XMLすげー書きづらい.
Meadow上でやってるけど,間違ったら修正が大変.
上手い方法無いかな〜.
Firefox上では載っている例が動かない.IEでは動くけど.


XMLとHTMLの違い
XMLは,情報の性質と情報の相互関係をより明快に表現できる(タグの名前を自由に付けられるため).
HTMLは,それが見出しであるか本文の段落であるかという程度の曖昧な性質しか伝えられない.
XMLは,開始タグがあれば,必ず終了タグがなければならない.
例外は要素の内容が空である場合.
その場合,<要素名 />の形式で終了タグのない要素を書く.
XMLは,大文字小文字の違いは厳密に区別される(HTMLは区別されない).


XHTML

HTML

WEBページとして表示するドキュメントを記述するためのもの.
そのため,HTMLのタグは情報の書式を指定することを主な目的としている.

XML

ドキュメントの各要素の意味や性質をタグで定義.
XMLドキュメントを扱うプログラムは,各要素をその要素の意味や性質に従って処理する.

XHTML

XML1.0をWEBページで利用できるように,HTML4.01を再構成して再定義したもの.
ドキュメントの中で,XMLのタグと,HTMLで使われてきた,のようなタグ,両方使える.</p> </div> </div> <footer class="entry-footer"> <div class="entry-tags-wrapper"> <div class="entry-tags"> </div> </div> <p class="entry-footer-section track-inview-by-gtm" data-gtm-track-json="{"area": "finish_reading"}"> <span class="author vcard"><span class="fn" data-load-nickname="1" data-user-name="khiker" >khiker</span></span> <span class="entry-footer-time"><a href="https://khiker.hatenablog.jp/entry/20060617/1150561605"><time data-relative datetime="2006-06-16T16:26:45Z" title="2006-06-16T16:26:45Z" class="updated">2006-06-17 01:26</time></a></span> <span class=" entry-footer-subscribe " data-test-blog-controlls-subscribe> <a href="https://blog.hatena.ne.jp/khiker/khiker.hatenablog.jp/subscribe?utm_campaign=subscribe_blog&utm_source=blogs_entry_footer&utm_medium=button"> 読者になる </a> </span> </p> <div class="hatena-star-container" data-hatena-star-container data-hatena-star-url="https://khiker.hatenablog.jp/entry/20060617/1150561605" data-hatena-star-title=" 独習XML" data-hatena-star-variant="profile-icon" data-hatena-star-profile-url-template="https://blog.hatena.ne.jp/{username}/" ></div> <div class="social-buttons"> <div class="social-button-item"> <a href="https://b.hatena.ne.jp/entry/s/khiker.hatenablog.jp/entry/20060617/1150561605" class="hatena-bookmark-button" data-hatena-bookmark-url="https://khiker.hatenablog.jp/entry/20060617/1150561605" data-hatena-bookmark-layout="vertical-balloon" data-hatena-bookmark-lang="ja" title="この記事をはてなブックマークに追加"><img src="https://b.st-hatena.com/images/entry-button/button-only.gif" alt="この記事をはてなブックマークに追加" width="20" height="20" style="border: none;" /></a> </div> <div class="social-button-item"> <div class="fb-share-button" data-layout="box_count" data-href="https://khiker.hatenablog.jp/entry/20060617/1150561605"></div> </div> <div class="social-button-item"> <a class="entry-share-button entry-share-button-twitter test-share-button-twitter" href="https://twitter.com/intent/tweet?text=+%E7%8B%AC%E7%BF%92XML+-+%E3%81%A8%E3%82%8A%E3%81%82%E3%81%88%E3%81%9A%E6%9A%87%E3%81%A0%E3%81%A3%E3%81%9F%E3%81%97%E4%BD%95%E3%81%A8%E3%81%AA%E3%81%8F%E3%81%AF%E3%81%98%E3%82%81%E3%81%9F%E3%83%96%E3%83%AD%E3%82%B0&url=https%3A%2F%2Fkhiker.hatenablog.jp%2Fentry%2F20060617%2F1150561605" title="X(Twitter)で投稿する" ></a> </div> </div> <div class="google-afc-image test-google-rectangle-ads"> <div id="google_afc_user_container_1" class="google-afc-user-container google_afc_blocklink2_5 google_afc_boder" data-test-unit="/4374287/blog_user"></div> <a href="http://blog.hatena.ne.jp/guide/pro" class="open-pro-modal" data-guide-pro-modal-ad-url="https://hatena.blog/guide/pro/modal/ad">広告を非表示にする</a> </div> <div class="customized-footer"> <div class="entry-footer-modules" id="entry-footer-secondary-modules"> </div> </div> <div class="comment-box js-comment-box"> <ul class="comment js-comment"> <li class="read-more-comments" style="display: none;"><a>もっと読む</a></li> </ul> <a class="leave-comment-title js-leave-comment-title">コメントを書く</a> </div> </footer> </div> </article> <!-- rakuten_ad_target_end --> <!-- google_ad_section_end --> <div class="pager pager-permalink permalink"> <span class="pager-prev"> <a href="https://khiker.hatenablog.jp/entry/20060618/1150637033" rel="prev"> <span class="pager-arrow">« </span> とりあえず,46日目 </a> </span> <span class="pager-next"> <a href="https://khiker.hatenablog.jp/entry/20060617/1150561604" rel="next"> 優しいEmacs-Lisp講座 <span class="pager-arrow"> »</span> </a> </span> </div> </div> </div> <aside id="box1"> <div id="box1-inner"> </div> </aside> </div><!-- #wrapper --> <aside id="box2"> <div id="box2-inner"> <div class="hatena-module hatena-module-recent-entries "> <div class="hatena-module-title"> <a href="https://khiker.hatenablog.jp/archive"> 最新記事 </a> </div> <div class="hatena-module-body"> <ul class="recent-entries hatena-urllist "> <li class="urllist-item recent-entries-item"> <div class="urllist-item-inner recent-entries-item-inner"> <a href="https://khiker.hatenablog.jp/entry/20141229/1419859065" class="urllist-title-link recent-entries-title-link urllist-title recent-entries-title"> コミケで Emacs 本出します</a> </div> </li> <li class="urllist-item recent-entries-item"> <div class="urllist-item-inner recent-entries-item-inner"> <a href="https://khiker.hatenablog.jp/entry/20131230/c85" class="urllist-title-link recent-entries-title-link urllist-title recent-entries-title">コミケで Emacs 本出します</a> </div> </li> <li class="urllist-item recent-entries-item"> <div class="urllist-item-inner recent-entries-item-inner"> <a href="https://khiker.hatenablog.jp/entry/20130329/tmux_mem_cpu_load" class="urllist-title-link recent-entries-title-link urllist-title recent-entries-title"> tmux-mem-cpu-load</a> </div> </li> <li class="urllist-item recent-entries-item"> <div class="urllist-item-inner recent-entries-item-inner"> <a href="https://khiker.hatenablog.jp/entry/20130329/thinkfan" class="urllist-title-link recent-entries-title-link urllist-title recent-entries-title"> thinkfan</a> </div> </li> <li class="urllist-item recent-entries-item"> <div class="urllist-item-inner recent-entries-item-inner"> <a href="https://khiker.hatenablog.jp/entry/20121230/c83_keyboard" class="urllist-title-link recent-entries-title-link urllist-title recent-entries-title"> コミケでキーボード本出します</a> </div> </li> </ul> </div> </div> </div> </aside> </div> </div> </div> </div> <footer id="footer" data-brand="hatenablog"> <div id="footer-inner"> <div style="display:none !important" class="guest-footer js-guide-register test-blogs-register-guide" data-action="guide-register"> <div class="guest-footer-content"> <h3>はてなブログをはじめよう!</h3> <p>khikerさんは、はてなブログを使っています。あなたもはてなブログをはじめてみませんか?</p> <div class="guest-footer-btn-container"> <div class="guest-footer-btn"> <a class="btn btn-register js-inherit-ga" href="https://blog.hatena.ne.jp/register?via=200227" target="_blank">はてなブログをはじめる(無料)</a> </div> <div class="guest-footer-btn"> <a href="https://hatena.blog/guide" target="_blank">はてなブログとは</a> </div> </div> </div> </div> <address class="footer-address"> <a href="https://khiker.hatenablog.jp/"> <img src="https://cdn.blog.st-hatena.com/images/admin/blog-icon-noimage.png" width="16" height="16" alt="とりあえず暇だったし何となくはじめたブログ"/> <span class="footer-address-name">とりあえず暇だったし何となくはじめたブログ</span> </a> </address> <p class="services"> Powered by <a href="https://hatena.blog/">Hatena Blog</a> | <a href="https://blog.hatena.ne.jp/-/abuse_report?target_url=https%3A%2F%2Fkhiker.hatenablog.jp%2Fentry%2F20060617%2F1150561605" class="report-abuse-link test-report-abuse-link" target="_blank">ブログを報告する</a> </p> </div> </footer> <script async src="https://s.hatena.ne.jp/js/widget/star.js"></script> <script> if (typeof window.Hatena === 'undefined') { window.Hatena = {}; } if (!Hatena.hasOwnProperty('Star')) { Hatena.Star = { VERSION: 2, }; } </script> <div id="fb-root"></div> <script>(function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0]; if (d.getElementById(id)) return; js = d.createElement(s); js.id = id; js.src = "//connect.facebook.net/ja_JP/sdk.js#xfbml=1&appId=719729204785177&version=v17.0"; fjs.parentNode.insertBefore(js, fjs); }(document, 'script', 'facebook-jssdk'));</script> <div class="quote-box"> <div class="tooltip-quote tooltip-quote-stock"> <i class="blogicon-quote" title="引用をストック"></i> </div> <div class="tooltip-quote tooltip-quote-tweet js-tooltip-quote-tweet"> <a class="js-tweet-quote" target="_blank" data-track-name="quote-tweet" data-track-once> <img src="https://cdn.blog.st-hatena.com/images/admin/quote/quote-x-icon.svg?version=01fe96792a1563fb279e3aa087aa90" title="引用して投稿する" > </a> </div> </div> <div class="quote-stock-panel" id="quote-stock-message-box" style="position: absolute; z-index: 3000"> <div class="message-box" id="quote-stock-succeeded-message" style="display: none"> <p>引用をストックしました</p> <button class="btn btn-primary" id="quote-stock-show-editor-button" data-track-name="curation-quote-edit-button">ストック一覧を見る</button> <button class="btn quote-stock-close-message-button">閉じる</button> </div> <div class="message-box" id="quote-login-required-message" style="display: none"> <p>引用するにはまずログインしてください</p> <button class="btn btn-primary" id="quote-login-button">ログイン</button> <button class="btn quote-stock-close-message-button">閉じる</button> </div> <div class="error-box" id="quote-stock-failed-message" style="display: none"> <p>引用をストックできませんでした。再度お試しください</p> <button class="btn quote-stock-close-message-button">閉じる</button> </div> <div class="error-box" id="unstockable-quote-message-box" style="display: none; position: absolute; z-index: 3000;"> <p>限定公開記事のため引用できません。</p> </div> </div> <script type="x-underscore-template" id="js-requote-button-template"> <div class="requote-button js-requote-button"> <button class="requote-button-btn tipsy-top" title="引用する"><i class="blogicon-quote"></i></button> </div> </script> <div id="hidden-subscribe-button" style="display: none;"> <div class="hatena-follow-button-box btn-subscribe js-hatena-follow-button-box" > <a href="#" class="hatena-follow-button js-hatena-follow-button"> <span class="subscribing"> <span class="foreground">読者です</span> <span class="background">読者をやめる</span> </span> <span class="unsubscribing" data-track-name="profile-widget-subscribe-button" data-track-once> <span class="foreground">読者になる</span> <span class="background">読者になる</span> </span> </a> <div class="subscription-count-box js-subscription-count-box"> <i></i> <u></u> <span class="subscription-count js-subscription-count"> </span> </div> </div> </div> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script> <script src="https://b.st-hatena.com/js/bookmark_button.js" charset="utf-8" async="async"></script> <script type="text/javascript" src="https://cdn.blog.st-hatena.com/js/external/jquery.min.js?v=1.12.4&version=01fe96792a1563fb279e3aa087aa90"></script> <script src="https://cdn.blog.st-hatena.com/js/texts-ja.js?version=01fe96792a1563fb279e3aa087aa90"></script> <script id="vendors-js" data-env="production" src="https://cdn.blog.st-hatena.com/js/vendors.js?version=01fe96792a1563fb279e3aa087aa90" crossorigin="anonymous"></script> <script id="hatenablog-js" data-env="production" src="https://cdn.blog.st-hatena.com/js/hatenablog.js?version=01fe96792a1563fb279e3aa087aa90" crossorigin="anonymous" data-page-id="entry"></script> <script>Hatena.Diary.GlobalHeader.init()</script> <script id="valve-dmp" data-service="blog" src="https://cdn.pool.st-hatena.com/valve/dmp.js" data-test-id="dmpjs" async></script> </body> </html>