質問箱/4241

カテゴリ
サマリデフォルトスキンのXHTMLタグの使い方
バージョン1.4.7
投稿者bias?
状態却下
投稿日2008-02-13 (水) 01:46:01

質問

pukiwiki.skin.php 282行目付近にある

<p />

ですが、これはpタグを改行として使っているのですか? pタグは空要素ではないので、こういう書き方はおかしいですし、XHTMLではこういう「使い方」はダメだった気がするのですが、気のせいでしょうか?

回答

  • 空要素というのは文字通り要素が空であることを指すので、pタグは空要素ではないというのは間違いです。つまり、空の文字列の段落は<p></p>とかいても、<p />と書いても良いわけです。
    ちょっと調べてみましたが、pタグを空要素で使用してはいけないという情報は見あたりませんでした*1。なのでこういう使い方は問題ないと思います。
    こういう使い方がダメという根拠があったら教えて下さい。 -- ぃぉぃぉ 2008-02-13 (水) 03:40:20
  • むしろ何のために必要なのか教えてください。 -- bias? 2008-02-15 (金) 22:40:19
  • 色々スキンを修正したりソースを解析したりして、PukiWikiが文法重視で思想無視である事が理解できましたので、質問を完了とさせていただきます。 -- bias? 2008-02-15 (金) 22:53:58
  • それが理解できると何故この質問が完了になるのか理解できませんが、とりあえず駄目という根拠は出していただけないのですね?何ら説明無くただ駄目だというだけなら、biasさんの表現するところの「思想無視」というのもどれほどの妥当性のある「理解」か… -- 2008-02-16 (土) 03:01:17
  • 却下にしておきます。 -- 2008-02-16 (土) 11:08:05
  • 私も P タグは気になっていました。Another HTML-lint gateway でチェックすると減点されるので削除していました。ソース http://htmllint.itc.keio.ac.jp/htmllint/explain.html#p-isnot-br ただ、私にはソースで断定している事を証明する事は出来ず、「そーなんだー」程度の理解しかしていません。 -- Yoshii 2008-02-17 (日) 19:47:41
    • htmllintの説明文も「終了タグを伴って定義されています。」と書いてありますね。<p>だけではだめですよ、</p>で終わりなさい、という意味です。で、<タグ></タグ>を省略して<タグ />とできるというルールに従い<p />としても、htmllintの199には反していません。 -- ぃぉぃぉ 2008-02-20 (水) 12:24:44
  • もう少し補足。「P タグ 改行」でググると Pタグ を改行に使用してはいけない、という情報は結構ある。http://www.kanzaki.com/docs/html/htminfo11.html#S4 など。 しかし、逆に <p /> って使ってい良いなんて情報がみつけられないよ? そして、p タグ が空要素 だって本当?http://www.tagindex.com/html_tag/basic/emp_element.html -- Yoshii 2008-02-17 (日) 22:10:46
    • Yoshiiさんの誤読かと思われます。上のリンク先(http://www.kanzaki.com/docs/html/htminfo11.html#S4)にも「Pタグ を改行に使用してはいけない」とは書いてありませんね。「p要素は「1行空白をあけるためのタグ」ではありません」と書いてあるだけで、改行目的で使用してはいけないとは書いていません。べつに<p />を改行目的に使うべきと言っているのではなく、禁止されてはいない、と言いたいだけですので、そこのところよろしく。
      また、最初のコメントにも書きましたが、pタグは要素ではありません。Yoshiiさんの置かれたリンク(http://www.tagindex.com/html_tag/basic/emp_element.html)を読めば分かりやすいですが、
      - 要素とはタグが何であるかに関係なく、タグに囲まれたもの
      - タグに囲まれたものが空であれば、それを空要素と呼ぶ
      空要素をとってはいけないタグというのは定義されていません。W3Cの仕様をざっと探しただけなので、見つけられなかっただけかもしれません。そういう(pタグが空要素をとってはいけないとw3cで決められているという)情報があれば教えて下さい。 -- ぃぉぃぉ 2008-02-20 (水) 12:24:44
      • とりあえず、自分も誤読していた部分がありました。
        「要素」と、タグに囲まれた「内容」とを取り違えていました。
        要素とは、開始タグから閉じタグまでを呼ぶようですね。失礼しました。
        まだそれでも一行あけるために<p />を使用してはいけない、ということにはつながりませんけど。 -- ぃぉぃぉ 2008-02-22 (金) 01:45:02
  • XHTML™ 1.0: The Extensible HyperText Markup Language

http://www.w3.org/TR/2000/REC-xhtml1-20000126/

C.3 Element Minimization and Empty Element Content

Given an empty instance of an element whose content model is not EMPTY (for example, an empty title or paragraph) do not use the minimized form (e.g. use <p> </p> and not <p />).

  • XHTML™ 1.0: 拡張可能ハイパーテキストマークアップ言語

http://www.doraneko.org/webauth/xhtml10/20000126/

C.3 要素最小化と空要素内容

内容モデルが EMPTY ではない要素に空インスタンスが与えられる場合(たとえば空のタイトルや段落)には、最小化形式は使わないこと(たとえば <p /> は使わず <p> </p> を使う)。

  • 問題と思われる個所
<div id="footer">
 Site admin: <a href="http://pukiwiki.example.com/">anonymous</a><p />
<strong>PukiWiki 1.4.8_alpha</strong> Copyright &copy; 2001-2006 
<a href="http://pukiwiki.sourceforge.jp/">PukiWiki Developers Team</a>. 
License is <a href="http://www.gnu.org/licenses/gpl.html">GPL</a>.<br />
Based on "PukiWiki" 1.3 by <a href="http://factage.com/yu-ji/">yu-ji</a>.
 Powered by PHP 4.4.4-8+etch4. HTML convert time: 0.076 sec.
</div>
  • 5.2.2. Text Module http://www.w3.org/TR/xhtml-modularization/abstract_modules.html#s_textmodule
  • XHMLT1.0 の文献をピックアップしてみました。また、上のURLは XHML1.1 の文献ですが、 p element の Minimal Content Model は PCDATA | Inline であり EMPTY ではありません。空要素(EMPTY ELEMENT)は この EMPTY を指し、内容が空だからという事を EMPTY と言っている訳ではないと思われます。 -- Yoshii 2008-02-20 (水) 22:12:55
  • まずPCDATAは任意の長さを持つ (長さゼロでも良い) 任意のテキストを表します。従ってEMPTYでも良いのです。上記付録Cはnormativeではなくinformativeとなっていますね。つまり規範でなく、参考なので<p />と書くことは禁止されてはいないで、なるべく<p></p>と書きましょうということですね。 -- giogio? 2008-02-20 (水) 23:01:31
  • FireFoxの Html Validatorアドオンでも同じ部分が警告されていて、できるだけ内容の無いpエレメントは使わない方が良いとされているようです*2。 -- teanan 2008-02-21 (木) 02:45:14
  • <p /> は別に XHTML not valid になるわけではないですが、p は「段落」という意味を持つタグなので、段落の内容が空ということは本来ないわけで、XHTML 的に、こんな変な書き方をするな、という投稿主の主張は正しいです。もちろん <p></p> も <p> </p>もそういう意味では同じです。整形目的で使うなということです。blockquote をインデント目的で使うなということと同じです。-- 2008-02-21 (木) 10:20:24
  • 全体的にデフォルトスキンは気持ち悪い所がおおいので根本的に作り直す bugtrack でも立てたほうがいいかもしれませんね。「PukiWiki 導入しました」な方々のほぼ全員がほぼ同じところを書き直している現状は打開すべきかもしれません。問題はせっかく作っても中の人が取り込んでくれることを期待できない現状でしょうか -- 2008-02-21 (木) 10:20:24
    • >「PukiWiki 導入しました」な方々のほぼ全員がほぼ同じところを書き直している現状は打開すべきかもしれません。
      とはどこの情報ですか?情報源開示を求む。 -- 2008-02-21 (木) 11:44:18
    • 必要なものであれば、取り込みます :) -- teanan 2008-02-22 (金) 02:32:33
    • css.php なんていうのは最たるものでしょう。それすらも見たことがないのだとしたらコミッタなのに pukiwiki への興味がなさすぎで悲しくなってきます・・・。他にも多数ありますが、ここでは場違いになるので BugTrack をたててからにしましょう。 -- 2008-02-22 (金) 04:13:18
  • ほほぅ。Recomendationではpタグは省略形を使わないように指示しているのですね。Yoshiiさんポインタどうも。ただxhtml1.1の文献にそういう記述はみつけられないんですよねぇ。PukiWikiのDTDはxhtml1.1を出力していますし。
    まあ、現状<p />としているところを変更してはいけないとは思わないので、<p> </p>とするか、その他の記述とするかしても良いとは思いますね。べつに<p />にこだわる理由はなさそうですから。あぁ、<p> </p>より数バイト通信量が稼げる、というのはあるかな。 -- ぃぉぃぉ 2008-02-21 (木) 12:34:52
  • Wikipediaの情報だし信用できんと言う人もいるかも知れないけれど、Wikipedia:HTML要素では、XHTMLにおける空要素の記述の仕方を説明しているようですが? -- 2008-02-21 (木) 13:49:04
  • td要素などは空要素となりうると思います。「空要素の記法が定義されているのだから、<p>を空要素にしても問題ない」というのは不十分な主張だと思います。多くの人が<p />を書き換えてるという噂が本当なら、それをしている人たちはおそらく「XMLは(見栄え指定ではなく)意味マークアップ言語の設計を支援するために設計された」(※)ということをどこかで聞きそれに基づいて喋っているのでしょう。<p />の妥当性については、議論を(※)の強制力および情報源についてのみにするべきなのではないでしょうか。自分はWikipediaにしか見つけられませんでした。 -- y? 2008-02-21 (木) 15:31:08
  • ここにいる人たちはスキン中の <p /> を守ろうとしているの?それとも今後のためのお勉強議論をしたいだけ? -- 2008-02-22 (金) 04:13:18
  • ええっと、私がとりあえずリンクなどを参照した限りでは、段落は、<p>~</p>をすべきで、<p />はなるべく使うべきではないというようにしか読めなかったんですが?別に禁止されている訳でもないものに何故そこまで目くじらを立てるのかが判りませんが、使いたくないのなら自分のところだけにして置いてはどうですか?とは言え、使うべきではないとされている訳だから、「次のバージョンではなくしたほうがいいのではないでしょうか?」と言う提案程度にして置けば良いのでは無いかと言うのが素直な感想です。(個人的には、まともに動いてりてかつ禁止されているもんでもないんだからどっちでも良いじゃん!だけど。(^^;) -- 2008-02-22 (金) 13:37:51
  • [すみません訂正させてください]現在XHTML2.0はドラフト版ですが、8.6. The p elementには、In comparison with earlier versions of HTML, where a paragraph could only contain inline text,(追加→)XHTML2's paragraphs represent the conceptual idea of a paragraph, and so may contain lists, blockquotes, pre's and tables as well as inline text. Note however that they may not contain directly nested p elements. と書かれていて、(削除→)inline textしか含んでいません(追加→)以前inline textしか含んでないところにリスト、ブロッククォート、整形済み文書をふくめてよいです。そしてinline textが0回現れるときは、(追加→)かつ、終了タグが必須のとき(この記述がまだないです)、<p></p>とはかけるが<p />は駄目になります。今のpukiwiki1.4.7はXHTML1.1準拠ということです。XHTML2.0が勧告になるのを待つしかありません。 -- giogio? 2008-02-22 (金) 18:39:44


*1 XHTMLでググったページを読んだり、http://www.w3.org/TR/xhtml11/を読んだり
*2 http://www.w3.org/TR/html401/struct/text.html#edef-P

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2008-10-14 (火) 18:05:40
Site admin: PukiWiki Development Team

PukiWiki 1.5.2+ © 2001-2019 PukiWiki Development Team. Powered by PHP 5.6.40-0+deb8u7. HTML convert time: 0.419 sec.

OSDN