マンガでよめる痔のこと・薬のこと

独学でサイト作成に挑戦しています。
ネットと書籍しか知識を得る手段がなく、つまずくとなかなか進めません。どなたか教えて下さい。
 現在の状況
XHTML 1.0 Strictで記述
文字コードはShift-JIS(Windowsのメモ帳使用)
ブラウザはIntrenet Explorer6のみ
xml宣言ありである程度レイアウトを進めてきましたが、

>XML は文字コードのデフォルトが UTF-8 で、その場合 XML宣言を記述しなくてもよく、それ以外の文字コードを利用する場合は、原則として XML 宣言に charset 記述が必要。ただし、xhtml1.0 の場合、仕様書の第2版で "上位のプロトコルで文字コードを指定すれば XML宣言はなくてもよい" となったそうです。

という記述を見て、xml宣言のありなしを悩んでいます。
○できればIE6でも標準準拠モードで表示させたい。
○UTF-8対応のエディタもいまいち分からないので出来ればShift-JISで記述したい。

今の状態から単純にxml宣言を消して表示させてみると全くレイアウトがちがうのですが、現在の表示が過去互換モード、標準準拠モードのどちらにスイッチされているか分かる方法はありますか?

どなたか教えて下さい。お願いします。

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

A 回答 (2件)

XHTMLで制作するつもりであれば、文法的にXML宣言はあった方がいいです。


その場合は
<?xml version="1.0" encoding="shift_jis"?>としてあげます

これでSJISでの記述が可能です
問題は宣言した後の挙動についてなんですが、yoopingさんが感じているように、IE6ではドキュメントタイプ宣言より前に文字がある場合、後方互換モードになるバグがあります。
つまりXML宣言をすると強制的にIE6の後方互換モードになってしまうわけですね
それで何故レイアウトが全く違うのかというと、IE6の後方互換モードには、更にボックスモデルに対する解釈にバグがあり
幅にボーダーとパディングを含んでしまいます。
つまり標準準拠モードでCSSレイアウトを行うと、根本的なボックスモデル解釈が異なる為、レイアウトが著しく崩れます。
これはIE6のバグなので、FireFoxなど比較的CSS準拠のブラウザで見た場合は問題ありません。
逆にIEで問題ないように作成すると正常のレンダリングを行うブラウザではレイアウトが崩れます。
この対応策としては、widthとborderやmarginやpaddingを同時に指定しないという方法が一般的ですが、その状態でウェブ標準を突き詰めると幾つもの壁にぶちあたります・・・


なので、XML宣言を捨てて標準準拠モードで記述するか
頑張ってXML宣言をした状態で各ブラウザで標準表示されるようにするかといった選択になると思います。

趣味レベルでしたらXML宣言は気にしなくても大丈夫だとは個人的には考えてますが賛否両論でしょうね
    • good
    • 0
この回答へのお礼

くわしい説明をありがとうございます。大変勉強になります。
先ほどFireFoxをダウンロードしてみました。IE6で見たxml宣言なしの場合の表示どほぼ同じレイアウトで見えました。つまり標準準拠モードという事ですね。
hepinさんのアドバイスを受け、XML宣言なしで、標準準拠モードにそったレイアウトにやり直してみようかなという気になりました。
ありがとうございました。

お礼日時:2006/10/04 00:27

きれいに書きたいなら必須。


ただ、エディタがメモ帳というのは1ファイルの文字数が大きくなったら使えなくなるから違うのを探した方がいい。

オススメは K2Editor
http://k2top.jpn.org/
    • good
    • 1
この回答へのお礼

>メモ帳というのは1ファイルの文字数が大きくなったら使えなくなるから
知りませんでした。
K2Editor調べてみます。ありがとうございました。

お礼日時:2006/10/04 00:12

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

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

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

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

Qpingでポートの指定

