This project addresses the need of creating a base template of xsl:template elements. For each element in the schema, this XSL reads the title (a schematron element) and the elements children and creates a definition list for each element.
For instance, the element:
<xsd:element name="abstract" type="abstractType">
<xsd:annotation>
<xsd:documentation>
Element: Abstract
Section: 1.2.1
Description: a brief narrative summary of the data set.
</xsd:documentation>
<xsd:appinfo>
<sch:title>Abstract</sch:title>
</xsd:appinfo>
</xsd:annotation>
</xsd:element>
<xsl:template match="abstract"><DT>Abstract:</DT><xsl:call-template name="abstractType_type"/></xsl:template>
<xsd:simpleType name="abstractType">
<xsd:annotation>
<xsd:documentation>
Type: text
Domain: free text
</xsd:documentation>
</xsd:annotation>
<xsd:restriction base="FGDCstring"/>
</xsd:simpleType>
<xsl:template name="abstractType_type"><DD><xsl:value-of select="normalize-space(.)"/></DD></xsl:template>
<xsd:simpleType name="FGDCstring">
<xsd:annotation>
<xsd:documentation>This type is for use with free text fields and restricts "xsd:string" to disallow empty or whitespace-only values.</xsd:documentation>
</xsd:annotation>
<xsd:restriction base="xsd:string">
<xsd:pattern value="\s*\S(.|\n|\r)*"/>
</xsd:restriction>
</xsd:simpleType>
<xsl:template name="FGDCstring_type"><DD><xsl:value-of select="normalize-space(.)"/></DD></xsl:template>
One can override any template elements in the main XSL stylesheet.