next up previous contents
Next: List of Figures Up: Großer Beleg XML Query Previous: 6. Summary   Contents

Subsections

A. Selected XSLT Scripts


A.1 navigateParameterized.xsl

To understand the script and the following output, you need the xmi.id's of the types involved:



Type Id
int S.100006
String S.100003
Return2 S.100082



<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/XSL/Transform/1.0"
                xmlns:xt="http://www.jclark.com/xt"
                extension-element-prefixes="xt">


<xsl:template match="XMI">
  <xsl:text>
</xsl:text>
  <XMI>
    <xsl:apply-templates select="XMI.content">
    </xsl:apply-templates>
    <xsl:text>
</xsl:text>
  </XMI>
</xsl:template>

<xsl:template match="XMI.content">
  <xsl:text>
  </xsl:text>
  <XMI.content>
    <xsl:apply-templates select="Model">
    </xsl:apply-templates>
    <xsl:text>
  </xsl:text>
  </XMI.content>
</xsl:template>

<xsl:template match="Model">
  <xsl:text>
    </xsl:text>
  <Model name="{name}">
    <xsl:apply-templates select="ownedElement">
    </xsl:apply-templates>
    <xsl:text>
    </xsl:text>
  </Model>
</xsl:template>

<xsl:template match="ownedElement">
  <xsl:apply-templates select="Model|Class" />
</xsl:template>

<xsl:template match="Class">
</xsl:template>

<xsl:template match="Class[@XMI.id='S.100027']" priority="2">
  <xsl:text>
      </xsl:text>
  <Class name="{name}">
  <xsl:apply-templates select="feature" />
    <xsl:text>
      </xsl:text>
  </Class>
</xsl:template>

<xsl:template match="feature">
  <xsl:apply-templates select="Operation" />
</xsl:template>

<xsl:template match="Operation">
</xsl:template>

<xsl:template match="Operation[name='operation']" priority="2">
  <xsl:text>
        </xsl:text>
  <Operation name="{name}">
  <xsl:apply-templates
      select="parameter[1]/Parameter[1]/type[1]/XMI.reference[1]"
      mode="P1"/>
    <xsl:text>
        </xsl:text>
  </Operation>
</xsl:template>

<xsl:template match="XMI.reference">
</xsl:template>

<xsl:template match="XMI.reference[@target='S.100003']" mode="P1" priority="2">
  <xsl:text>
            IS_OK_1</xsl:text>
  <xsl:apply-templates
      select="../../../../parameter[2]/Parameter[1]/type[1]/XMI.reference[1]"
      mode="P2"/>
</xsl:template>

<xsl:template match="XMI.reference[@target='S.100006']" mode="P2" priority="2">
  <xsl:text>
            IS_OK_2</xsl:text>
  <xsl:apply-templates
      select="../../../../parameter[3]/Parameter[1]/type[1]/XMI.reference[1]"
      mode="PR"/>
</xsl:template>

<xsl:template match="XMI.reference" mode="PR" priority="2">
  <xsl:text>
            [</xsl:text>
  <xsl:value-of select="@target"/>
  <xsl:text>]</xsl:text>
</xsl:template>

</xsl:stylesheet>


A.2 navigateParameterized.xsl.result

Apart from the query result, the script produces debugging output, which may be used to trace the path of the query processor through the document.


<XMI>
  <XMI.content>
    <Model name="untitledpackage">
      <Class name="someClass">
        <Operation name="operation">
        </Operation>
        <Operation name="operation">
            IS_OK_1
            IS_OK_2
            [S.100082]
        </Operation>
        <Operation name="operation">
        </Operation>
      </Class>
    </Model>
  </XMI.content>
</XMI>


A.3 conformsTo.xsl

Again, the id's for types involved:



Type Id
A1 S.100027
A2 S.100073
A3 S.100074
B1 S.100075
B2 S.100076
B3 S.100077
C1 S.100078
C2 S.100079
C3 S.100080



<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/XSL/Transform/1.0"
                xmlns:xt="http://www.jclark.com/xt"
                extension-element-prefixes="xt">


<xsl:template match="XMI">
  <xsl:param name="sub"  >S.100079</xsl:param>
  <xsl:param name="super">S.100074</xsl:param>
  <xsl:text>
