<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet exclude-result-prefixes="res xsl" version="1.0" xmlns:res="http://www.w3.org/2005/sparql-results#" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml">
<xsl:output encoding="UTF-8" method="text">
<xsl:template name="boolean-result">
<xsl:value-of select="res:boolean">
</xsl:value-of></xsl:template>
<xsl:template name="vb-result">
<xsl:for-each select="res:head/res:variable">
<xsl:value-of select="@name">
<xsl:text>,</xsl:text>
</xsl:value-of></xsl:for-each>
<xsl:for-each select="res:results/res:result">
<xsl:text>
</xsl:text>
<xsl:apply-templates select=".">
</xsl:apply-templates></xsl:for-each>
</xsl:template>
<xsl:template match="res:result">
<xsl:variable name="current" select=".">
<xsl:for-each select="//res:head/res:variable">
<xsl:variable name="name" select="@name">
<xsl:choose>
<xsl:when test="$current/res:binding[@name=$name]">
<xsl:apply-templates select="$current/res:binding[@name=$name]">
</xsl:apply-templates></xsl:when>
<xsl:otherwise>
</xsl:otherwise>
</xsl:choose>
<xsl:text>,</xsl:text>
</xsl:variable></xsl:for-each>
</xsl:variable></xsl:template>
<xsl:template match="res:bnode">
<xsl:value-of select="text()">
</xsl:value-of></xsl:template>
<xsl:template match="res:uri">
<xsl:variable name="uri" select="text()">
<xsl:value-of select="$uri">
</xsl:value-of></xsl:variable></xsl:template>
<xsl:template match="res:literal">
<xsl:choose>
<!--
<xsl:when test="@datatype">
<xsl:value-of select="text()"/> (datatype <xsl:value-of select="@datatype"/> )
</xsl:when>
<xsl:when test="@xml:lang">
<xsl:value-of select="text()"/> @ <xsl:value-of select="@xml:lang"/>
</xsl:when>
<xsl:when test="string-length(text()) != 0">
<xsl:value-of select="text()"/>
</xsl:when>
<xsl:when test="string-length(text()) = 0">
<xsl:text></xsl:text>
</xsl:when>
-->
<xsl:when test="string-length(text()) != 0">
<xsl:value-of select="text()">
</xsl:value-of></xsl:when>
</xsl:choose>
</xsl:template>
<xsl:template match="res:sparql">
<xsl:choose>
<xsl:when test="res:boolean">
<xsl:call-template name="boolean-result">
</xsl:call-template></xsl:when>
<xsl:when test="res:results">
<xsl:call-template name="vb-result">
</xsl:call-template></xsl:when>
</xsl:choose>
</xsl:template>
</xsl:output>
</xsl:stylesheet>
TSVを出力する場合は「,」とある箇所をタブに書き換えればよい.2012年12月2日日曜日
XSLTを使ってSPARQL Query Results XML FormatをCSV/TSV形式にする
SPARQL Query Results XML FormatにあるXSLTサンプルresult-to-html.xslを少し書き換えてCSV/TSVを出力するようにしてみた.
登録:
コメントの投稿 (Atom)
0 件のコメント:
コメントを投稿