pingでIPアドレスを指定して、通信できるかどうかというのは
よく使いますが、pingでポートを指定して応答するかどうかは調べられるのでしょうか?

よろしくお願いします

Aベストアンサー

pingを含むICMPというプロトコルは、OSIの7レイヤで言うところのL2(同一セグメント内通信)とL3(IPルーティングされた通信)の両方にまたがる、ちょっと珍しいプロトコルです。

IPアドレスは指定できますが、別サブネットに属するIPアドレスに到達できればL3通信、できなければゲートウェイと呼ばれる同一サブネットに属する中継装置からの回答を得るという点でL2(MAC通信ではなく、同一セグメント内通信という意味)通信です。

ポート番号はL4で使用されるアドレスですから、L4機能の疎通確認はping(を含むICMP)ではできません。

FTPの疎通確認であれば、クライアントからサーバに対するTCP/21通信(FTP-CMD)が可能であること(サーバからクライアントへのTCP/21からの応答を含む)+サーバからクライアントに対するTCP/20通信(FTP-DATA)が可能であること(クライアントからサーバへのTCP/21からの応答を含む)が必要でしょう。

監視ソフトによるものであれば、
・クライアントからサーバへのログイン(TCP/21)
・クライアントからサーバへのlsの結果(TCP/20)
で確認すればよいでしょう。

pingを含むICMPというプロトコルは、OSIの7レイヤで言うところのL2(同一セグメント内通信)とL3(IPルーティングされた通信)の両方にまたがる、ちょっと珍しいプロトコルです。

IPアドレスは指定できますが、別サブネットに属するIPアドレスに到達できればL3通信、できなければゲートウェイと呼ばれる同一サブネットに属する中継装置からの回答を得るという点でL2(MAC通信ではなく、同一セグメント内通信という意味)通信です。

