一労働基準監督官としての所感――刑事捜査を例として――

刑事訴訟法第189条第2項には、こうある。

 司法警察職員は、犯罪があると思料するときは、犯人及び証拠を捜査するものとする。

ところで、労働基準法、労働安全衛生法には、それぞれ次のように定められている。

 労働基準法第102条 労働基準監督官は、この法律違反の罪について、刑事訴訟法に規定する司法警察員の職務を行う。
労働安全衛生法第92条 労働基準監督官は、この法律の規定に違反する罪について、刑事訴訟法(昭和二十三年法律第百三十一号)に規定する司法警察員の職務を行う。

ここにおいて、司法警察員は、差し当たり司法警察職員と同義と解してよい。となれば、結局のところ労働基準監督官は、労働基準法や労働安全衛生法等の違反の罪について、捜査を行う権限を持っているわけである。このように、通常の警察官ではないが、警察官と同等の権限を有する公務員を、特別司法警察職員と呼んだりもする。 “一労働基準監督官としての所感――刑事捜査を例として――” の続きを読む

私の「仕事」を巡る因縁の始まり

改めて自分の話をするが、僕は修士で2年間古代ギリシャ語の形容詞について研究をして、その後今は労働基準監督官として労働についてあれこれやっている。わざわざ修士でマニアックなことをやっておいて、結局仕事は無難に公務員なんかい、って我ながら思ったりするのだが、実を言うと、学生の頃から労働についてはぼんやり考えていたりしたのだ。ただし、注釈すると、古代ギリシャ語のἔργον「仕事」についてだったのだが。 “私の「仕事」を巡る因縁の始まり” の続きを読む

労働安全衛生規則のXMLをHTMLにしてみた

今回は労働基準法令の中でもひときわ大部である、労働安全衛生規則を変換してみることにした。前回にも書いたように、労働安全衛生規則(以下「規則」とする)は、編、章、節、款といった様々な構成単位により成っていて、また、規則全体を木構造とみなすと、ノードによって深さがまちまち(つまり節のない章や款の無い節がある)だったりするので、割と扱いが面倒なのだった。というわけで僕のプログラミング力では冗長なコードしか書けなかったのだが、まあとりあえず出力自体は成功した。リンクのid名もとりあえずちゃんと付けられた。結果はこちら

“労働安全衛生規則のXMLをHTMLにしてみた” の続きを読む

労働基準法の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にしてみた” の続きを読む