してログ


あけましておめでとうございます。

今、個人的に極小期なので、冬に入ってから何も活動しておりません。正月らしい画がなくて10月の海岸で撮ったボツ作品を使ってみました。しばらくは、こんな状況が続きますが、忘れられないようにときどきアップして行きます。

なお、ここは写真(HDR)専用にしたいと思います。PC・ネット関係、IT技術関連は新しく作った「してログ(仮称)」のほうに投稿して行きます。ご興味ございましたら、フォローお願いします。内容については、ネット全般、PHPを中心とした開発、PostgreSQLを中心としたデータベース、などの話題になります。また、そのブログは開発中なので、まだコメントの投稿ができません。正月中にできるようにしたいと思います。

してログ(仮称) : LANDHERE Web site log
http://landhere.jp/blog/

10/4 新潟市中央区
Canon PowerShot S100
HDR JPG×3→PhotomatixTpzAdjustPhotoshop
Tags #夕陽 #海 #大気光学現象 #薄明光線
※この記事は「Yahoo!ブログ - HDRp」からの転載です

自前で作ったRSSフィードのライブラリがあるけど、今回ATOMで行きたかったのでググったら最初に出てきたのが、FeedWriter.php。ダウンロードしてサンプルを少し弄って、確認いっぱつ目で完成、というお手軽さでした。こうでなくっちゃ。

PHP Universal Feed Generator (supports RSS 1.0, RSS 2.0 and ATOM)
http://ajaxray.com/blog/php-universal-feed-generator-supports-rss-10-rss-20-and-atom

ということで、このブログ、めでたくフィード配信しはじめました。登録よろ。

このブログもだいぶマトモになってきました。ブログは過去に何度か開発しているので、別に躓くところとかは無いんですが、今どきのネット事情を考えると悩んでしまうことも多いです。

まず、トラックバック。これ、ブログの象徴的な機能なだけに入れなかったらブログじゃないじゃん、って思われそうだけど、自分ではまず使わない機能であり、スパムの温床であったり、正直オミットしたいところです。まぁ、入れるとしてもいちばん最後にしよう。

そしてちょうど今しがた作り終えたカレンダーインターフェイスです。作るの結構面倒だし、ボットさんに配慮しないと、えらいことになりそう。ってか、そのせいで半完成のままなんですが。どういうことかと言うと、前の月や前の年、前日や翌日のインターフェイスを付けたとすると、記事がないページが大量にあるように見えてしまうからです。もし、Google さんのボットなんかがやってきたら、延々とカレンダーを遡ってしまうばかりか、サーバーでキャッシュを作成していたとしたら、大量のファイルを残して去っていく事になりかねはしないか、ということ。

はい次、コメントシステムを構築しま~す。

HTML タグをデータとして持っている XML から、HTML を生成する場合は、エスケープ処理を無効にしておかないと、期待した結果になりません。例えば、データベースの BLOB テキストフィールド格納された、改行付きのテキストの、改行コードを <br/> に置き換えて処理したいことがありますが、このようなときに有効です。

<xsl:value-of select="data" disable-output-escaping="yes"/>

※XML の方は、<![CDATA[ ... ]]> を使って用意してください。

※<xsl:apply-templates select="data" disable-output-escaping="yes"/> と書くことはできません。もっとも、テンプレートを適用しない場合、<xsl:value-of> を使う方が、可読性が高くなると思います。

XHTML も XML には変わりないので、下記のように、method を "xml" と指定して出力させます。html として出力すると、終了タグを持たない <br> などは、<br/> や <br></br> と書いても、閉じタグは消されてしまいます。

<xsl:output method="xml" encoding="utf-8"/>

また、出力結果を XHTML の一部としてマージしたいような場合、XML 宣言が邪魔な場合は、下記のように omit-xml-declaration を指定して省略させることができます。

<xsl:output method="xml" encoding="utf-8" omit-xml-declaration="yes"/>

[XSLT] 空要素の判定

XSLT 20121231

空要素でない場合を判断するには、下記のようにします。空要素の場合を判断するには、「!=」を「=」に置き換えればできます。

<xsl:if test="name[.!='']">
  <xsl:text>name は空ではありません</xsl:text>
</xsl:if>

下記のように書くこともできます。

<xsl:if text="string-length(data)=0">
  <xsl:text>data は空文字です</xsl:text>
</xsl:if>

HTML では、&nbsp; で空白文字を挿入できるが、XSLT でこれを挿入したいときはどうしたらいいか。このようなときは、disable-output-escaping="yes" として &nbsp; と記述することで回避可能です。

<xsl:text disable-output-escaping="yes">&amp;nbsp;</xsl:text>

次の例では、カレント要素の属性をすべて列挙し、テーブルに加工する例です。

<table>
  <tr>
    <th>項目</th><th>値</th>
  </tr>
  <xsl:for-each select="@*">
    <tr>
      <td><xsl:value-of select="name(.)"/></td>
      <td><xsl:value-of select="."/></td>
    </tr>
  </xsl:for-each>
</table>

演算は、変数と演算子のスペースを開けてください。スペースを開けない場合は、エラーになることがあります。

下記は、演算を使って、SVG を出力する例です。
<line x1="{$l_mergin}" y1="{$y_size - $b_mergin}" x2="{$l_mergin}"
  y2="{$t_mergin}" stroke="black" stroke-width="1"/>