ポート番号はL4で使用されるアドレスですから、L4機能の疎通確認はping(を含む...続きを読む

QVBAでfor文の中で、continueしたい

お世話になります。
VBAのfor文の中で、ある条件に合致したら、for の先頭に戻りたいのですが、
方法が分かりません。

VB.net 等の「 Continue For」に当たるものは、VBAに
ないのでしょうか?

何卒宜しくお願いします。

Aベストアンサー

Continue For は昔の VB6 までに物には実装されていませんね VB6 使いの私は知らなかった

for の先頭に戻りたいのではなく、 Next の直前に飛びたいのですよね?
幸いにも VBA には Goto ステートメントがありますので

Sub Sample1()
For i = 1 To 10
If 意除外条件 Then GoTo Next_no_mae

通常の総理

Next_no_mae:

Next i

End Sub

じゃダメですか?
これなら For の直後に飛ぶ事も可能ですが

もしくはこれぐらいしか対処方法はないのでは?
Sub Sample2()

For i = 1 To 10
If 除外条件 Then
Else
通常の総理
End If
Next i

End Sub

Q文字コードを指定する際sjisなのかshift_jisかshift-jisなのか

お世話になります。
perl5.8において文字コードを指定or変換する際
shift_jis
shift-jis
Shift_JIS
SJIS
EUC_JP
EUC-JP
utf-8
utf8
-と_の違いや大文字小文字の違いなど記述の違いを良く見かけるのですが、実際決まった指定方法などはあるのでしょうか。
逆に文字コードを指定する際、●●のように指定しても無効で●●のように指定しないと有効ではないですよ。。みたいな。

またperlに限らずPHPやHTML、XMLなどではどうなっているのでしょうか

どなたかご存知の方いましたら
・上記3つの文字コードについてと
・perlのバージョンの違い、言語の違いなど

文字コードの文字列の指定に関する全般についてご教授願えませんでしょか。

宜しくお願い致します。

Aベストアンサー

文字コードを指定するモジュールによって、指定する文字列が違う場合があります。

たとえば、JcodeでシフトJISコードを指定するときはは'sjis'ですが、
Encodeでは次のような正規表現になります。

/\bshift.*jis$/i
/\bsjis$/i

これは、shift-jisでもShift_jisでもsjisでもSJISでもマッチします。
極端な話、shift(・∀・)jisでもマッチします(多分)

他の文字コードでも同様に正規表現でエイリアスが設定されていますので、詳しくはEncodeモジュールのperldocを参考にしてください。

QOracle(オラクル)で、日付時刻型の検索方法について

質問させていただきます。
データベースはオラクルを使っていて、
SQL文で、抽出するときにエラーが出て困っています。

日付時刻型が「2005/05/26 19:13:00」という感じで入ってます。
2005/05/26 を抽出したいのですが、
BETWEEN '2005/05/26 00:00:00' AND '2005/05/26 23:59:59'

だと、エラーでできません。
どなた様か、ご教授よろしくお願いしますm(_ _)m

Aベストアンサー

日付検索を行う場合は、以下のように書式を含める必要があります。

col BETWEEN TO_DATE('2005/05/26 00:00:00','YYYY/MM/DD HH24:MI:SS') AND TO_DATE('2005/05/26 23:59:59','YYYY/MM/DD HH24:MI:SS')

ただ、厳密には

col >= TO_DATE('2005/05/26', 'YYYY/MM/DD')
AND
col < TO_DATE('2005/05/27', 'YYYY/MM/DD')

と書くべきでしょうね。

Q文字列として"(ダブルコーテーション)を表示させる方法

こんにちは。文字列として、ダブルコーテーションを表示させるには、どうすればよいのか教えてください。m(__)m


例えば、
<font size="2">あいうえお</font>

というタグの「あいうえお」の部分が、セルA1にあった場合、

="<font size="2">"&A1&"</font>"という表示にしたいのです。

"2"のダブルコーテーションも文字列として表示させるには、どうすればよろしいのでしょうか。

教えてください。よろしくお願い致します。

Aベストアンサー

こんにちは~

表示形式は 「標準」 のままで、
ダブルコーテーションを、ダブルコーテーションで囲んでください。

""2""

="<font size=""2"">"&A1&"</font>"

としてみてください。

Q特殊記号が勝手にエスケープされてしまう

Windows2000 ServerにおいてVBScriptとMicrosoft.XMLDOMを用いてASPスクリプトを作成しています。

XMLで特殊文字<,>,",',&を扱う際には&lt;,&gt;,&quot;,&apos;に置換しなくてはならない事はわかったんですが、
実際にReplaceすると例えば&lt;が&amp;lt;になってしまいます。
置換する順番を変えてもこうなるのでおかしいと重い、&amp;への置換を止めてもです。
しかもこれは読み出すと何事も無かったかのように&amp;lt;が&lt;へと戻っています。

試しに置換を全く行わない状態で
「テスト&'>"」という文字列を保存してみると、
保存先ファイルの中では「テスト&amp;'&gt;&quot;」という状態になっていました。

恐らく&,<,>,"が勝手に置換され、読み出される時には元に戻す処理が行われていると思うんですが、これがどの部分で行われているのかがよくわかりません。
JavaScriptで読み出した際にも同様に復元されていたようなので、MSXMLの仕様なのかなと思うんですが、それを裏付ける資料を見つける事もできませんでした。

XMLにおける特殊記号の扱いについて書いているサイトにも記述が見つからなかったので、もしかしたら凄く基本的な事だったりおかしな質問だったりするのかもしれませんが、ご存知の方がいらっしゃいましたら是非ご教授願いたいです。
参考URLだけでも良いですのでどうかよろしくお願いします。

Windows2000 ServerにおいてVBScriptとMicrosoft.XMLDOMを用いてASPスクリプトを作成しています。

XMLで特殊文字<,>,",',&を扱う際には&lt;,&gt;,&quot;,&apos;に置換しなくてはならない事はわかったんですが、
実際にReplaceすると例えば&lt;が&amp;lt;になってしまいます。
置換する順番を変えてもこうなるのでおかしいと重い、&amp;への置換を止めてもです。
しかもこれは読み出すと何事も無かったかのように&amp;lt;が&lt;へと戻っています。

試しに置換を全く行わない状態で
「テスト&'>"」という...続きを読む

Aベストアンサー

#2>node.attributes.item(0).nodeValue = "test>"
node.attributes.item(0).nodeValue = "test<"
の間違いですね

>MSXMLの仕様なのかなと
MSXMLのリファレンスで

According to the W3C DOM specification, an XML parser can completely expand entity references into entities before the structure model is passed to the DOM. When these entity references are expanded, the document tree does not contain any entity references.

When Microsoft&reg; XML Core Services (MSXML) validates the XML document, it expands external entities (except binary entities). The nodes representing the expanded entity are available as read-only children of the entity reference. The Microsoft implementation does not expand these entities when it is not validating.

とあるので、仕様かと思います。
(英語力が低いので、何ですが、W3C DOM の求めるところで、XMLパーサーは、DOMに変換するにあたってエンティティの展開をするべきということかな?、なんにしても、XMLパーサーとしては、変換するか、エラーにするかしないといけませんが、エラーにしてたら使い勝手の悪いものになると思います。)
ちなみに、
xmlDoc.createEntityReference("lt")
のようにして&lt;エンティティを作成できます。

#2>node.attributes.item(0).nodeValue = "test>"
node.attributes.item(0).nodeValue = "test<"
の間違いですね

>MSXMLの仕様なのかなと
MSXMLのリファレンスで

According to the W3C DOM specification, an XML parser can completely expand entity references into entities before the structure model is passed to the DOM. When these entity references are expanded, the document tree does not contain any entity references.

When Microsoft&reg; XML Core Services (MSXML) vali...続きを読む

QSELECTで1件のみ取得するには?

こんにちわ。
いまORACLE9iを使用している者です。

ACCESSでは
SELECT TOP 1 項目名 FROM テーブル名
ORDER BY 項目名;
で並べ替えたデータ群のうち,先頭の1件だけを
取ることができますが,
ORACLEでそのような機能(SQL)はあるでしょうか?
教えてください。
よろしくお願いします。

Aベストアンサー

order by と rownum を併用する場合は注意が必要です。

[tbl01]
cola | colb
------------
1000 | aaaa
1001 | bbbb

というデータがある場合、
select cola from tbl01 where rownum < 1 order by cola desc;
とすると、「1001」ではなく、「1000」が返されます。
これは、order by の前に rownum < 1 が適用されてしまうからです。

解決するには、
select aaa from (select cola aaa from tbl01 order by cola desc) where rownum = 1;
とすれば良いです。

QSQL Server のキャラクターセット(内部文字コード)は何処で定義するのでしょうか?

SQL Server超初心者です。(Oracleについては約1年ちょっとの経験はあります)どうぞよろしくお願いします。
今回SQL Server2005 を使って簡単なシステムを構築する事になりました。
SQL Serverが扱う文字コートについて教えてください。
Oracleを使っていた時の経験としてDB内部のキャラクターセットと
クライアントで使う文字セット(NLS_LANG)を意識しておかないと、いろんな「文字化け」問題に遭遇した時に対応できませんでした。
きっとSQL Serverにおいても同じような事ではないかと思いここに質問させていただきます。
以下2点についてどなたかコメント願います。
1.(Oracleでいうキャラクターセット)はどこで定義するのでしょうか?
2.OracleでいうNLS_LANGに相当するものはあるのでしょうか?
 (ひょっとしたらマイクロソフト製品なのでサーバもクライアントもCP932固定なのでしょうか?)

根本的にはシステム構築する上で『極力文字化けに遭遇したくない』思い出このような質問をさせていただきました。
『文字化け』について注意点などありましたら合わせてコメントいただければ助かります。
以上よろしくお願いします。

SQL Server超初心者です。(Oracleについては約1年ちょっとの経験はあります)どうぞよろしくお願いします。
今回SQL Server2005 を使って簡単なシステムを構築する事になりました。
SQL Serverが扱う文字コートについて教えてください。
Oracleを使っていた時の経験としてDB内部のキャラクターセットと
クライアントで使う文字セット(NLS_LANG)を意識しておかないと、いろんな「文字化け」問題に遭遇した時に対応できませんでした。
きっとSQL Serverにおいても同じような事ではないかと思いここに質問...続きを読む

Aベストアンサー

Windowsのロケールの設定を日本語にした状態でSQLServerをインストールした場合、cp932がデフォルトの照合順序になります。照合順序については参考URLをご覧下さい。

SQLServerではわかりませんが、PostgresではJDBCドライバ部分で変換していたように記憶しています。ODBCドライバではAutoTranslateという機能があります。

このため、ODBC接続で何も考えずにvarcharを使用するとcp932になります。

参考URL:http://www.microsoft.com/japan/msdn/sqlserver/sql2005/bb330962.aspx

Q日付型のフィールドに空白を入れる方法を教えてください

ASP(VBScript)でSQLサーバにINSET INTO文を使ってデータを格納しているのですが、日付の部分がNULLの時、「1900/1/1」が入ってしまいます。
そのまま、空白を入れる方法はどうやったらよろしいのでしょうか?

TABLE1の内容は
番号|内容|日付です。

INSERT INTO TABLE1 VALUES ( 1, 'あいう', '')

結果
1|あいう|1900/1/1

Aベストアンサー

あとは、プログラムの書き方次第ですね、、、


If hensu=Null Or hensu="" Then
dt = "NULL"
Else
dt = "'" & hensu & "'"
End IF

E_SQL = "INSERT INTO TABLE1 VALUES & _
"( 1,'あいう', " & dt& ")"
の様に書きます。

QSQLで特定の項目の重複のみを排除した全項目を取得する方法

私は仕事上でデータベースを扱っていて、タイトルのような処理を行う必要があるのですが、いかんせん方法がわからずネット上を検索しても同様だったためここで質問させていただきます。

質問点を簡単に説明いたしますと、
たとえばAというテーブルがあって、

項目名1 項目名2 項目名3 項目名4
 A    あ    ア    亜
 A    い    ア    以
 A    う    ア    宇
 B    え    イ    江
 B    お    イ    尾

上のような構造になっている場合に「項目名1」について重複している項目を排除し、結果として


項目名1 項目名2 項目名3 項目名4
 A    あ    ア    亜
 B    え    イ    江

上のようなデータを取得したいのです。
この時に、Aの重複を排除して取得するレコードは1~3行目のどれでもよいです。
また、データを取得する際には必ずそのレコードの「全項目」を取得したいのでDistinctはうまく使えませんでした。

どなたか詳しい方、方法を教えてくださると幸いです。回答お待ちしております。

私は仕事上でデータベースを扱っていて、タイトルのような処理を行う必要があるのですが、いかんせん方法がわからずネット上を検索しても同様だったためここで質問させていただきます。

質問点を簡単に説明いたしますと、
たとえばAというテーブルがあって、

項目名1 項目名2 項目名3 項目名4
 A    あ    ア    亜
 A    い    ア    以
 A    う    ア    宇
 B    え    イ    江
 B    お    イ    尾

上のよ...続きを読む

Aベストアンサー

比較可能で一意性のある値をもてる項目6をテーブルに追加して、

select T.* from T, (select Item1,min(Item6) as Item6 from T group by item1) W where T.item6=W.item6;

――ってやるのが、一番手っ取り早いと思います。
他のところに影響がでないのであればですが。
oracleならrowidを使うとか、レコードの更新時刻を突っ込むとか。


人気Q&Aランキング