</xsl:text>
  <XMI sub="{$sub}" super="{$super}">
    <xsl:apply-templates select="XMI.content">
      <xsl:with-param name="sub"  ><xsl:value-of select="$sub"   /></xsl:with-param>
      <xsl:with-param name="super"><xsl:value-of select="$super" /></xsl:with-param>
    </xsl:apply-templates>
    <xsl:text>
</xsl:text>
  </XMI>
</xsl:template>

<xsl:template match="XMI.content">
  <xsl:param name="sub"  >nixxsub</xsl:param>
  <xsl:param name="super">nixxsuper</xsl:param>
  <xsl:text>
  </xsl:text>
  <XMI.content sub="{$sub}" super="{$super}">
    <xsl:apply-templates select="Model">
      <xsl:with-param name="sub"  ><xsl:value-of select="$sub"   /></xsl:with-param>
      <xsl:with-param name="super"><xsl:value-of select="$super" /></xsl:with-param>
    </xsl:apply-templates>
    <xsl:text>
  </xsl:text>
  </XMI.content>
</xsl:template>

<xsl:template match="Model">
  <xsl:param name="sub"  >nixxsub</xsl:param>
  <xsl:param name="super">nixxsuper</xsl:param>
  <xsl:text>
    </xsl:text>
  <Model name="{name}" sub="{$sub}" super="{$super}">
    <xsl:apply-templates select="ownedElement">
      <xsl:with-param name="sub"  ><xsl:value-of select="$sub"   /></xsl:with-param>
      <xsl:with-param name="super"><xsl:value-of select="$super" /></xsl:with-param>
    </xsl:apply-templates>
    <xsl:text>
    </xsl:text>
  </Model>
</xsl:template>

<xsl:template match="ownedElement">
  <xsl:param name="sub"  >nixxsub</xsl:param>
  <xsl:param name="super">nixxsuper</xsl:param>
  <xsl:apply-templates select="Model|Generalization">
    <xsl:with-param name="sub"  ><xsl:value-of select="$sub"   /></xsl:with-param>
    <xsl:with-param name="super"><xsl:value-of select="$super" /></xsl:with-param>
  </xsl:apply-templates>
</xsl:template>

<xsl:template match="Generalization">
</xsl:template>

<xsl:template match="Generalization[subtype[XMI.reference[@target=$sub]]]"
    priority="2">
  <xsl:param name="sub"  >nixxsub</xsl:param>
  <xsl:param name="super">nixxsuper</xsl:param>
  <xsl:text>
      </xsl:text>
  <Generalization name="{@XMI.id}" sub="{$sub}" super="{$super}">
    <xsl:apply-templates select="supertype" mode="supertype">
      <xsl:with-param name="super"><xsl:value-of select="$super" /></xsl:with-param>
    </xsl:apply-templates>
    <xsl:text>
      </xsl:text>
  </Generalization>
</xsl:template>

<xsl:template match="supertype[XMI.reference[@target=$super]]"
    priority="2"
    mode="supertype">
  <xsl:text>
        </xsl:text>
  <supertype super="{$super}">
    <xsl:text>
          [TRUE]</xsl:text>
    <xsl:text>
        </xsl:text>
  </supertype>
</xsl:template>

<xsl:template match="supertype" mode="supertype">
  <xsl:param name="super">nixxsuper</xsl:param>
  <xsl:text>
        </xsl:text>
  <supertype super="{$super}">
    <xsl:apply-templates select="XMI.reference" mode="supertype">
      <xsl:with-param name="super"><xsl:value-of select="$super" /></xsl:with-param>
    </xsl:apply-templates>
    <xsl:text>
        </xsl:text>
  </supertype>
</xsl:template>

<xsl:template match="XMI.reference" mode="supertype">
  <xsl:param name="super">nixxsuper</xsl:param>
  <xsl:variable name="nextsub" select="@target" />
  <xsl:text>
          </xsl:text>
  <XMI.reference super="{$super}" nextsub="{$nextsub}">
    <xsl:apply-templates select="/XMI/XMI.content">
      <xsl:with-param name="sub"  ><xsl:value-of select="$nextsub" /></xsl:with-param>
      <xsl:with-param name="super"><xsl:value-of select="$super"   /></xsl:with-param>
    </xsl:apply-templates>
    <xsl:text>
          </xsl:text>
  </XMI.reference>
