Phize on the Web

phiXmlStylesheetスニペット(1.0.0) - MODx

ユーザーエージェントのapplication/xhtml+xmlメディアタイプへの対応・未対応によって、XHTML文書のスタイルシートへのリンク方法を切り替えるためのスニペットです。xml-stylesheet処理命令によるスタイルシートへのリンクが推奨されているapplication/xhtml+xmlメディアタイプのXHTML文書において、application/xhtml+xmlメディアタイプに未対応のユーザーエージェントへ配慮することができます。

このスニペットは、application/xhtml+xmlメディアタイプに対応しているユーザーエージェントに対してはxml-stylesheet処理命令を、その他のapplication/xhtml+xmlメディアタイプに対応していないユーザーエージェントやAnother HTML-lint gatewayW3C CSS Validation Serviceに対してはlink要素を出力します。

XHTML文書のメディアタイプにはapplication/xhtml+xmlメディアタイプが推奨されており、text/htmlメディアタイプは一部の例外を除いて非推奨となっています(XHTML Media Types - Summary)。HTML互換性ガイドラインに基づくXHTML 1.0文書に限り、text/htmlメディアタイプとすることが可能です。このプラグインを導入することによって、レガシーなユーザーエージェントにも配慮しつつ、適切なメディアタイプでXHTML文書を提供することができるようになります。

インストール

  1. MODxマネージャのナビゲーションから「リソース」→「リソース管理」の「スニペット」タブを開く。
  2. 「スニペットの作成」をクリックし、「全般」タブを開く。
  3. 「プラグイン名」にphiXmlStylesheetと入力し、ダウンロードしたファイルの内容を「スニペット コード (php)」にコピー&ペーストする。
  4. 「保存」をクリックしてスニペットを保存する。

書式

書式や指定できるパラメータは、HTMLXHTMLにおけるlink要素やXMLにおけるxml-stylesheet処理命令の属性・属性値とほぼ同じです。訪問者のユーザーエージェントごとに出力内容を変える必要があるので、スニペットのキャッシュを無効にするための[!スニペット名? &パラメータ名=``!]という書式を利用してください。

[!phiXmlStylesheet? &href=`/assets/templates/phize.net/css/style.css` &xml=`1`!]

パラメータ

phiXmlStylesheetスニペットのパラメータ
パラメータ名 省略 デフォルト値 説明
href 不可 スタイルシートのURI。href属性と同等。
type text/css スタイルシートのメディアタイプ(コンテントタイプ・MIMEタイプ)。type属性と同等。
media なし スタイルシートのメディアタイプ(出力先のメディアタイプ)。media属性と同等。
charset UTF-8 スタイルシートの文字エンコーディング。charset属性と同等。
title なし スタイルシートのタイトル。title属性と同等。
alternate 空文字 代替スタイルシートの指定。「0」以外、空文字以外の値を指定すると代替スタイルシートとして出力する。
xml 空文字 スタイルシートへのリンク方法。「0」以外、空文字以外の値を指定すると、apllication/xhtml+xmlメディアタイプに対応しているユーザーエージェントに対してのみ、xml-stylesheet処理命令を使用してスタイルシートへのを出力する。「0」、空文字を指定すると、apllication/xhtml+xmlメディアタイプに対応していないユーザーエージェントやAnother HTML-lint gatewayW3C CSS Validation Serviceに対してのみ、link要素を使用してスタイルシートへのリンクを出力する。
pre 空文字 link要素、または、xml-stylesheet処理命令の直前に出力する文字列。インデントの調整などに利用する。
suf 空文字 link要素、または、xml-stylesheet処理命令の直後に出力する文字列。インデントの調整などに利用する。

使用例

phiXmlStylesheetスニペットのスニペットコールは、次のようにxmlパラメータの値を変えたものを組み合わせて使用します。

<?xml version="1.0" encoding="[(modx_charset)]"?>
[!phiXmlStylesheet? &href=`[(base_url)]assets/templates/phize.net/css/style.css` &xml=`1`!]<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja">
  <head>
[!phiXmlStylesheet? &href=`[(base_url)]assets/templates/phize.net/css/style.css` &xml=`0` &pre=`    `!]    <title>[*pagetitle*]</title>
  </head>

この例では、application/xhtml+xmlメディアタイプに対応しているユーザーエージェントに対して、ドキュメントは次のように出力されます。

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="/assets/templates/phize.net/css/style.css" type="text/css" charset="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja">
  <head>
    <title>ページタイトル</title>
  </head>

その他のapplication/xhtml+xmlメディアタイプに対応していないユーザーエージェントやAnother HTML-lint gatewayW3C CSS Validation Serviceに対しては、ドキュメントは次のように出力されます。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja">
  <head>
    <link rel="stylesheet" href="/assets/templates/phize.net/css/style.css" type="text/css" />
    <title>ページタイトル</title>
  </head>

バージョン履歴

Version 1.0.0
公開。
Copyright© 2006-2018 Phize on the Web All Rights Reserved.