Out of Memory

本ブログは更新を停止しました。Aerieをよろしくお願いいたします。

目次

Blog 利用状況

ニュース

2009年3月31日
更新を停止しました。引き続きAerieを御愛顧くださいませ。
2009年2月3日
原則としてコメント受付を停止しました。コメントはAerieまでお願いいたします。
詳細は2月3日のエントリをご覧ください。
2008年7月1日
Microsoft MVP for Developer Tools - Visual C++ を再受賞しました。
2008年2月某日
MVPアワードがVisual C++に変更になりました。
2007年10月23日
blogタイトルを変更しました。
2007年7月1日
Microsoft MVP for Windows - SDKを受賞しました!
2007年6月20日
スキル「ニュース欄ハック」を覚えた!
2006年12月14日
記念すべき初エントリ
2006年12月3日
わんくま同盟に加盟しました。

カレンダー

中の人

αετο? / aetos / あえとす

シャノン? 誰それ。

顔写真

埼玉を馬鹿にする奴は俺が許さん。

基本的に知ったかぶり。興味を持った技術に手を出して、ちょっと齧りはするものの、それを応用して何か形にするまでは及ばずに飽きて放り出す人。

書庫

日記カテゴリ

MSDN サブスクライバ ダウンロードのプロダクト キー用XSLT

というわけで、Streetw☆さん、THREE-ONEさんのご協力により、なんとか完成しました。ありがとうございます。

もっとかっこいいコードに改造してくれる方、大募集!

<?xml version="1.0" encoding="UTF-16" standalone="yes" ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" version="1.0">
 <xsl:output
  method="xml" version="1.0" encoding="UTF-16" standalone="no" indent="yes" media-type="application/xhtml+xml"
  doctype-public="-//W3C//DTD XHTML 1.1//EN" doctype-system="http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"/>
 
 <xsl:template match="/">
  <html>
   <head>
    <title>プロダクトキー一覧</title>
    <style type="text/css">
    <![CDATA[
     table
     {
      border-collapse: collapse;
     }
     
     th, td
     {
      border: thin solid black;
      padding: 0.5em;
     }
    ]]>
    </style>
   </head>
   <body>
    <xsl:apply-templates select="YourKey"/>
   </body>
  </html>
 </xsl:template>
 
 <xsl:template match="YourKey">
  <table summary="一覧">
   <thead>
    <tr>
     <th scope="col">Product</th>
     <th scope="col">Key</th>
     <th scope="col">Type</th>
    </tr>
   </thead>
   <tbody>
    <xsl:apply-templates select="Product_Key">
     <xsl:sort select="@Name"/>
    </xsl:apply-templates>
   </tbody>
  </table>
 </xsl:template>
 
 <xsl:template match="Product_Key">
  
  <xsl:variable name="thisName" select="@Name"/>
  <xsl:variable name="thisKey" select="Key/text()"/>
  
  <xsl:variable name="sameNamesBefore" select="count(preceding-sibling::Product_Key[ @Name = $thisName ])"/>
  <xsl:variable name="sameNamesAfter" select="count(following-sibling::Product_Key[ @Name = $thisName ])"/>
  
  <xsl:variable name="sameNameAndKeysBefore" select="count(preceding-sibling::Product_Key[ Key/text() = $thisKey and @Name = $thisName ])"/>
  <xsl:variable name="sameNameAndKeysAfter" select="count(following-sibling::Product_Key[ Key/text() = $thisKey and @Name = $thisName ])"/>
  
  <xsl:if test="$sameNameAndKeysBefore = 0">
   <tr>
    <xsl:if test="$sameNamesBefore = 0">
     <td>
      <xsl:if test="( $sameNamesAfter - $sameNameAndKeysAfter ) != 0">
       <xsl:attribute name="rowspan"><xsl:value-of select="$sameNamesAfter - $sameNameAndKeysAfter + 1"/></xsl:attribute>
      </xsl:if>
      <xsl:value-of select="@Name"/>
     </td>
    </xsl:if>
    <td>
     <xsl:value-of select="Key" disable-output-escaping="yes"/>
    </td>
    <td>
     <xsl:value-of select="Key/@Type"/>
    </td>
   </tr>
  </xsl:if>
 </xsl:template>
 
</xsl:stylesheet>

投稿日時 : 2008年6月24日 17:01

Feedback

# re: MSDN サブスクライバ ダウンロードのプロダクト キー用XSLT 2008/06/24 17:21 シャノン

…IEでしか意図したとおりに表示されないですね。
他のブラウザのXSLTプロセッサがdisable-output-escapingに対応してないのか、実はdisable-output-escapingの使い方が違うのか?

# re: MSDN サブスクライバ ダウンロードのプロダクト キー用XSLT 2008/06/24 18:17 Streetw☆

先ほどのサンプル、わんくまのアドレスとか入ってたのにw
でもこれ欲しかったんです。早速頂きました~
(ちょこっとこちら用に修正しました)
私はIEだけだから大丈夫♪

# re: MSDN サブスクライバ ダウンロードのプロダクト キー用XSLT 2008/06/24 22:40 THREE-ONE

Firefox では disable-output-escaping はきかないそうな。
この XSLT は別として disable-output-escaping は opera, safari ではきくはず。

# re: MSDN サブスクライバ ダウンロードのプロダクト キー用XSLT 2008/06/25 1:38 シャノン

微妙に修正しました。
Opera と Safari でも OK になりました。

タイトル
名前
Url
コメント