<?xml version="1.0"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output method="xml" indent="yes"/> <xsl:output encoding="ISO-8859-1"/> <xsl:strip-space elements="*"/> <xsl:param name="packageName" select="'higgins.4109.2'"/> <xsl:param name="packageDir" select="''"/> <xsl:variable name="dsb6" select="document(concat($packageDir,$packageName))"/> <xsl:template match="/"> <!--<xsl:variable name="dsb6" select="/"/> --> <xsl:element name="package"> <xsl:attribute name="id"><xsl:value-of select="$packageName"/></xsl:attribute> <xsl:call-template name="getEntities"> <xsl:with-param name="datasetId" select="$packageName"/> <xsl:with-param name="dsb6" select="$dsb6"/> </xsl:call-template> </xsl:element> </xsl:template> <xsl:template name="getPackageStructure"> <xsl:param name="packageName"/> <xsl:variable name="dsb6" select="document($packageName)"/> <xsl:element name="package"> <xsl:attribute name="id"><xsl:value-of select="$packageName"/></xsl:attribute> <xsl:call-template name="getEntities"> <xsl:with-param name="datasetId" select="$packageName"/> <xsl:with-param name="dsb6" select="$dsb6"/> </xsl:call-template> </xsl:element> </xsl:template> <xsl:template name="parseTriples"> <xsl:param name="subjectVal"/> <xsl:param name="dsb6"/> <xsl:variable name="tripleList" select="subjectVal"/> <xsl:element name="{$tripleList}"> <xsl:for-each select="$dsb6/dataset/triple[./object=$subjectVal]"> <xsl:if test="((last()>0) and (./subject!=./object))"> <xsl:variable name="cur" select="./subject"/> <xsl:element name="{$cur}"> <xsl:attribute name="rel"> <xsl:value-of select="./relationship"/> </xsl:attribute> <xsl:call-template name="parseTriples"> <xsl:with-param name="subjectVal" select="$cur"/> </xsl:call-template> </xsl:element> </xsl:if> </xsl:for-each> </xsl:element> </xsl:template> <xsl:template name="getEntities"> <xsl:param name="datasetId"/> <xsl:param name="dsb6"/> <xsl:call-template name="getAccess"> <xsl:with-param name="dsb6" select="$dsb6"/> </xsl:call-template> <xsl:if test="$dsb6/dataset/triple/relationship[contains(.,'provides table-entity information for DATAFILE')]!=''"> <xsl:element name="entities"> <xsl:for-each select="$dsb6/dataset/triple/relationship[contains(.,'provides table-entity information for DATAFILE')]"> <xsl:element name="entity"> <xsl:attribute name="id"> <xsl:value-of select="../subject"/> </xsl:attribute> <xsl:call-template name="getAttributeFor"> <xsl:with-param name="entity" select="../subject"/> <xsl:with-param name="dsb6" select="$dsb6"/> </xsl:call-template> <xsl:call-template name="getPhysicalFor"> <xsl:with-param name="entity" select="../subject"/> <xsl:with-param name="dsb6" select="$dsb6"/> </xsl:call-template> <xsl:call-template name="getDataFileFor"> <xsl:with-param name="entity" select="../subject"/> <xsl:with-param name="dsb6" select="$dsb6"/> </xsl:call-template> </xsl:element> </xsl:for-each> </xsl:element> </xsl:if> <xsl:if test="$dsb6/dataset/triple[contains(./relationship,'provides eml-project information for')]!=''"> <xsl:call-template name="getProject"> <xsl:with-param name="dsb6" select="$dsb6"/> </xsl:call-template> </xsl:if> </xsl:template> <xsl:template name="getAttributeFor"> <xsl:param name="entity"/> <xsl:param name="dsb6"/> <xsl:for-each select="$dsb6/dataset/triple[contains(./relationship,'provides eml-attribute information for Table')]"> <xsl:if test="./object=$entity"> <xsl:element name="attribute"> <xsl:value-of select="./subject"/> </xsl:element> </xsl:if> </xsl:for-each> </xsl:template> <xsl:template name="getPhysicalFor"> <xsl:param name="entity"/> <xsl:param name="dsb6"/> <xsl:for-each select="$dsb6/dataset/triple[contains(./relationship,'provides eml-physical information for Table')]"> <xsl:if test="./object=$entity"> <xsl:element name="physical"> <xsl:value-of select="./subject"/> </xsl:element> </xsl:if> </xsl:for-each> </xsl:template> <xsl:template name="getDataFileFor"> <xsl:param name="entity"/> <xsl:param name="dsb6"/> <xsl:for-each select="$dsb6/dataset/triple[contains(./relationship,'provides table-entity information for DATAFILE')]"> <xsl:if test="./subject=$entity"> <xsl:element name="dataFile"> <xsl:value-of select="./object"/> </xsl:element> </xsl:if> </xsl:for-each> </xsl:template> <xsl:template name="getAccess"> <xsl:param name="dsb6"/> <xsl:element name="acl"> <xsl:value-of select="$dsb6/dataset/triple[contains(./relationship,'access control rules for')]/subject[1]"/> </xsl:element> </xsl:template> <xsl:template name="getProject"> <xsl:param name="dsb6"/> <xsl:element name="project"> <xsl:value-of select="$dsb6/dataset/triple[contains(./relationship,'provides eml-project information for')]/subject[1]"/> </xsl:element> </xsl:template> </xsl:stylesheet>