1 | <?xml version="1.0" ?>
|
---|
2 | <!--
|
---|
3 | Schematron Text-only Report - iso_schematron_text.xsl
|
---|
4 |
|
---|
5 | Implementation of Schematron validation that reports in text only, optionally with paths in
|
---|
6 | a prefix form.
|
---|
7 |
|
---|
8 | This ISO Standard is available free as a Publicly Available Specification in PDF from ISO.
|
---|
9 | Also see www.schematron.com for drafts and other information.
|
---|
10 |
|
---|
11 | This implementation of text is designed to run with the "Skeleton" implementation
|
---|
12 | of Schematron which Oliver Becker devised. The skeleton code provides a
|
---|
13 | Schematron implementation but with named templates for handling all output;
|
---|
14 | the skeleton provides basic templates for output using this API, but client
|
---|
15 | validators can be written to import the skeleton and override the default output
|
---|
16 | templates as required. (In order to understand this, you must understand that
|
---|
17 | a named template such as "process-assert" in this XSLT stylesheet overrides and
|
---|
18 | replaces any template with the same name in the imported skeleton XSLT file.)
|
---|
19 |
|
---|
20 | History:
|
---|
21 | 2007-02-09:
|
---|
22 | * GKH Repair documentation regarding termination
|
---|
23 | * GKH Take advantage of new stylesheetbody mode to set the output
|
---|
24 | method to be text
|
---|
25 | 2007-02-08:
|
---|
26 | * RJ Add optimize parameter and update to use get-schematron-full-path-2
|
---|
27 | * RJ Add command-line parameter to select between the two path types
|
---|
28 | * RJ Validate against RNC schemas for XSLT 1 and 2 (with regex tests removed)
|
---|
29 | 2007-02-07:
|
---|
30 | * GKH created from iso-schematron_terminator.xsl
|
---|
31 | 2007-01-19:
|
---|
32 | * RJ Created from iso_svrl.xslt base
|
---|
33 |
|
---|
34 | -->
|
---|
35 | <!--
|
---|
36 | Copyright (c) 2007 Rick Jelliffe
|
---|
37 |
|
---|
38 | This software is provided 'as-is', without any express or implied warranty.
|
---|
39 | In no event will the authors be held liable for any damages arising from
|
---|
40 | the use of this software.
|
---|
41 |
|
---|
42 | Permission is granted to anyone to use this software for any purpose,
|
---|
43 | including commercial applications, and to alter it and redistribute it freely,
|
---|
44 | subject to the following restrictions:
|
---|
45 |
|
---|
46 | 1. The origin of this software must not be misrepresented; you must not claim
|
---|
47 | that you wrote the original software. If you use this software in a product,
|
---|
48 | an acknowledgment in the product documentation would be appreciated but is
|
---|
49 | not required.
|
---|
50 |
|
---|
51 | 2. Altered source versions must be plainly marked as such, and must not be
|
---|
52 | misrepresented as being the original software.
|
---|
53 |
|
---|
54 | 3. This notice may not be removed or altered from any source distribution.
|
---|
55 | -->
|
---|
56 |
|
---|
57 |
|
---|
58 | <!-- The command-line parameters are:
|
---|
59 | phase NMTOKEN | "#ALL" (default) Select the phase for validation
|
---|
60 | diagnose=true|false Add the diagnostics to the assertion test in reports
|
---|
61 | generate-paths=true|false suffix messages with ":" and the Xpath
|
---|
62 | path-format=1|2 Which built-in path display method to use. 1 is for computers. 2 is for humans.
|
---|
63 | message-newline=true|false add an extra newline to the end of the message
|
---|
64 | sch.exslt.imports semi-colon delimited string of filenames for some EXSLT implementations
|
---|
65 | optimize "visit-no-attributes" Use only when the schema has no attributes as the context nodes
|
---|
66 |
|
---|
67 | -->
|
---|
68 |
|
---|
69 | <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
---|
70 | xmlns:axsl="http://www.w3.org/1999/XSL/TransformAlias"
|
---|
71 | xmlns:sch="http://www.ascc.net/xml/schematron"
|
---|
72 | xmlns:iso="http://purl.oclc.org/dsdl/schematron">
|
---|
73 | <!-- Select the import statement and adjust the path as
|
---|
74 | necessary for your system.
|
---|
75 | -->
|
---|
76 | <xsl:import href="iso_schematron_skeleton.xsl"/>
|
---|
77 | <!--
|
---|
78 | <xsl:import href="skeleton1-5.xsl"/>
|
---|
79 | <xsl:import href="skeleton1-6.xsl"/> -->
|
---|
80 | <xsl:param name="diagnose">yes</xsl:param>
|
---|
81 | <xsl:param name="phase">
|
---|
82 | <xsl:choose>
|
---|
83 | <!-- Handle Schematron 1.5 and 1.6 phases -->
|
---|
84 | <xsl:when test="//sch:schema/@defaultPhase">
|
---|
85 | <xsl:value-of select="//sch:schema/@defaultPhase"/>
|
---|
86 | </xsl:when>
|
---|
87 | <!-- Handle ISO Schematron phases -->
|
---|
88 | <xsl:when test="//iso:schema/@defaultPhase">
|
---|
89 | <xsl:value-of select="//iso:schema/@defaultPhase"/>
|
---|
90 | </xsl:when>
|
---|
91 | <xsl:otherwise>#ALL</xsl:otherwise>
|
---|
92 | </xsl:choose>
|
---|
93 | </xsl:param>
|
---|
94 | <xsl:param name="generate-paths">true</xsl:param>
|
---|
95 | <xsl:param name="path-format">1</xsl:param>
|
---|
96 | <xsl:param name="message-newline">true</xsl:param>
|
---|
97 | <xsl:param name="optimize" />
|
---|
98 | <!-- e.g. saxon file.xml file.xsl "sch.exslt.imports=.../string.xsl;.../math.xsl" -->
|
---|
99 | <xsl:param name="sch.exslt.imports"/>
|
---|
100 |
|
---|
101 | <xsl:template match="node()" mode="stylesheetbody">
|
---|
102 | <xsl:comment>Importing stylesheet additions</xsl:comment>
|
---|
103 | <axsl:output method="text"/>
|
---|
104 | <!--create the remainder of the stylesheet-->
|
---|
105 | <xsl:apply-imports/>
|
---|
106 | </xsl:template>
|
---|
107 |
|
---|
108 | <!-- default output action: output all messages in simple text -->
|
---|
109 | <xsl:template name="process-message">
|
---|
110 | <xsl:apply-templates mode="text"/>
|
---|
111 | <xsl:choose>
|
---|
112 | <xsl:when test=" $generate-paths = 'true' and $path-format = '2' ">
|
---|
113 | <axsl:text>: </axsl:text>
|
---|
114 | <axsl:apply-templates select="." mode="schematron-get-full-path-2" />
|
---|
115 | </xsl:when>
|
---|
116 | <xsl:when test=" $generate-paths = 'true' ">
|
---|
117 | <axsl:text>: </axsl:text>
|
---|
118 | <axsl:apply-templates select="." mode="schematron-get-full-path" />
|
---|
119 | </xsl:when>
|
---|
120 | </xsl:choose>
|
---|
121 | <xsl:if test=" $message-newline = 'true'" >
|
---|
122 | <axsl:value-of select="string(' ')"/>
|
---|
123 | </xsl:if>
|
---|
124 | </xsl:template>
|
---|
125 | </xsl:stylesheet>
|
---|
126 |
|
---|