2010-06-01から1ヶ月間の記事一覧

XSLT2.0で便利になった機能(9) for式を使う

for式もXPath2.0から導入されたものです.ところが、自分のスタイルシートを見渡してもforを使っているところは一箇所しかありませんでした.紹介しますと索引のソートキーを作成するのにどうしても固定長のスペースの文字列が必要でした. 最初はこれを <xsl:variable name="space256" select="' '"/> </xsl:variable>…

XSLT2.0で便利になった機能(8) if () then elseを使う

最初XPath2.0の例をいろいろ見ていて、ギョッとしたのが、if (...) then elseの式でした.御存知のように、XSLTの要素では、<xsl:if>は書けますが、<xsl:else>というのはなく、(XMLはタグが対応していなければならないので当たり前ですが...)実用的に条件を記述するのには、</xsl:else></xsl:if>…

XSLT2.0で便利になった機能(7) castable asを使ってみる

XSLT2.0ではご存知のようにXPath2.0が使えます.XPath2.0は1.0に比べて格段に変わっています.ここでは、そのなかの一つcastableオペレータを使って、データチェックができることを紹介します. XSLTで実際データチェックなんてやるのか?という方もいらっし…

田んぼの生き物調査

地元のJA上伊那が出している減農薬のアルプス米は、生活クラブ生協と提携して生産しています.6月19日は、生活クラブ生協の長野、神奈川の方がこられて、午前中は田の草取り、午後は田んぼの生き物調査を生産者と共に楽しんでいかれました. 私は(一応)生…

閑話休題:titleのテンプレート

DocBookにもDITAにも必ずtitleがあります.タイトルは目次ページや、参照(xref)などでも使われます.タイトルそのものを本文中で処理するときは、例えばDocBook→XSL-FOなら、 <xsl:template match="title"> <fo:block use-attribute-sets="xxxTitle"> <xsl:apply-templates/> <fo:block> </xsl:template> のようなもので良いと思いますが、目次ページや参照では変数にタイトルの…

XSLT2.0で便利になった機能(7) xs:result-document

ファイルの入出力で便利になったのが、<xs:result-document>による複数の出力ファイルのサポートです.XSL1.0では、入力ファイルについてはdocument()関数を使って、任意のXMLファイルを入力できました. <xsl:value-of select="document('lang.xml')/doc/@lang"/> と値を取得することもできましたし、 <xsl:apply-templates select="document('lang.xml')/doc"/> と、テンプレートを適用することも</xsl:apply-templates></xsl:value-of></xs:result-document>…

閑話休題:Saxonでのデバッグ

XSLT2.0で便利になった機能(1)でtunnelパラメータについて書きましたが、現在DITA→XSL-FOのスタイルシートでパラメータのtunnel化を進めています. やり方はパラメータ値が確定したところで、 <xsl:with-param name="pamLang" tunnel="yes" select="..."/> とtunnelの「入口」を作ります.最後の$prmLangを必要とするテ</xsl:with-param>…

XSLT2.0で便利になった機能(6) シーケンス

XSLT2.0から取り入れられたsequenceの概念、xsl:templateもxsl:variableもXSLT2.0では、そのコンテンツは、sequence-constructorとして定義されます. <xsl:variable name="..." as="..."> </xsl:variable> <xsl:template name="..." as="..."> </xsl:template> sequenceを記述するときは"(",")"を使う.例えばxs:i…

閑話休題:テンポラリツリーをXSLT2.0で表す.

XSLT1.0から2.0へのスタイルシートの移行を始めると、次の点に迷います. 1. <xsl:variable>にas属性をつけるべきか? 2. <xsl:param>にrequired, as属性をつけるべきか? XSLT2.0プロセッサはこれらの記述の有無には下位互換性がありますので、XSLT1.0の記述のままにしておいても良い</xsl:param></xsl:variable>…

XSLT2.0で便利になった機能(5) 正規表現

さて、見逃してならないXSLT2.0で便利になった機能に、正規表現(regular expression)が使えるようになったことがあります.とは言ってみたのですが、自分のスタイルシートを調べてみると、そう使っている箇所は多くありません.少しですが紹介してみたいと…

XSLT2.0で便利になった機能(4) テンポラリツリーへのアクセス

忘れていましたがXSLT2.0で当たり前になった機能に、テンポラリなツリーを格納した<xsl:variable>をXPath式で参照できるようになったことがあります.この機能、なんの苦もなく使えてしまうので、XSLT1.0の時の苦労を忘れてしまいます. ちょっと復習してみますと、<xsl:variable>は、sel</xsl:variable></xsl:variable>…

XSLT2.0で便利になった機能(3) xsl:function

次にXSLT2.0で便利になったなと思わせるのは、やはり<xsl:function>が導入され、XPathの中から<xsl:function>で定義した関数が簡単に呼び出せるようになったことではないかと思います.さて思い返せばXSLT1.0では、たぶん次のようなことをやっていたはずです. スタイルシートが複雑にな</xsl:function></xsl:function>…

惨敗!TLM200デビュー

TLM200の登録が済み、タイヤも新品になったのでさっそく標高1331mの近くのT山に行ってきました.近くにもトライアル場もどきの場所はあるのですが、小さな河川敷の庭みたいなところで、2ストのRTLが群れをなして走り回っているだけです.やっぱりトライアル…

XSLT2.0で便利になった機能(2) as属性による型付け

XSLT 2.0で最も1.0と異なる点は、as属性による「型付け」ができるようになったことではないでしょうか?as属性は、<xsl:variable>, <xsl:param>,<xsl:with-parm>だけでなく、<xsl:template>や<xsl:function>にも戻り値としてにも記述できます.XSLT 1.0と<xsl:variable>を例に比べてみましょう.XSLT 1.0では、 <xsl:variable name="lang"> <xsl:choose> <xsl:when test="@xml:lang"> </xsl:when></xsl:choose></xsl:variable></xsl:variable></xsl:function></xsl:template></xsl:with-parm></xsl:param></xsl:variable>

XSLT2.0で便利になった機能(1) tunnelパラメータ

XSL2.0で便利になった機能をいくつか紹介しようと思います.ただし私は体系的に学んだわけではないので、実際に使ってみて便利と実感したものを順不同という形です. 最初はトンネルパラメータです.文書処理のスタイルシートを書いていると、ブロックレベル…