◀ANSI版開発トップへ
  • 5405 HTMLアウトライン解析の段落処理
    • 5407 Re:HTMLアウトライン解析の段落処理
      • 5408 Re2:HTMLアウトライン解析の段落処理
        • 5409 Re3:HTMLアウトライン解析の段落処理
          • 5410 Re4:HTMLアウトライン解析の段落処理
            • 5411 Re5:HTMLアウトライン解析の段落処理
              • 5412 Re6:HTMLアウトライン解析の段落処理
                • 5413 Re7:HTMLアウトライン解析の段落処理
                  • 5415 Re8:HTMLアウトライン解析の段落処理
                    • 5425 Re9:HTMLアウトライン解析の段落処理
                      • 5427 Re10:HTMLアウトライン解析の段落処理
              • 5649 管理者削除
  • [5405] HTMLアウトライン解析の段落処理 あろか 2008年08月15日 04:15

    HTMLのルールでは<p>(段落)は省略可能で、ほかのブロック要素が現れたときは自動的に終了することになっているようです。ところがサクラエディタのアウトライン解析は、<p>を</p>で明示的に終了しないで<p>を繰り返したり<pre>や<div>を続けたとき、トピックツリーがだんだん深くなってしまいます。
    アウトラインを見るのに都合が悪かったので変更して、SFにパッチを用意しました。
    見出しの深さ調整処理や、文字修飾タグ(boldやitalic)をツリーに入れない処理なども追加したため否定意見もあると思います。ご意見ください。
    • [5407] Re:HTMLアウトライン解析の段落処理 なすこじ 2008年08月23日 17:18

      ▼ あろかさん
      パッチを試してみようと思ったのですが、「パッチを適用」にて MakeHTMLTopic.diff を選択すると「未知の改行コードが、行 180 で見つかりました!」のエラーとなってしまいます。

      パッチの中を見てみるとコード部分にCRLFのところが2箇所あったのでLFに直してみましたが現象は変わりませんでした。

      Windows2000 SP4 + TortoiseSVN 1.4.5 build 10425 にて試しました。
      • [5408] Re2:HTMLアウトライン解析の段落処理 あろか 2008年08月24日 19:00

        ▼ なすこじさん
        お手数かけました。こちらでも失敗していましたのでdiffファイルを作り直しました。
        SF.netは失敗したのでWikiのDevelop/8にアップロードしました。

        PS.「<p>(段落)は省略可能で」は「<p>(段落)は</p>が省略可能で」の誤りです。
        • [5409] Re3:HTMLアウトライン解析の段落処理 なすこじ 2008年08月25日 04:40

          パッチの最後の方に Patches #2028628 が混入してませんか?

          その部分を削除して試してみました。
          タグを小文字で書くとOKですが、大文字で書くとおかしくなる
          みたいです。

          metaをMETAと書くとツリーを形成してしまいます。
          同様に<P>や<BR>でも発生します。
          タグを<p><br>の様に小文字で書くと大丈夫です。

          <html>
          <head>
          <title>アウトライン解析テスト用1</title>
          <META NAME=GENERATOR CONTENT="HANDMADE">
          <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=Shift_JIS">
          </head>
          <body>
          <P>パラグラフ1
          <P>パラグラフ2<BR>
          <BR>
          <P>パラグラフ3<BR></P>
          <P>パラグラフ4
          <P>パラグラフ5</P>
          </body>
          </html>


          番号付きのリストでツリーになりません。
          これも<OL>を<ol>とするとツリーとなります。
          パラグラフ1の<p>が関係しているようです。<P>にすると<OL>は
          ツリーとなります。

          <html>
          <head>
          <title>アウトライン解析テスト用2</title>
          <META NAME=GENERATOR CONTENT="HANDMADE">
          <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=Shift_JIS">
          </head>
          <body>
          <p>パラグラフ1</p>
          <OL>
          <li>
          階層1A
          </li>
          <li>
          階層1B
          </li>
          <OL>
          <li>
          階層2A
          </li>
          <li>
          階層2B
          </li>
          </OL>
          </OL>
          </body>
          </html>

          とりあえず動作だけ見てみました。
          コードはまだ見れていないです。

          ではでは。
          • [5410] Re4:HTMLアウトライン解析の段落処理 あろか 2008年08月25日 09:29

            ▼ なすこじさん
            確認ありがとうございます。

            > パッチの最後の方に Patches #2028628 が混入してませんか?
            はい。すみません。

            > タグを小文字で書くとOKですが、大文字で書くとおかしくなる
            > みたいです。
            ラベルを szLabel にコピーしたとき、strlwr のつもりで tolower になっていました。
            このため、大文字がまったくおかしな振る舞いになっていました。
            • [5411] Re5:HTMLアウトライン解析の段落処理 なすこじ 2008年08月25日 18:44

              ▼ あろかさん
              大文字の件は_tolowerをstrlwrに変更することで解決しました。
              他に気づいた点をば。

              1) Pエレメント内にAエレメントがあった場合
               インラインエレメントに関しては、パッチ適用前と同様にPに
               ぶら下がる形になるべきではないでしょうか?

              2) P以外で終了タグが省略可能なもの
               HEAD,BODY,LI,DT,DD,TR,TH,TD,OPTIONなどが終了タグ省略
               可能なようですが、対処漏れがあると思います。

              3) TDエレメント内にPエレメントがあった場合
               次のTRエレメントのアウトラインがおかしくなるようです。

              <html>
              <head>
              <title>アウトライン解析テスト用3</title>
              <meta NAME=GENERATOR CONTENT="HANDMADE">
              <meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=Shift_JIS">
              </head>
              <body>
              <p>パラグラフ1 <a href="http://sourceforge.net/">リンク1</a></p>
              <ol>
              <li>
              階層1A
              <li>
              階層1B
              </li>
              </ol>
              <table border=1>
              <tr><th>ヘッダ1</th><th>ヘッダ2</th></tr>
              <tr><td>データ1A <p><a href="http://sourceforge.net/">リンク2</a></td><td>データ1B</td></tr>
              <tr><td>データ2A</td><td>データ2B</td></tr>
              </table>
              </body>
              </html>
              • [5412] Re6:HTMLアウトライン解析の段落処理 あろか 2008年08月29日 08:11

                ▼ なすこじさん
                > 1) Pエレメント内にAエレメントがあった場合
                >  インラインエレメントに関しては、パッチ適用前と同様にPに
                >  ぶら下がる形になるべきではないでしょうか?
                そうですね。アウトラインに残すなら適用前の振る舞いに直したいです。
                逆にインラインエレメント自体アウトラインに不要かと思ったのですがその点はいかがでしょうか。

                > 2) P以外で終了タグが省略可能なもの
                >  HEAD,BODY,LI,DT,DD,TR,TH,TD,OPTIONなどが終了タグ省略
                >  可能なようですが、対処漏れがあると思います。
                まずはpだけの改善をするつもりでした。
                全部に対応しようとすると結構面倒なので諦めたのですが、やっぱりちゃんとやらないとまずいですかね。

                > 3) TDエレメント内にPエレメントがあった場合
                >  次のTRエレメントのアウトラインがおかしくなるようです。
                修正します。
                • [5413] Re7:HTMLアウトライン解析の段落処理 なすこじ 2008年08月31日 05:54

                  ▼ あろかさん
                  > > 1) Pエレメント内にAエレメントがあった場合
                  > >  インラインエレメントに関しては、パッチ適用前と同様にPに
                  > >  ぶら下がる形になるべきではないでしょうか?
                  > そうですね。アウトラインに残すなら適用前の振る舞いに直したいです。
                  > 逆にインラインエレメント自体アウトラインに不要かと思ったのですがその点はいかがでしょうか。

                  AやIMGの存在が分かると便利かもと思いましたが、アウトラインという観点からするとインラインエレメントは不要なのかもしれませんね。
                  なので、無くても良いと思います。

                  > > 2) P以外で終了タグが省略可能なもの
                  > >  HEAD,BODY,LI,DT,DD,TR,TH,TD,OPTIONなどが終了タグ省略
                  > >  可能なようですが、対処漏れがあると思います。
                  > まずはpだけの改善をするつもりでした。
                  > 全部に対応しようとすると結構面倒なので諦めたのですが、やっぱりちゃんとやらないとまずいですかね。

                  そういう事でしたら、まずはPだけでも良いと思います。

                  ではでは。
                  • [5415] Re8:HTMLアウトライン解析の段落処理 あろか 2008年09月08日 01:09

                    ▼ なすこじさん
                    > 3) TDエレメント内にPエレメントがあった場合
                    >  次のTRエレメントのアウトラインがおかしくなるようです。
                    修正しました。pの終わりを判定する場所が不適切でした。

                    > AやIMGの存在が分かると便利かもと思いましたが、アウトラインという観点からするとインラインエレメントは不要なのかもしれませんね。
                    > なので、無くても良いと思います。
                    確かに便利ですね。
                    テキスト飾りとルビ要素はアウトラインから外すようにしましたが、他は従来どおりにしてあります。

                    diffをWikiのDevelop/8にアップロードしました。
                    • [5425] Re9:HTMLアウトライン解析の段落処理 なすこじ 2008年09月11日 04:20

                      ▼ あろかさん
                      ソースコードおよび動作を確認しました。
                      コミットOKと思います。

                      1点確認ですが、CEditDoc.cppの2955,2958行でpLineのみ更新してiを更新していないのは意識的なものでしょうか?
                      動作に大きな影響は無さそうですがちょっと気になりました。
                      • [5427] Re10:HTMLアウトライン解析の段落処理 あろか 2008年09月14日 15:05

                        ▼ なすこじさん
                        > ▼ あろかさん
                        > ソースコードおよび動作を確認しました。
                        > コミットOKと思います。
                        >
                        > 1点確認ですが、CEditDoc.cppの2955,2958行でpLineのみ更新してiを更新していないのは意識的なものでしょうか?
                        > 動作に大きな影響は無さそうですがちょっと気になりました。

                        度々の確認ありがとうございます。
                        ご指摘の二箇所にi++;を加えてコミットしました。
              • [5649] 管理者削除 - 2010年01月05日 12:52

                -