豆字デー
tokuho.html

ユーザースタイルシートがあるから、製作者は自由にスタイルシートを書くべきだ布教する徳保派は、この手のスタイルシートを批判できない。

……という意図が全く伝わらないというオチ。

とくほのWWW入門で「自由な制約のCSS」を連想。

Re: 備忘録031101-30/趣味のWebデザイン

まず、ユーザCSSを適用すれば、製作者CSSによる文字サイズの絶対指定は無視できる。これが原則。だから、原則としては、製作者CSSによる文字サイズの絶対指定は、CSS適合ブラウザなら無視できる。

そんなことは百も承知だっての。今、良い製作者スタイルシートの話をしているのだから以下略。これで分からなかったら、もういいや。

TemplateProcessor.py

昨日(今日?)のアイデアを実装するだけしてみた。まだ一度も動かしていないという。要するに、(Movable Typeとかの)テンプレートの書式を考えるのが面倒だから、XSLT文書をテンプレートに使ってしまおうという話。これなら書式はXSLTの完全なサブセットでOKで、新たに覚えることは殆ど無い筈。

RDF/XMLを内部で使用するのは、単にメタデータを表現するXMLとしてRDF/XMLしか知らないから。新たに覚えることが何も無いのが唯一のメリット。再考の余地ありまくり。

XSLTプロセッサは4Suiteライブラリから拝借。これは再考の余地は無い。今まで何も問題なく働いてくれているから。

Node.hasChildNodes() の意義(Latest topics > Past > 2003 > 11 - outsider reflex)

メモ。コードが読みやすいってだけの理由で使っていたよ……

そもそも

「消極的な閲覧者」なる者に対して、WWWでは何も伝えることはできない。伝えることができるのは、「積極的に情報を取得しに来る閲覧者」に対してだけである。

「消極的な閲覧者」、即ち「製作者が伝えたい情報について興味を持っていない閲覧者」に何かを伝えることができたとすれば、それは宣伝行為、下手をするとスパム行為である。

要するに、WWWにおいて「消極的な閲覧者」を啓蒙しようとすべきではない。「積極的な閲覧者」向けに文書を公開しておけば十分である。

サーバアプリケーション用メモ

PythonのSimpleHTTPServerをちらちら見ているところ。ディレクトリが要求されたときには、フォルダ内のファイル一覧をリストしたHTMLソースを直接書き込んでいるようだ。

ここで悩む。まず、構造化テキストとしてHTMLを扱いたい。直接ソースを書くやり方は嫌だ。するとDOMを利用して生成するとか? しかしDOMだとメンテナンス性が悪い。一目でどういう構造のHTMLになっているのかが分からないのも嫌だ。するとテンプレートを用意しておくことが考えられる。しかし変数となる文字列を考えたりするのが億劫で嫌だ。テンプレートと言えばXSLTなのだけれども、これはスタイルシートであって、変換元となるXML文書がないことには意味を持たない。<root />なる無意味なXMLデータを変換するという形式にしてパラメタを与えれば実現はできるものの、そのままやるのはとってもナンセンス。

要するに:

<xsl:template name="list" xmlns:xsl="..">
<title><xsl:value-of select="$title" /></title>
<h1><xsl:value-of select="$title" /></h1>
<ul>
<xsl:for-each select="$list">
  <li>
    <a href="{?}"><xsl:value-of select="?" /></a>
  </li>
</xsl:for-each>
</ul>
</xsl:template>

このようなテンプレートにパラメタを与えることで、ソース文書無しにHTMLを生成したい。つまりXSLTを単なるテンプレート言語として使いたい。プロセッサの簡単なラッパで一瞬やれるかと思ったのだけれど、ここで$listに注目すると、XSLT1.0ではノード集合でなければならない。XSLT2.0でない限り、ノード集合以外をシーケンスとして扱えない。つまり「簡単なラッパ」では駄目。

TemplateProc という、あるXSLTプロセッサのラッパを作ったとする。インスタンスを生成する際に、パラメタを与える。


params = { 'title':'Index of "/"', 'list':('index.html', 'inde.rdf')}
tp = TemplateProc(params)

で、内部では:

<rdf:RDF
 xmlns=".."
 xmlns:rdf="..">

<params>
  <title>Index of "/"</title>
  <list>
    <rdf:Bag>
      <rdf:li>index.html</rdf:li>
      <rdf:li>index.rdf</rdf:li>
    </rdf:Bag>
  </list>
</params>

</rdf:RDF>

こんなのを生成して、これ(実質的にパラメタ)をソース文書としてスーパークラスXSLTプロセッサに変換させる。XSLTスタイルシートの方はこのように書けばよい。

<xsl:stylesheet version="1.0"
xmlns:xsl=".." xmlns:rdf=".."
>

<xsl:param name="list" select="/*/*/list" />
<xsl:param name="title" select="/*/*/title" />

<xsl:template match="/">
<title><xsl:value-of select="$title" /></title>
<h1><xsl:value-of select="$title" /></h1>
<ul>
<xsl:for-each select="$list/*/rdf:li">
  <li>
    <a href="{.}"><xsl:value-of select="." /></a>
  </li>
</xsl:for-each>
</ul>
</xsl:template>

</xsl:stylesheet>

ソース文書はパラメタであるという発想の転換。といかパラメタだし。

こっち用のネタではなかったも。実装したらあっちに書くことに。ともかくまだ何も決まっていない。