-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Asger Askov Blekinge
committed
May 14, 2012
1 parent
66b4175
commit ec94b60
Showing
11 changed files
with
5,316 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,75 @@ | ||
<?xml version="1.0" encoding="UTF-8"?> | ||
<!-- | ||
Stylesheet for extracting Schematron information from a RELAX-NG schema. | ||
Based on the stylesheet for extracting Schematron information from W3C XML Schema. | ||
Created by Eddie Robertsson 2002/06/01 | ||
Update for ISO Schematron Rick Jelliffe 2010/04/14 | ||
--> | ||
<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" | ||
xmlns:sch="http://purl.oclc.org/dsdl/schematron" xmlns:rng="http://relaxng.org/ns/structure/1.0"> | ||
<!-- Set the output to be XML with an XML declaration and use indentation --> | ||
<xsl:output method="xml" omit-xml-declaration="no" indent="yes" standalone="yes"/> | ||
<!-- --> | ||
<!-- match schema and call recursive template to extract included schemas --> | ||
<!-- --> | ||
<xsl:template match="/rng:grammar | /rng:element"> | ||
<!-- call the schema definition template ... --> | ||
<xsl:call-template name="gatherSchema"> | ||
<!-- ... with current node as the $schemas parameter ... --> | ||
<xsl:with-param name="schemas" select="."/> | ||
<!-- ... and any includes in the $include parameter --> | ||
<xsl:with-param name="includes" select="document(/rng:grammar/rng:include/@href | ||
| //rng:externalRef/@href)"/> | ||
</xsl:call-template> | ||
</xsl:template> | ||
<!-- --> | ||
<!-- gather all included schemas into a single parameter variable --> | ||
<!-- --> | ||
<xsl:template name="gatherSchema"> | ||
<xsl:param name="schemas"/> | ||
<xsl:param name="includes"/> | ||
<xsl:choose> | ||
<xsl:when test="count($schemas) < count($schemas | $includes)"> | ||
<!-- when $includes includes something new, recurse ... --> | ||
<xsl:call-template name="gatherSchema"> | ||
<!-- ... with current $includes added to the $schemas parameter ... --> | ||
<xsl:with-param name="schemas" select="$schemas | $includes"/> | ||
<!-- ... and any *new* includes in the $include parameter --> | ||
<xsl:with-param name="includes" select="document($includes/rng:grammar/rng:include/@href | ||
| $includes//rng:externalRef/@href)"/> | ||
</xsl:call-template> | ||
</xsl:when> | ||
<xsl:otherwise> | ||
<!-- we have the complete set of included schemas, so now let's output the embedded schematron --> | ||
<xsl:call-template name="output"> | ||
<xsl:with-param name="schemas" select="$schemas"/> | ||
</xsl:call-template> | ||
</xsl:otherwise> | ||
</xsl:choose> | ||
</xsl:template> | ||
<!-- --> | ||
<!-- output the schematron information --> | ||
<!-- --> | ||
<xsl:template name="output"> | ||
<xsl:param name="schemas"/> | ||
<!-- --> | ||
<sch:schema> | ||
<!-- get header-type elements - eg title and especially ns --> | ||
<!-- title (just one) --> | ||
<xsl:copy-of select="$schemas//sch:title[1]"/> | ||
<!-- get remaining schematron schema children --> | ||
<!-- get non-blank namespace elements, dropping duplicates --> | ||
<xsl:for-each select="$schemas//sch:ns"> | ||
<xsl:if test="generate-id(.) = generate-id($schemas//sch:ns[@prefix = current()/@prefix][1])"> | ||
<xsl:copy-of select="."/> | ||
</xsl:if> | ||
</xsl:for-each> | ||
<xsl:copy-of select="$schemas//sch:phase"/> | ||
<xsl:copy-of select="$schemas//sch:pattern"/> | ||
<sch:diagnostics> | ||
<xsl:copy-of select="$schemas//sch:diagnostics/*"/> | ||
</sch:diagnostics> | ||
</sch:schema> | ||
</xsl:template> | ||
<!-- --> | ||
</xsl:transform> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,77 @@ | ||
<?xml version="1.0" encoding="UTF-8"?> | ||
<!-- | ||
based on an original transform by Eddie Robertsson | ||
2001/04/21 fn: added support for included schemas | ||
2001/06/27 er: changed XMl Schema prefix from xsd: to xs: and changed to the Rec namespace | ||
2010/04/14 rj: Update for ISO Schematron | ||
--> | ||
<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" | ||
xmlns:sch="http://purl.oclc.org/dsdl/schematron" xmlns:xs="http://www.w3.org/2001/XMLSchema"> | ||
<!-- Set the output to be XML with an XML declaration and use indentation --> | ||
<xsl:output method="xml" omit-xml-declaration="no" indent="yes" standalone="yes"/> | ||
<!-- --> | ||
<!-- match schema and call recursive template to extract included schemas --> | ||
<!-- --> | ||
<xsl:template match="xs:schema"> | ||
<!-- call the schema definition template ... --> | ||
<xsl:call-template name="gatherSchema"> | ||
<!-- ... with current current root as the $schemas parameter ... --> | ||
<xsl:with-param name="schemas" select="/"/> | ||
<!-- ... and any includes in the $include parameter --> | ||
<xsl:with-param name="includes" | ||
select="document(/xs:schema/xs:*[self::xs:include or self::xs:import or self::xs:redefine]/@schemaLocation)"/> | ||
</xsl:call-template> | ||
</xsl:template> | ||
<!-- --> | ||
<!-- gather all included schemas into a single parameter variable --> | ||
<!-- --> | ||
<xsl:template name="gatherSchema"> | ||
<xsl:param name="schemas"/> | ||
<xsl:param name="includes"/> | ||
<xsl:choose> | ||
<xsl:when test="count($schemas) < count($schemas | $includes)"> | ||
<!-- when $includes includes something new, recurse ... --> | ||
<xsl:call-template name="gatherSchema"> | ||
<!-- ... with current $includes added to the $schemas parameter ... --> | ||
<xsl:with-param name="schemas" select="$schemas | $includes"/> | ||
<!-- ... and any *new* includes in the $include parameter --> | ||
<xsl:with-param name="includes" | ||
select="document($includes/xs:schema/xs:*[self::xs:include or self::xs:import or self::xs:redefine]/@schemaLocation)"/> | ||
</xsl:call-template> | ||
</xsl:when> | ||
<xsl:otherwise> | ||
<!-- we have the complete set of included schemas, | ||
so now let's output the embedded schematron --> | ||
<xsl:call-template name="output"> | ||
<xsl:with-param name="schemas" select="$schemas"/> | ||
</xsl:call-template> | ||
</xsl:otherwise> | ||
</xsl:choose> | ||
</xsl:template> | ||
<!-- --> | ||
<!-- output the schematron information --> | ||
<!-- --> | ||
<xsl:template name="output"> | ||
<xsl:param name="schemas"/> | ||
<!-- --> | ||
<sch:schema> | ||
<!-- get header-type elements - eg title and especially ns --> | ||
<!-- title (just one) --> | ||
<xsl:copy-of select="$schemas//xs:appinfo/sch:title[1]"/> | ||
<!-- get remaining schematron schema children --> | ||
<!-- get non-blank namespace elements, dropping duplicates --> | ||
<xsl:for-each select="$schemas//xs:appinfo/sch:ns"> | ||
<xsl:if test="generate-id(.) = | ||
generate-id($schemas//xs:appinfo/sch:ns[@prefix = current()/@prefix][1])"> | ||
<xsl:copy-of select="."/> | ||
</xsl:if> | ||
</xsl:for-each> | ||
<xsl:copy-of select="$schemas//xs:appinfo/sch:phase"/> | ||
<xsl:copy-of select="$schemas//xs:appinfo/sch:pattern"/> | ||
<sch:diagnostics> | ||
<xsl:copy-of select="$schemas//xs:appinfo/sch:diagnostics/*"/> | ||
</sch:diagnostics> | ||
</sch:schema> | ||
</xsl:template> | ||
<!-- --> | ||
</xsl:transform> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
Open Source (OSI compliant zlib/libpng license or Apache License) | ||
|
||
http://www.schematron.com/implementation.html |
Oops, something went wrong.