« Office 2007が起動しなくなる罠 | トップページ | 重複を削ればもっとわかりやすい »

MSDNサブスクライバーダウンロードとかのプロダクトキー一覧をXMLでエクスポートしたはいいけど、XMLのままだとちょっと見難いので、XSLT埋め込みテクノロジを流用してみた

長い表題だけど。

要は、これと同じ。

MSDNとかTechNetのサブスクリプションでプロダクトキー一覧をXMLでエクスポートできるのは良いのだけど、XMLのままだと少し見難かったりする。

どうせなら、テーブル形式で見たいところだなぁと、常々思っていた。
だからといって、エクスポートしたXMLを編集するのは、キーが追加される毎やらなきゃならんとなると少々面倒。

でも、XML中で動くXSLTを実現できたんだから、流用すれば簡単に実現できんじゃねぇの?って思ってちょろっと書いてみた。

#CUS形式については省略。

正しくないかも知れないけど、一応、テーブル表示されるのでOK。

<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet type="text/xsl" href="#"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="html"/>
  <xsl:variable name="keys">keys.xml</xsl:variable>
  <xsl:template match="Product_Key">
    <xsl:if test="not(Key/@Type='CUS')">
      <tr>
        <td><xsl:value-of select="@Name"/></td>
        <td><xsl:apply-templates select="Key"/></td>
      </tr>
    </xsl:if>
  </xsl:template>
  <xsl:template match="Key">
    <xsl:if test="not(position()=1)"><br/></xsl:if>
    [<xsl:value-of select="@Type"/>]:<xsl:value-of select="."/>
  </xsl:template>
  <xsl:template match="/">
    <html>
      <head>
        <title>Product Keys</title>
      </head>
      <body>
        <table border="1">
          <tr><th>Product Name</th><th>Key</th></tr>
          <xsl:for-each select="document($keys)//Product_Key">
            <xsl:apply-templates select="."/>
          </xsl:for-each>
        </table>
      </body>
    </html>
  </xsl:template>
</xsl:stylesheet>

プロダクトキー一覧(keys.xml)を上記内容のxmlファイル(utf-8で仮にtable.xmlとして保存)と同じディレクトリに置いて、table.xmlをIEで表示すると、以下のようになる。

ProductKey

<xsl:apply-templates select="."/>の前に<xsl:sort select="@Name"/>を入れると、Product Name列でソートできる。

超便利。

|

« Office 2007が起動しなくなる罠 | トップページ | 重複を削ればもっとわかりやすい »

趣味」カテゴリの記事

コメント

この記事へのコメントは終了しました。