今回は労働基準法令の中でもひときわ大部である、労働安全衛生規則を変換してみることにした。前回にも書いたように、労働安全衛生規則(以下「規則」とする)は、編、章、節、款といった様々な構成単位により成っていて、また、規則全体を木構造とみなすと、ノードによって深さがまちまち(つまり節のない章や款の無い節がある)だったりするので、割と扱いが面倒なのだった。というわけで僕のプログラミング力では冗長なコードしか書けなかったのだが、まあとりあえず出力自体は成功した。リンクのid名もとりあえずちゃんと付けられた。結果はこちら。
Kashiwa Hangさんにまた巡り合えた話
この前の土曜日(3/2)に友達と酒を飲むために仙台に行ったんですが、びっくり仰天3年前柏駅で一聞き惚れしたKashiwa Hangさんに駅前で遭遇しました(過去についての詳細はこちら)。恐れ多くも声を掛けさせていただき、お話を伺ったところ、なんでも前日、仙台の料理屋でライブを行っていたそうで、その翌日に、仙台の北にある宮城県栗原市でも演奏をする予定になっていて、それまでの待ち時間に路上ライブでも、ということでたまたま駅前にいらっしゃったのだそうです。なんという偶然!
僕はと言えばお話をしている間ずっとキョドってるやばい人になっていましたが、とにかく応援してます、これからも頑張って下さい、といったメッセージを拙いながらも伝え、3年前に買いそびれてしまったCDを買わせていただきました。大変有難かったです。
“Kashiwa Hangさんにまた巡り合えた話” の続きを読む
労働基準法のXMLをHTMLにしてみた(2)+α
前回のは各号列記が出力されなかったり色々問題があったので修正した。恐らくXSLTの肝であろうxsl:templateを活用したので割とコードがすっきりした(はず)。あとなんとなくバージョンを3.0にした。
<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="3.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2005/xpath-functions" exclude-result-prefixes="xsl xs fn"> <xsl:output method="html"/> <xsl:template match="/"> <xsl:apply-templates select="Law/LawBody"/> </xsl:template> <xsl:template match="Law/LawBody"> <html> <head> <title><xsl:value-of select="LawTitle"/></title> <link href="sample.css" rel="stylesheet" type="text/css" /> </head> <body> <h1><xsl:value-of select="LawTitle"/></h1> <div class="TOC"> <xsl:for-each select="TOC/TOCChapter"> <a> <xsl:attribute name="href">#c<xsl:value-of select="@Num"/></xsl:attribute> <xsl:value-of select="ChapterTitle"/> </a> <xsl:if test="count(TOCSection)!=0"> <xsl:for-each select="TOCSection"> <a> <xsl:attribute name="href">#c<xsl:value-of select="../@Num"/>s<xsl:value-of select="@Num"/></xsl:attribute> <xsl:attribute name="class">section</xsl:attribute> <xsl:value-of select="SectionTitle"/> </a> </xsl:for-each> </xsl:if> </xsl:for-each> </div> <xsl:for-each select="MainProvision/Chapter"> <div class="chapter"> <h3> <xsl:attribute name="id">c<xsl:value-of select="@Num"/></xsl:attribute> <xsl:value-of select="ChapterTitle"/> </h3> <xsl:choose> <xsl:when test="count(Section)=0"> <xsl:apply-templates select="Article"/> </xsl:when> <xsl:otherwise> <xsl:apply-templates select="Section"/> </xsl:otherwise> </xsl:choose> </div> </xsl:for-each> </body> </html> </xsl:template> <xsl:template match="Section"> <div class="section"> <h4 class="section_title"> <xsl:attribute name="id">c<xsl:value-of select="../@Num"/>s<xsl:value-of select="@Num"/></xsl:attribute> <xsl:value-of select="SectionTitle"/> </h4> <xsl:apply-templates select="Article"/> </div> </xsl:template> <xsl:template match="Article"> <div class="article"> <h6 class="article_title"><xsl:value-of select="ArticleTitle"/></h6> <span class="caption"><xsl:value-of select="ArticleCaption"/></span> <xsl:apply-templates select="Paragraph"/> </div> </xsl:template> <xsl:template match="Paragraph"> <p class="paragraph"> <xsl:value-of select="ParagraphNum"/> <xsl:value-of select="ParagraphSentence/Sentence"/> </p> <xsl:apply-templates select="Item"/> </xsl:template> <xsl:template match="Item"> <p class="item"> <xsl:value-of select="ItemTitle"/> <xsl:value-of select="ItemSentence/Sentence"/> <xsl:apply-templates select="ItemSentence/Column"/> </p> </xsl:template> <xsl:template match="ItemSentence/Column"> <xsl:value-of select="Sentence"/> </xsl:template> </xsl:stylesheet>
結果がこちら(相変わらず環境によって見れなかったりするのでhtmlで)。
ついでなので同じXSLファイルで労働安全衛生法も変換。結果はこちら。
章、節だけの法令ならこれで問題なく変換できるのだが、編、章、節、款といった枝分かれがあったりなかったりする木構造になるとやや面倒になる。特に民法や労働安全衛生規則などがそうなのだが、それらについては次回にて。
労働基準法のXMLをHTMLにしてみた
総務省でe-Gov(イーガブ)という「電子政府の総合窓口」なるものが運営されている。
ここでは法令検索ができて、法令の全文が閲覧できるだけでなく、有難いことにXMLデータもダウンロードすることができる(二次利用も自由とのこと)。こっからいい感じに法令をデータベース化して容易に条文検索できるツール用意すれば最高なんじゃねって思ってはいるのだが、今のところそこまでの技量がないので、ひとまずe-Govの表示よりマシなHTML形式のデータが出力できればいいかな~ってことで、ちょっと前にXSLT1eXtensible Stylesheet Language Transformationの略らしいをさくっと勉強して、提供されているXMLスキーマを参考にコードを書いた(transform.xsl)。 “労働基準法のXMLをHTMLにしてみた” の続きを読む
グリーンスリーブス (リコーダー)
かなり好みの編曲。中間部のテナーとバスのデュオが美しい(特にバスが半音階で進行するとこがグッとくる)。