Dreamweaver TechniqueJAVA Script サンプル | CSS sample | JAVA Applet sample | Flash Sample
HTML4.0 riference | DynamicHTMLXHTML | XML sample | XSLT sample | RIKO's ASP Trial

処理命令を生成する

■ プロセシングインストラクション

このサンプルは、出力結果の中に処理命令を生成するものです。それには、xsl:processing-instruction要素を使って、<xsl:processing-instruction name="pi-name" >テンプレートの内容</xsl:processing-instruction>のように記述します。
piは processing instructionの略です。name属性には、処理命令ノードの名前を指定します。例えば、XSLファイルへの関連付けの1行を生成するには、name属性値にxml-stylesheetを指定します。

pi1.xml

 

pi1.xsl

<?xml version="1.0" encoding="Shift_JIS"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml" version="1.0" standalone="yes" indent="yes" />
<xsl:template match="/">
   <xsl:apply-templates select="全体" />
</xsl:template>

<xsl:template match="全体">
<xsl:processing-instruction name="xml-stylesheet">type="text/xsl" href="sample.xsl"</xsl:processing-instruction>
<全体>
   <情報>
      <xsl:for-each select="情報">
         <氏名><xsl:value-of select="氏名" /></氏名>
      </xsl:for-each>
   </情報>
</全体>
</xsl:template>
</xsl:stylesheet>

※ 属性値を走査した結果がPITargetでない場合は、エラーになりますまた、xsl:processing-instructionの内容を示す結果が?>という文字列を含んでいること事態はエラーの原因となるのですが、IEの場合は、エラーを表示せずに>の直線にある?の後ろに空白を1個章乳することで、エラーを回避する方法が採用されています。ただし、XSLファイルへの関連付けは正しく解釈されないので、ツリー表示にしかなりません。

※ xsl:processing-instructionは、XML宣言を出力するために使うことはできません。

 

pi1.hta

<html>
<head>
   <script type="text/vbscript">
   <!--
      option explicit
      dim xmldoc,stylesheet,result
      dim kakikae,fso,f
      sub window_onload()
      set xmldoc=createObject("microsoft.xmldom")
      xmldoc.async=false
      xmldoc.load("pi1.xml")

      set stylesheet=createObject("microsoft.xmldom")
      stylesheet.async=false
      stylesheet.load("pi1.xsl")

      result=xmldoc.documentElement.transformNode(stylesheet)
      kakikae=Replace(result,"UTF-16","Shift_JIS")
      result=kakikae

      set fso=createObject("scripting.fileSystemObject")
      set f=fso.openTextFile("c:\data\sample_save\pi1_s.xml",2,true)
      f.write result
      f.close
      set f=Nothing

      window.location.href="c:\data\sample_save\pi1_s.xml"
      top.window.close()

      end sub
   -->
   </script>
</head>
<body></body>
</html>

 

sample.xsl

<?xml version="1.0" encoding="Shift_JIS"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
<html lang="ja">
<body>
   <xsl:apply-templates select="全体/情報" />
</body>
</html>
</xsl:template>

<xsl:attribute-set name="pStyle">
   <xsl:attribute name="style">
      font-family : "MS Pゴシック" ;
      font-size : 20pt ;
      color : white ;
      font-weight : bold ;
      background-color : black ;
   </xsl:attribute>
</xsl:attribute-set>

<xsl:template match="全体/情報">
   <xsl:for-each select="氏名">
   <p xsl:use-attribute-sets="pStyle">
      <xsl:value-of select="." />
   </p>
   </xsl:for-each>
</xsl:template>
</xsl:stylesheet>

<<<戻る

R HOUSE | RIKO's Trial Page | Shirley's Pettit Case | Shirley's i-box | Shirley's little box