2005-01-31 Zoltan Varga <vargaz@freemail.hu>
[mono.git] / mcs / class / Commons.Xml.Relaxng / Test / standalone_tests / prep.xsl
1 <?xml version="1.0"?>
2 <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
3
4 <xsl:output encoding="utf-8"/>
5
6 <xsl:param name="dir" select="'.'"/>
7
8 <xsl:template match="testSuite">
9   <documents>
10     <xsl:apply-templates select="//testCase"/>
11   </documents>
12 </xsl:template>
13
14 <xsl:variable name="incorrectSchemaName" select="'i.rng'"/>
15 <xsl:variable name="correctSchemaName" select="'c.rng'"/>
16 <xsl:variable name="invalidInstanceSuffix" select="'.i.xml'"/>
17 <xsl:variable name="validInstanceSuffix" select="'.v.xml'"/>
18
19 <xsl:template match="testCase">
20   <xsl:variable name="b" select="concat($dir, '/', format-number(position(),'000'))"/>
21   <dir name="{$b}"/>
22   <xsl:variable name="f">
23     <xsl:choose>
24       <xsl:when test="correct">
25         <xsl:value-of select="$correctSchemaName"/>
26       </xsl:when>
27       <xsl:otherwise>
28         <xsl:value-of select="$incorrectSchemaName"/>
29       </xsl:otherwise>
30     </xsl:choose>
31   </xsl:variable>
32   <document href="{concat($b, '/', $f)}" method="xml">
33     <xsl:for-each select="correct|incorrect">
34       <xsl:call-template name="copy"/>
35     </xsl:for-each>
36   </document>
37   <xsl:apply-templates select="resource|dir">
38     <xsl:with-param name="base" select="$b"/>
39   </xsl:apply-templates>
40   <!-- Don't combine so that position is correct. -->
41   <xsl:apply-templates select="valid|invalid">
42     <xsl:with-param name="base" select="$b"/>
43   </xsl:apply-templates>
44 </xsl:template>
45
46 <xsl:template match="valid">
47   <xsl:param name="base"/>
48   <xsl:variable name="d" select="concat($base, '/', position(), $validInstanceSuffix)"/>
49   <document href="{$d}" method="xml">
50     <xsl:call-template name="copy"/>
51   </document>
52 </xsl:template>
53
54 <xsl:template match="invalid">
55   <xsl:param name="base"/>
56   <xsl:variable name="d" select="concat($base, '/', position(), $invalidInstanceSuffix)"/>
57   <document href="{$d}" method="xml">
58     <xsl:call-template name="copy"/>
59   </document>
60 </xsl:template>
61
62 <xsl:template match="resource">
63   <xsl:param name="base"/>
64   <xsl:choose>
65     <xsl:when test="*">
66       <document href="{$base}/{@name}" method="xml">
67         <xsl:call-template name="copy"/>
68       </document>
69     </xsl:when>
70     <xsl:otherwise>
71       <document href="{$base}/{@name}" method="text" encoding="utf-8">
72         <xsl:value-of select="."/>
73       </document>
74     </xsl:otherwise>
75   </xsl:choose>
76 </xsl:template>
77
78 <xsl:template name="copy">
79   <xsl:copy-of select="@dtd|node()"/>
80 </xsl:template>
81
82 <xsl:template match="dir">
83   <xsl:param name="base"/>
84   <xsl:variable name="d" select="concat($base, '/', @name)"/>
85   <dir name="{$d}"/>
86   <xsl:apply-templates select="resource|dir">
87     <xsl:with-param name="base" select="$d"/>
88   </xsl:apply-templates>
89 </xsl:template>
90
91 </xsl:stylesheet>