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

英字や五十音やイロハで連番を振る

■ ナンバリング

このサンプルは、XMLのデータに通し番号を振るものです。それにはxsl:number要素を使って、<xsl:number level="single"または"multilple2または"any" count="パターン" form="パターン" format="文字列" />のように記述します。
XMLファイル中のどのソースツリーをカウントする対象として(level)、どのノードを(count)、どのノードを基準に数えて(form)、どのような表示方法で番号を振るか(format)など、各属性を指定することで、ナンバリングの条件を細かく指定することができます。
level属性には、カウントの対称にするソースツリーのレベルを指定します。単純に連番を振る場合はデフォルト値のsingleでかまいません。
count属性には、ノードを指定するパタンを指定します。師弟しない場合は、カレントノードと同じノードタイプのノードにマッチするパターンがデフォルト値になります。
form属性では、カウントの開始点を指定します。
formato属性で、番号の表示方法を指定します。1では「1 2 3 4 5・・・・・」、01では「01 02 03 04 05 ・・・・・」、Aでは「A B C D E ・・・・・」、iでは「@ A B C D ・・・・・」、Tでは「T  U V W X ・・・・・」のようになります。

number1.xml

 

number1.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">
<head>
<title>number1</title>
<style>
   th{width:80px;background-color:silver;}
   td{background-color:gainsboro;width:200px;}
</style>
</head>
<body>
   <div><xsl:apply-templates select="全体" /></div>
</body>
</html>
</xsl:template>

<xsl:template match="全体">
<h4>level="Single" format="01"</h4>
<xsl:for-each select="情報">
   <xsl:number level="single" format="01" />
   <table border="1">
      <tr><th>氏名</th><td><xsl:value-of select="氏名" /></td></tr>
      <tr><th>ハンドル</th><td><xsl:value-of select="ハンドル" /></td></tr>
      <tr><th>住所</th><td><xsl:value-of select="住所" /></td></tr>
      <tr><th>勤務先</th><td><xsl:value-of select="勤務先" /></td></tr>
   </table>
</xsl:for-each>
<hr />

<h4>level="any" count="見出し" from="全体" format="A"</h4>
<xsl:for-each select="情報">
   <xsl:number level="any" count="見出し" from="全体" format="A" />
   <table border="1">
      <tr><th>氏名</th><td><xsl:value-of select="氏名" /></td></tr>
      <tr><th>ハンドル</th><td><xsl:value-of select="ハンドル" /></td></tr>
      <tr><th>住所</th><td><xsl:value-of select="住所" /></td></tr>
      <tr><th>勤務先</th><td><xsl:value-of select="勤務先" /></td></tr>
   </table>
</xsl:for-each>
<hr />

<h4>level="single" count="情報" from="全体" format="I"</h4>
<xsl:for-each select="情報">
   <xsl:number level="single" count="情報" from="全体" format="A" />
   <table border="1">
      <tr><th>氏名</th><td><xsl:value-of select="氏名" /></td></tr>
      <tr><th>ハンドル</th><td><xsl:value-of select="ハンドル" /></td></tr>
      <tr><th>住所</th><td><xsl:value-of select="住所" /></td></tr>
      <tr><th>勤務先</th><td><xsl:value-of select="勤務先" /></td></tr>
   </table>
</xsl:for-each>

<h4>level="single" count="情報" from="全体" format="&#x30A2;"</h4>
<xsl:for-each select="情報">
   <xsl:number level="single" count="情報" from="全体" format="&#x30A2;" />
   <table border="1">
      <tr><th>氏名</th><td><xsl:value-of select="氏名" /></td></tr>
      <tr><th>ハンドル</th><td><xsl:value-of select="ハンドル" /></td></tr>
      <tr><th>住所</th><td><xsl:value-of select="住所" /></td></tr>
      <tr><th>勤務先</th><td><xsl:value-of select="勤務先" /></td></tr>
   </table>
</xsl:for-each>

<h4>level="single" count="情報" from="全体" format="&#x30A4;"</h4>
<xsl:for-each select="情報">
   <xsl:number level="single" count="情報" from="全体" format="&#x30A4;" />
   <table border="1">
      <tr><th>氏名</th><td><xsl:value-of select="氏名" /></td></tr>
      <tr><th>ハンドル</th><td><xsl:value-of select="ハンドル" /></td></tr>
      <tr><th>住所</th><td><xsl:value-of select="住所" /></td></tr>
      <tr><th>勤務先</th><td><xsl:value-of select="勤務先" /></td></tr>
   </table>
</xsl:for-each>

</xsl:template>
</xsl:stylesheet>

これ以外の属性として、言語を指定するklangz区政、式をしているvalue属性があります。この属性は指定しなくてもソースツリーのカレントノードを基準に番号がつけられます。また、アルファベットと数字の優先度を指定するletter-value属性のデフォルトはアルファベットで、XSL変換結果に単純な連番を振るためには、特に指定する必要はないと思います。

<<<戻る

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