Mercurial > repos > shellac > sam_consensus_v3
comparison env/lib/python3.9/site-packages/lxml/isoschematron/resources/xsl/RNG2Schtrn.xsl @ 0:4f3585e2f14b draft default tip
"planemo upload commit 60cee0fc7c0cda8592644e1aad72851dec82c959"
author | shellac |
---|---|
date | Mon, 22 Mar 2021 18:12:50 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:4f3585e2f14b |
---|---|
1 <?xml version="1.0" encoding="UTF-8"?> | |
2 <!-- | |
3 Stylesheet for extracting Schematron information from a RELAX-NG schema. | |
4 Based on the stylesheet for extracting Schematron information from W3C XML Schema. | |
5 Created by Eddie Robertsson 2002/06/01 | |
6 2009/12/10 hj: changed Schematron namespace to ISO URI (Holger Joukl) | |
7 --> | |
8 <xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" | |
9 xmlns:sch="http://purl.oclc.org/dsdl/schematron" xmlns:rng="http://relaxng.org/ns/structure/1.0"> | |
10 <!-- Set the output to be XML with an XML declaration and use indentation --> | |
11 <xsl:output method="xml" omit-xml-declaration="no" indent="yes" standalone="yes"/> | |
12 <!-- --> | |
13 <!-- match schema and call recursive template to extract included schemas --> | |
14 <!-- --> | |
15 <xsl:template match="/rng:grammar | /rng:element"> | |
16 <!-- call the schema definition template ... --> | |
17 <xsl:call-template name="gatherSchema"> | |
18 <!-- ... with current node as the $schemas parameter ... --> | |
19 <xsl:with-param name="schemas" select="."/> | |
20 <!-- ... and any includes in the $include parameter --> | |
21 <xsl:with-param name="includes" select="document(/rng:grammar/rng:include/@href | |
22 | //rng:externalRef/@href)"/> | |
23 </xsl:call-template> | |
24 </xsl:template> | |
25 <!-- --> | |
26 <!-- gather all included schemas into a single parameter variable --> | |
27 <!-- --> | |
28 <xsl:template name="gatherSchema"> | |
29 <xsl:param name="schemas"/> | |
30 <xsl:param name="includes"/> | |
31 <xsl:choose> | |
32 <xsl:when test="count($schemas) < count($schemas | $includes)"> | |
33 <!-- when $includes includes something new, recurse ... --> | |
34 <xsl:call-template name="gatherSchema"> | |
35 <!-- ... with current $includes added to the $schemas parameter ... --> | |
36 <xsl:with-param name="schemas" select="$schemas | $includes"/> | |
37 <!-- ... and any *new* includes in the $include parameter --> | |
38 <xsl:with-param name="includes" select="document($includes/rng:grammar/rng:include/@href | |
39 | $includes//rng:externalRef/@href)"/> | |
40 </xsl:call-template> | |
41 </xsl:when> | |
42 <xsl:otherwise> | |
43 <!-- we have the complete set of included schemas, so now let's output the embedded schematron --> | |
44 <xsl:call-template name="output"> | |
45 <xsl:with-param name="schemas" select="$schemas"/> | |
46 </xsl:call-template> | |
47 </xsl:otherwise> | |
48 </xsl:choose> | |
49 </xsl:template> | |
50 <!-- --> | |
51 <!-- output the schematron information --> | |
52 <!-- --> | |
53 <xsl:template name="output"> | |
54 <xsl:param name="schemas"/> | |
55 <!-- --> | |
56 <sch:schema> | |
57 <!-- get header-type elements - eg title and especially ns --> | |
58 <!-- title (just one) --> | |
59 <xsl:copy-of select="$schemas//sch:title[1]"/> | |
60 <!-- get remaining schematron schema children --> | |
61 <!-- get non-blank namespace elements, dropping duplicates --> | |
62 <xsl:for-each select="$schemas//sch:ns"> | |
63 <xsl:if test="generate-id(.) = generate-id($schemas//sch:ns[@prefix = current()/@prefix][1])"> | |
64 <xsl:copy-of select="."/> | |
65 </xsl:if> | |
66 </xsl:for-each> | |
67 <xsl:copy-of select="$schemas//sch:phase"/> | |
68 <xsl:copy-of select="$schemas//sch:pattern"/> | |
69 <sch:diagnostics> | |
70 <xsl:copy-of select="$schemas//sch:diagnostics/*"/> | |
71 </sch:diagnostics> | |
72 </sch:schema> | |
73 </xsl:template> | |
74 <!-- --> | |
75 </xsl:transform> |