o 入力XMLのイメージ
-----(ここから)-----
<customers>
<customer name="佐々木希"/>
<customer name="石原さとみ"/>
・・・
<customers>
-----(ここまで)-----
o 変換後XMLのイメージ
-----(ここから)-----
<Customers>
<Customer id="4c35fa41-2bdd-ab57-24dc-9b0ec1b12cf5"><!-- UUID -->
<No>1</No><!-- 連番 -->
<DispName>佐々木希</DispName>
</Customer>
<Customer id="35cc4cf5-4d3d-b5a1-1b12-24dc8b0fa41e"><!-- UUID -->
<No>2</No><!-- 連番 -->
<DispName>石原さとみ</DispName>
</Customer>
・・・
<Customers>
-----(ここまで)-----
o UUIDを扱うためのXSLの要点
(1) 以下のような"uuid"ネームスペースの定義を追加
-----(ここから)-----
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:uuid="xalan://java.util.UUID"
version="2.0"
>
-----(ここまで)-----
◆注意◆
・Saxon実装を用いている場合はネームスペースは次のように定義する; ただし"HE"では機能しない
-----(ここから)-----
xmlns:uuid="java:java.util.UUID"
-----(ここまで)-----
・Antのxsltタスクで実施する場合、かつAnt導入先の"lib"サブディレクトリ(等)に"saxon9he.jar"などが置かれているとき、xsltタスクの<factory>子要素にデフォルトのXalanの実装を明示しないと、Saxonがロードされ、Xalan形式のネームスペース定義がエラーとなってしまう
-----(ここから)-----
<xslt style=...>
<factory
name="com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl"/>
<!--<factory name="net.sf.saxon.TransformerFactoryImpl"/>-->
</xslt>
-----(ここまで)-----
(2) 以下のようにUUID取得する
-----(ここから)-----
<xsl:variable name="uuid" select="uuid:randomUUID()"/>
-----(ここまで)-----
o 連番を扱うためのXSLの要点
・連番にはXPath関数の「position()」を用いることができる
-----(ここから)-----
<xsl:template match="customer">
<xsl:variable name="no" select="position()"/>
-----(ここまで)-----
o 本記事の説明を実装したXSLのサンプル
※Ant build.xmlも
o 参考記事
◆以上