表題の通りです。ずっと壁に突き当たっています。
変換元の XML が以下のように HTML タグを含むようなケースです。
<!-- 要素 "element" は HTML タグを含みます。 -->
<element>
<h1>ほにゃらら・・・</h1>
</element>
以下のようなスタイルシートで変換すると、element 内のテキストのみ出力してしまいます。
<!-- elementノードの値を xsl:value-of で取得 -->
<xsl:template match="element">
<div><xsl:value-of select="."/></div>
</xsl:template>
<div>ほにゃらら・・・</div>
xsl:copy-of を使用すれば、ソースの構造を結果ノードへコピーすることができるはずです。
<!-- elementノード以下を xsl:copy-of で取得 -->
<xsl:template match="element">
<div><xsl:copy-of select="./node()"/></div>
</xsl:template>
試しに以下のような XML と XSL を作成してみました。
IE では、意図したとおりにレンダリングされました。(IE での表示)出力結果の HTML までは確認していませんが。しかし、Mozilla Firefox (v2.0.0.11) では、なぜかブロック要素の前後で改行されず、テキストのようなレンダリング結果になりました。(Firefoxでの表示) 記述は正しそうに思えるのですが・・・。
ただし、結果 HTML の style タグで設定したスタイルは反映されています。Firefox で「すべてを選択」「選択した部分のソースを表示」すると、変換結果の HTML を見ることができますが、意図したとおりに変換されています。
<html xmlns="http://www.w3.org/1999/xhtml" lang="ja">
<head>
<meta http-equiv="content-type" content="application/xhtml+xml; charset=Shift_JIS"/>
<meta http-equiv="content-style-type" content="text/css"/>
<title>先輩たちからのコメント</title>
<style>
h1 {
padding: 0.2em 0.5em;
font: bold medium sans-serif;
color: #00f;
border: 2px solid #00f;
background: #ccf;
}
div.comment {
margin: 1em;
font: small sans-serif;
}
.comment dt {
font: bold 100% sans-serif;
color: #63f;
}
</style>
</head>
<body>
<h1>やまださんからのコメント</h1>
<div class="comment">
僕の夢は、いつかこの大きなお耳で空を飛ぶことなんだ。
</div>
<h1>たなかさんからのコメント</h1>
<div class="comment">
僕がこの年まで生きてきて、人生に必要なのは以下の3つだと思いました。
<dl>
<dt>金</dt>
<dd>やはり、余裕がないと人生を楽しむことはできません。あとの2つはこの一番目があって初めて意味が出てくるのです。</dd>
<dt>友人</dt>
<dd>ひとりぼっちでは人生は楽しくありません。同じ時間を共有する友人、上下や利害関係のない友人ができれば、人生は最高のものとなると思います。</dd>
<dt>趣味</dt>
<dd>金があっても、使い道がなければそれは意味を持ちません。友人がいても、何か一緒に楽しめるものがあった方が、より友情も深まるというものです。
<br/>僕などは、まったく趣味を持たず、余暇は休息に終始していましたが、定年を目前に控え、友人を誘って近所の山へハイキングへ出かけてから、なぜ今まで休みの日を無為に寝て過ごしていたんだろうと大変惜しく感じました。できれば早いうちに打ち込める趣味を見つけておく方がよいと思います。</dd>
</dl>
</div>
</body>
</html>
これを拡張子 .html として保存して表示すると、IE と同じように表示されます。
拡張子 .wsf のファイルでは、XMLをちょろっと書くだけで Usage (使用方法) が生成できます。
<?xml version="1.0" encoding="utf-8"?>
<package>
<job>
<runtime>
<description>サンプルスクリプトです。</description>
<named
name="A"
helpstring="名前つき引数Aです"
type="string"
required="true"/>
<named
name="B"
helpstring="名前つき引数Bです"
type="boolean"
required="false"/>
<named
name="C"
helpstring="名前つき引数Cです"
type="simple"
required="false"/>
<unnamed
name="arga"
helpstring="名前なし引数Aです"
many="false"
required="true"/>
<unnamed
name="argb"
helpstring="名前なし引数Bです"
many="true"
required="false"/>
<example></example>
</runtime>
<script language="JScript"><![CDATA[
WScript.Arguments.ShowUsage ();
]]></script>
</job>
</package>
>cscript test.wsf /? Microsoft (R) Windows Script Host Version 5.6 Copyright (C) Microsoft Corporation 1996-2001. All rights reserved. サンプルスクリプトです。 使い方 : test.wsf /A:値 [/B[+|-]] [/C] arga [argb1 argb2...] オプション : A : 名前つき引数Aです B : 名前つき引数Bです C : 名前つき引数Cです arga : 名前なし引数Aです argb : 名前なし引数Bです
サンプルの script 要素内にもありますが WScript.Arguments.ShowUsage (); でプログラム内から表示させることもできるので、引数が不正な時などにも使えそうです。
Windows XP Professional SP2 で、シャットダウンのたびに "重要な更新をインストールして電源を切る場合は・・・" が表示されていた。どうやら、毎回失敗していると考えられる。
手動で Microsoft Update にアクセスしてみたが、案の定失敗した。エラー番号:0x80244022。調べてみたところ、SUS_E_PT_HTTP_STATUS_SERVICE_UNAVAIL、Http status 503 - temporarily overloaded とのこと。結局、
>ipconfig /flushdnsで解決した。
このエラー番号は載ってなかったけど、Windows Update のエラー対処情報等は以下のあたりに。
http://support.microsoft.com/ph/6527