Imported Upstream version 2.9.1
[platform/upstream/libxml2.git] / xstc / xstc-to-python.xsl
1 <?xml version="1.0" encoding="UTF-8" ?>\r
2 <xsl:stylesheet \r
3         xmlns:xsl="http://www.w3.org/1999/XSL/Transform"\r
4         xmlns:ts="TestSuite" version="1.0"\r
5         xmlns:xl="http://www.w3.org/1999/xlink">\r
6         <xsl:param name="vendor" select="'NIST'"/>\r
7     <xsl:output method="text"/>   \r
8 \r
9     <xsl:template match="/">\r
10         <xsl:text>#!/usr/bin/python -u\r
11 # -*- coding: UTF-8 -*-\r
12 #\r
13 # This file is generated from the W3C test suite description file.\r
14 #\r
15 \r
16 import xstc\r
17 from xstc import XSTCTestRunner, XSTCTestGroup, XSTCSchemaTest, XSTCInstanceTest\r
18 \r
19 xstc.vendor = "</xsl:text><xsl:value-of select="$vendor"/><xsl:text>"\r
20 \r
21 r = XSTCTestRunner()\r
22 \r
23 # Group definitions.\r
24                                  \r
25 </xsl:text>\r
26                       \r
27         <xsl:apply-templates select="ts:testSet/ts:testGroup" mode="group-def"/>\r
28 <xsl:text>\r
29 \r
30 # Test definitions.\r
31 \r
32 </xsl:text>\r
33                 <xsl:apply-templates select="ts:testSet/ts:testGroup" mode="test-def"/>\r
34         <xsl:text>\r
35            \r
36 r.run()    \r
37 \r
38 </xsl:text>\r
39             \r
40     </xsl:template>       \r
41 \r
42         <!-- groupName, descr -->\r
43     <xsl:template match="ts:testGroup" mode="group-def">\r
44                 <xsl:text>r.addGroup(XSTCTestGroup("</xsl:text>\r
45                 <!-- group -->\r
46                 <xsl:value-of select="@name"/><xsl:text>", "</xsl:text>\r
47                 <!-- main schema -->\r
48                 <xsl:value-of select="ts:schemaTest[1]/ts:schemaDocument/@xl:href"/><xsl:text>", """</xsl:text>\r
49                 <!-- group-description -->\r
50                 <xsl:call-template name="str">\r
51                         <xsl:with-param name="str" select="ts:annotation/ts:documentation/text()"/>\r
52                 </xsl:call-template>\r
53                 <xsl:text>"""))\r
54 </xsl:text>\r
55         </xsl:template>\r
56         \r
57         <xsl:template name="str">\r
58                 <xsl:param name="str"/>\r
59                 <xsl:choose>\r
60                         <xsl:when test="contains($str, '&quot;')">\r
61                                 <xsl:call-template name="str">\r
62                                         <xsl:with-param name="str" select="substring-before($str, '&quot;')"/>\r
63                                 </xsl:call-template>\r
64                                 <xsl:text>'</xsl:text>\r
65                                 <xsl:call-template name="str">\r
66                                         <xsl:with-param name="str" select="substring-after($str, '&quot;')"/>\r
67                                 </xsl:call-template>\r
68                         \r
69                         </xsl:when>\r
70                         <xsl:otherwise>\r
71                                 <xsl:value-of select="$str"/>\r
72                         </xsl:otherwise>\r
73                 </xsl:choose>\r
74         </xsl:template>\r
75 \r
76         <xsl:template match="ts:testGroup" mode="test-def">         \r
77                 <xsl:param name="group" select="@name"/>\r
78                 <xsl:for-each select="ts:schemaTest">\r
79                         <!-- groupName, isSchema, Name, Accepted, File, Val, Descr -->\r
80                         <xsl:text>r.addTest(XSTCSchemaTest("</xsl:text>\r
81                         <!-- group -->\r
82                         <xsl:value-of select="$group"/><xsl:text>", "</xsl:text>\r
83                         <!-- test-name -->\r
84                         <xsl:value-of select="@name"/><xsl:text>", </xsl:text>\r
85                         <!-- accepted -->\r
86                         <xsl:value-of select="number(ts:current/@status = 'accepted')"/><xsl:text>, "</xsl:text>\r
87                         <!-- filename -->                       \r
88                         <xsl:value-of select="ts:schemaDocument/@xl:href"/><xsl:text>", </xsl:text>\r
89                         <!-- validity -->\r
90                         <xsl:value-of select="number(ts:expected/@validity = 'valid')"/><xsl:text>, "</xsl:text>\r
91                         <!-- test-description -->\r
92                         <xsl:value-of select="ts:annotation/ts:documentation/text()"/><xsl:text>"))\r
93 </xsl:text>\r
94                 </xsl:for-each>\r
95                 <xsl:for-each select="ts:instanceTest">\r
96                         <!-- groupName, isSchema, Name, Accepted, File, Val, Descr -->\r
97                         <xsl:text>r.addTest(XSTCInstanceTest("</xsl:text>\r
98                         <!-- group -->\r
99                         <xsl:value-of select="$group"/><xsl:text>", "</xsl:text>\r
100                         <!-- test-name -->\r
101                         <xsl:value-of select="@name"/><xsl:text>", </xsl:text>\r
102                         <!-- accepted -->\r
103                         <xsl:value-of select="number(ts:current/@status = 'accepted')"/><xsl:text>, "</xsl:text>\r
104                         <!-- filename -->                       \r
105                         <xsl:value-of select="ts:instanceDocument/@xl:href"/><xsl:text>", </xsl:text>\r
106                         <!-- validity -->\r
107                         <xsl:value-of select="number(ts:expected/@validity = 'valid')"/><xsl:text>, "</xsl:text>\r
108                         <!-- test-description -->\r
109                         <xsl:value-of select="ts:annotation/ts:documentation/text()"/><xsl:text>"))\r
110 </xsl:text>\r
111                 </xsl:for-each>\r
112         </xsl:template>                     \r
113         \r
114 </xsl:stylesheet>