14

タイトルごとに、HTMLで(自明ではない)クワインを作成することは可能ですか?

HTMLクワインの私の定義:

自明ではないHTMLクインとは、HTMLファイル内の一部の文字列がブラウザによってプレーンテキストとしてレンダリングされることを前提として、nullではなく少なくとも1つのHTMLタグを使用するクインです。HTMLクインはq.html 、標準ブラウザによってレンダリングされたasの出力がそれ自体のコンテンツになるように定義されq.htmlます。

(私はこの定義についてのコメントを受け付けています、私は今それをちょっとハックしました)

HTMLはチューリング完全ではないため、不動点定理を適用して、それが実際に可能であることを証明することはできません。

ただし、これは必ずしもHTMLクワインが不可能であることを意味するわけではありません。それとも、HTMLクワインが不可能であることを実際に証明できますか?

4

4 に答える 4

20

「プレーンな」HTML では確かに不可能です。もちろん JavaScript でも可能ですが、CSS でも可能です。

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>This is the title</title>
<style type="text/css"><![CDATA[ 
* {
  display:inline;
  white-space:pre;
}
html:last-child {
  white-space:normal;
}
html:before  {content:'<html xmlns="http://www.w3.org/1999/xhtml">';}
html:after   {content:'</html>';}
head:before  {content:'<head>';}
head:after   {content:'</head>';}
title:before {content:'<title>';}
title:after  {content:'</title>';}
style:before {content:'<style type="text/css"><![CDATA[';}
style:after  {content:']]\00003e</style>';}
body:before  {content:'<body/>';position:absolute;left:0;}
]]></style>
</head>
<body/>
</html>
于 2012-10-08T20:47:23.457 に答える
0

これは不可能です。エスケープされていないすべての要素はブラウザーによってマークアップとして解釈されるため、ブラウザーはそれらの要素のコンテンツまたはコントロールとしてレンダリングまたは処理を試みます。タグなどでエスケープされていない要素は表示できません<pre>。ただし、そのようなタグも表示されません。

もちろん、適切な HTTP ヘッダーを使用して text/plain として提供することもできますが、それは HTML ではありません。.html 拡張子を使用するだけで、ほとんどの (すべての?) ケースでブラウザがそれを html としてレンダリングします。

于 2011-12-14T20:27:26.780 に答える
-5

確かに、すべての HTML の "what if" と同じように、答えは JQuery を使用することです!

于 2012-04-05T21:02:19.457 に答える