1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113
|
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output encoding="utf-8"/>
<xsl:param name="dir" select="'.'"/>
<xsl:template match="/*">
<documents>
<dir name="{$dir}"/>
<xsl:apply-templates select="//testCase"/>
</documents>
</xsl:template>
<xsl:variable name="incorrectSchemaName" select="'i'"/>
<xsl:variable name="correctSchemaName" select="'c'"/>
<xsl:variable name="xmlSuffix" select="'.rng'"/>
<xsl:variable name="compactSuffix" select="'.rnc'"/>
<xsl:variable name="xsdSuffix" select="'.xsd'"/>
<xsl:variable name="xmlDir" select="'xml'"/>
<xsl:variable name="xsdDir" select="'xsd'"/>
<xsl:variable name="compactDir" select="'compact'"/>
<xsl:variable name="outDir" select="'out'"/>
<xsl:template match="testCase">
<xsl:variable name="b" select="concat($dir, '/', format-number(position(),'000'))"/>
<dir name="{$b}"/>
<dir name="{concat($b, '/', $outDir)}"/>
<xsl:apply-templates select="*">
<xsl:with-param name="base" select="$b"/>
</xsl:apply-templates>
</xsl:template>
<xsl:template match="xml//resource|xsd//resource">
<xsl:param name="base"/>
<document href="{$base}/{@name}" method="xml">
<xsl:copy-of select="node()"/>
</document>
</xsl:template>
<xsl:template match="xml//correct">
<xsl:param name="base"/>
<document href="{$base}/{$correctSchemaName}{$xmlSuffix}" method="xml">
<xsl:copy-of select="node()"/>
</document>
</xsl:template>
<xsl:template match="xsd//correct">
<xsl:param name="base"/>
<document href="{$base}/{$correctSchemaName}{$xsdSuffix}" method="xml">
<xsl:copy-of select="node()"/>
</document>
</xsl:template>
<xsl:template match="compact//incorrect">
<xsl:param name="base"/>
<document href="{$base}/{$incorrectSchemaName}{$compactSuffix}" method="text" encoding="utf-8">
<xsl:value-of select="."/>
</document>
</xsl:template>
<xsl:template match="compact//correct">
<xsl:param name="base"/>
<document href="{$base}/{$correctSchemaName}{$compactSuffix}" method="text" encoding="utf-8">
<xsl:value-of select="."/>
</document>
</xsl:template>
<xsl:template match="compact//resource">
<xsl:param name="base"/>
<document href="{$base}/{@name}" method="text" encoding="utf-8">
<xsl:value-of select="."/>
</document>
</xsl:template>
<xsl:template match="compact">
<xsl:param name="base"/>
<xsl:variable name="d" select="concat($base, '/', $compactDir)"/>
<dir name="{$d}"/>
<xsl:apply-templates select="*">
<xsl:with-param name="base" select="$d"/>
</xsl:apply-templates>
</xsl:template>
<xsl:template match="xml">
<xsl:param name="base"/>
<xsl:variable name="d" select="concat($base, '/', $xmlDir)"/>
<dir name="{$d}"/>
<xsl:apply-templates select="*">
<xsl:with-param name="base" select="$d"/>
</xsl:apply-templates>
</xsl:template>
<xsl:template match="xsd">
<xsl:param name="base"/>
<xsl:variable name="d" select="concat($base, '/', $xsdDir)"/>
<dir name="{$d}"/>
<xsl:apply-templates select="*">
<xsl:with-param name="base" select="$d"/>
</xsl:apply-templates>
</xsl:template>
<xsl:template match="dir">
<xsl:param name="base"/>
<xsl:variable name="d" select="concat($base, '/', @name)"/>
<dir name="{$d}"/>
<xsl:apply-templates select="*">
<xsl:with-param name="base" select="$d"/>
</xsl:apply-templates>
</xsl:template>
</xsl:stylesheet>
|