</xsl:template>

</xsl:stylesheet>


A.4 conformsTo.xsl.result


<XMI super="S.100074" sub="S.100079">
  <XMI.content super="S.100074" sub="S.100079">
    <Model super="S.100074" sub="S.100079" name="untitledpackage">
      <Generalization super="S.100074" sub="S.100079" name="S.100086">
        <supertype super="S.100074">
          <XMI.reference nextsub="S.100075" super="S.100074">
  <XMI.content super="S.100074" sub="S.100075">
    <Model super="S.100074" sub="S.100075" name="untitledpackage">
      <Generalization super="S.100074" sub="S.100075" name="S.100081">
        <supertype super="S.100074">
          <XMI.reference nextsub="S.100073" super="S.100074">
  <XMI.content super="S.100074" sub="S.100073">
    <Model super="S.100074" sub="S.100073" name="untitledpackage">
    </Model>
  </XMI.content>
          </XMI.reference>
        </supertype>
      </Generalization>
      <Generalization super="S.100074" sub="S.100075" name="S.100135">
        <supertype super="S.100074">
          <XMI.reference nextsub="S.100027" super="S.100074">
  <XMI.content super="S.100074" sub="S.100027">
    <Model super="S.100074" sub="S.100027" name="untitledpackage">
    </Model>
  </XMI.content>
          </XMI.reference>
        </supertype>
      </Generalization>
    </Model>
  </XMI.content>
          </XMI.reference>
        </supertype>
      </Generalization>
      <Generalization super="S.100074" sub="S.100079" name="S.100087">
        <supertype super="S.100074">
          <XMI.reference nextsub="S.100077" super="S.100074">
  <XMI.content super="S.100074" sub="S.100077">
    <Model super="S.100074" sub="S.100077" name="untitledpackage">
      <Generalization super="S.100074" sub="S.100077" name="S.100084">
        <supertype super="S.100074">
          <XMI.reference nextsub="S.100073" super="S.100074">
  <XMI.content super="S.100074" sub="S.100073">
    <Model super="S.100074" sub="S.100073" name="untitledpackage">
    </Model>
  </XMI.content>
          </XMI.reference>
        </supertype>
      </Generalization>
      <Generalization super="S.100074" sub="S.100077" name="S.100137">
        <supertype super="S.100074">
          [TRUE]
        </supertype>
      </Generalization>
    </Model>
  </XMI.content>
          </XMI.reference>
        </supertype>
      </Generalization>
      <Generalization super="S.100074" sub="S.100079" name="S.100139">
        <supertype super="S.100074">
          <XMI.reference nextsub="S.100076" super="S.100074">
  <XMI.content super="S.100074" sub="S.100076">
    <Model super="S.100074" sub="S.100076" name="untitledpackage">
      <Generalization super="S.100074" sub="S.100076" name="S.100082">
        <supertype super="S.100074">
          <XMI.reference nextsub="S.100027" super="S.100074">
  <XMI.content super="S.100074" sub="S.100027">
    <Model super="S.100074" sub="S.100027" name="untitledpackage">
    </Model>
  </XMI.content>
          </XMI.reference>
        </supertype>
      </Generalization>
      <Generalization super="S.100074" sub="S.100076" name="S.100083">
        <supertype super="S.100074">
          [TRUE]
        </supertype>
      </Generalization>
      <Generalization super="S.100074" sub="S.100076" name="S.100136">
        <supertype super="S.100074">
          <XMI.reference nextsub="S.100073" super="S.100074">
  <XMI.content super="S.100074" sub="S.100073">
    <Model super="S.100074" sub="S.100073" name="untitledpackage">
    </Model>
  </XMI.content>
          </XMI.reference>
        </supertype>
      </Generalization>
    </Model>
  </XMI.content>
          </XMI.reference>
        </supertype>
      </Generalization>
    </Model>
  </XMI.content>
</XMI>

next up previous contents
Next: List of Figures Up: Großer Beleg XML Query Previous: 6. Summary   Contents
Ralf Wiebicke 2005-11-25