Changes between Version 7 and Version 8 of OnyxExportOntology


Ignore:
Timestamp:
01/27/11 14:35:16 (13 years ago)
Author:
jason.selby
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • OnyxExportOntology

    v7 v8  
    261261  1. Some stages are not questionnaires (and therefore contain no questions), eg: the sample stages.
    262262  1. Some are not even stages: see the Participant file within the export. The Participant file contains participant data retrieved via the PMI plus "other" admin type data, eg: Admin.Participant.birthDate and Admin.Action.user.
     263
     264'''Jason's 'bash' at a stylesheet'''
     265
     266I've been working on a stylesheet to take the variables.xml onyx etract and make it into Jeff's suggested ontology schema format so here it is :-
     267
     268<?xml version="1.0" encoding="UTF-8"?>
     269<xsl:stylesheet version="2.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">
     270        <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
     271        <xsl:template match="*">
     272                <xsl:apply-templates select="variables"/>
     273        </xsl:template>
     274        <xsl:template match="/variables">
     275                <xsl:element name="source">
     276                        <xsl:element name="name">briccs</xsl:element>
     277                        <!-- only interested in variable elements with a child of categories -->
     278                        <xsl:apply-templates select="variable[categories]"/>
     279                </xsl:element>
     280        </xsl:template>
     281        <!-- only want one stage element and subsequent section etc so apply only when it's the first in the list rather than all of them -->
     282        <xsl:template match="variable[categories][position()=1]">
     283                <xsl:element name="stage">
     284                        <xsl:element name="name">
     285                                <xsl:value-of select="attributes/attribute[@name='stage']"/>
     286                        </xsl:element>
     287                        <xsl:element name="section">
     288                                <xsl:element name="name">
     289                                        <xsl:value-of select="attributes/attribute[@name='section']"/>
     290                                </xsl:element>
     291                                <!-- to get the depth right we now need to go up the tree and get all the variables with categories and loop thru them -->
     292                                <xsl:for-each select="//variable[categories]">
     293                                        <xsl:element name="question">
     294                                                <xsl:element name="name">
     295                                                        <xsl:value-of select="@name"/>
     296                                                </xsl:element>
     297                                                <xsl:element name="label">
     298                                                        <xsl:value-of select="attributes/attribute[@name='label']"/>
     299                                                </xsl:element>
     300                                                <!-- now get all the categories below where we are -->
     301                                                <xsl:apply-templates select="categories"/>
     302                                        </xsl:element>
     303                                </xsl:for-each>
     304                        </xsl:element>
     305                </xsl:element>
     306        </xsl:template>
     307        <xsl:template match="categories">
     308                <xsl:element name="variable">
     309                        <xsl:element name="name">
     310                                <xsl:value-of select="../attributes/attribute[@name='questionName']"/>
     311                        </xsl:element>
     312                        <xsl:element name="type">
     313                                <xsl:value-of select="../@valueType"/>
     314                        </xsl:element>
     315                        <xsl:apply-templates/>
     316                </xsl:element>
     317        </xsl:template>
     318</xsl:stylesheet>
     319
     320Seems to work quite well but needs more effort around the variable/variable bit below question as I'm not entirely sure where we are sourceing this data from. I've attached the file as well for easier editing etc.
     321