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

空白文字を扱う

■ 空白の保持

このサンプルは、XSLの要素を使って複数の空白文字を保持するサンプルです。xsl:preserve-space要素を使って、<xsl:preserve-space elements="空白で区切られたNameTeetsのリスト" />のように記述すると、空白が保持されます。

preserve-space1.xml

 

preserve-space1.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:preserve-space elements="氏名" />
<xsl:template match="/">
   <xsl:apply-templates select="全体" />
</xsl:template>

<xsl:template match="全体">
<全体>
   <情報>
      <xsl:for-each select="情報">
         <氏名><xsl:value-of select="氏名" /></氏名>
      </xsl:for-each>
   </情報>
</全体>
</xsl:template>
</xsl:stylesheet>

※ xsl:namespace-spaceはトップレベル要素なので、xsl:stylesheetまたはxsl:transform要素の直下に記述しましょう。

preserve-space1.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("preserve-space1.xml")
      set stylesheet=createObject("microsoft.xmldom")
      stylesheet.async=false
      stylesheet.load("preserve-space1.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\preserve-space1_s.xml",2,true)
      f.write result
      f.close
      set f=Nothing

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

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

空白の保持や削除の処理は、まず最初、空白を保持するようその集合にすべての要素名が含まれた状態から始まります。xsl:strip-spaceのelements属性値の中のNameTestに合致する要素名があると、空白を保持するよう染井野集合から削除されていきます。逆にxsl:preserve-spaceのelements属性値の中のNameTestに合致する要素名があると、空白を保持する要素名の集合に追加されます。xsl:strip-space要素とxsl:preserve-space要素の両方を記述した場合、<xsl:strip-space elements="氏名" /><xsl:preserve-space elements"氏名" />よりも後に記述したxsl:preserve-spaceが優先されるので空白は残ります。この順序を逆に書くと空白は削除されます。

<<<戻る

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