source: metadata/trunk/toolkit/src/main/resources/toolkit/downgrade/cmd-component-1_2-to-1_1.xsl @ 6904

Last change on this file since 6904 was 6904, checked in by Menzo Windhouwer, 9 years ago

M toolkit/src/test/java/eu/clarin/cmd/toolkit/TestCMDToolkit.java

  • added downgrade tests

M toolkit/src/main/resources/toolkit/xsd/cmd-component.xsd

  • readded a_res Schematron rule to warn that @ref and @ComponentId? wont survive a downgrade to 1.1

M toolkit/src/main/resources/toolkit/downgrade/cmd-component-1_2-to-1_1.xsl

  • fixes around Attributes
File size: 4.6 KB
Line 
1<?xml version="1.0" encoding="UTF-8"?>
2<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
3    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4    xmlns:xs="http://www.w3.org/2001/XMLSchema"
5    xmlns:cue="http://www.clarin.eu/cmdi/cues/1"
6    exclude-result-prefixes="xs"
7    version="2.0">
8
9    <xsl:param name="cmd-component-xsd" select="'http://infra.clarin.eu/cmd/general-component-schema.xsd'"/>
10   
11    <!-- identity copy -->
12    <xsl:template match="@*">
13        <xsl:copy/>
14    </xsl:template>
15   
16    <xsl:template match="node()">
17        <xsl:copy>
18            <xsl:apply-templates select="@*|node()"/>
19        </xsl:copy>
20    </xsl:template>
21
22    <!-- refer to cmd-component.xsd -->
23    <xsl:template match="@xsi:noNamespaceSchemaLocation" priority="1">
24        <xsl:attribute name="xsi:noNamespaceSchemaLocation" select="$cmd-component-xsd"/>
25    </xsl:template>
26
27    <!-- add CMD_ prefix -->
28    <xsl:template match="ComponentSpec" priority="1">
29        <CMD_ComponentSpec>
30            <xsl:apply-templates select="@*|node()"/>
31        </CMD_ComponentSpec>
32    </xsl:template>
33
34    <xsl:template match="Component" priority="1">
35        <CMD_Component>
36            <xsl:apply-templates select="@*|node()"/>
37        </CMD_Component>
38    </xsl:template>
39   
40    <xsl:template match="Element" priority="1">
41        <CMD_Element>
42            <xsl:apply-templates select="@*"/>
43            <xsl:apply-templates select="Documentation"/>
44            <xsl:apply-templates select="node() except Documentation"/>
45        </CMD_Element>
46    </xsl:template>
47   
48    <!-- remove Status and friends -->
49    <xsl:template match="Header/Status" priority="1"/>
50    <xsl:template match="Header/StatusComment" priority="1"/>
51    <xsl:template match="Header/Successor" priority="1"/>
52   
53    <!-- turn <Documentation/> into @Documentation -->
54    <xsl:template match="Documentation" priority="1">
55        <xsl:choose>
56            <xsl:when test="exists(../Documentation[@xml:lang=('en','eng')])">
57                <xsl:if test="@xml:lang=('en','eng') and empty(preceding-sibling::Documentation[@xml:lang=('en','eng')])">
58                    <!-- first english documentation -->
59                    <xsl:attribute name="Documentation" select="."/>
60                </xsl:if>
61            </xsl:when>
62            <xsl:when test="exists(../Documentation[normalize-space(@xml:lang)=''])">
63                <xsl:if test="normalize-space(@xml:lang)='' and empty(preceding-sibling::Documentation[normalize-space(@xml:lang)=''])">
64                    <!-- first general documentation -->
65                    <xsl:attribute name="Documentation" select="."/>
66                </xsl:if>
67            </xsl:when>
68            <xsl:when test="empty(preceding-sibling::Documentation)">
69                <!-- first documentation -->
70                <xsl:attribute name="Documentation" select="."/>
71            </xsl:when>
72        </xsl:choose>
73    </xsl:template>
74
75    <!-- remove Vocabulary level, incl. attributes -->
76    <xsl:template match="Vocabulary" priority="1">
77        <xsl:apply-templates select="node()"/>
78    </xsl:template>
79   
80    <!-- turn Attribute child elements into attributes -->
81    <xsl:template match="Attribute" priority="1">
82        <xsl:choose>
83            <xsl:when test="exists(parent::AttributeList/parent::Component) and Name=('ref','ComponentId')">
84                <xsl:message>WRN: user-defined ref and ComponentId attributes for a Component are not supported by CMDI 1.1!</xsl:message>
85            </xsl:when>
86            <xsl:otherwise>
87                <Attribute>
88                    <Name>
89                        <xsl:value-of select="@name"/>
90                    </Name>
91                    <xsl:if test="normalize-space(@ConceptLink)!=''">
92                        <ConceptLink>
93                            <xsl:value-of select="@ConceptLink"/>
94                        </ConceptLink>
95                    </xsl:if>
96                    <xsl:if test="normalize-space(@ValueScheme)!=''">
97                        <Type>
98                            <xsl:value-of select="@ValueScheme"/>
99                        </Type>
100                    </xsl:if>
101                    <!-- @Required is skipped -->
102                    <xsl:apply-templates select="node()"/>
103                </Attribute>
104            </xsl:otherwise>
105        </xsl:choose>
106    </xsl:template>
107   
108    <!-- remove cue namespace for DisplayPriority -->
109    <xsl:template match="@cue:DisplayPriority" priority="2">
110        <xsl:attribute name="DisplayPriority">
111            <xsl:value-of select="."/>
112        </xsl:attribute>
113    </xsl:template>
114   
115    <!-- remove other cue attributes -->
116    <xsl:template match="@cue:*" priority="1"/>
117
118</xsl:stylesheet>
Note: See TracBrowser for help on using the repository browser.