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