Project

General

Profile

« Previous | Next » 

Revision 10418

Added by Bryce Mecum about 7 years ago

Major touchup work in ISO XSL

- Fixes numerous bugs involving ISO's bizarre use of nilReasons
- Fixes numerous bugs involving differences between the ISO workbook
and the schema
- Adds support for Polygons

View differences:

lib/style/skins/metacatui/iso19115/iso-ci.xsl
6 6
    <!-- CI_ResponsibleParty -->
7 7
    <xsl:template match="gmd:CI_ResponsibleParty">
8 8
        <div class="controls-well">
9
            <xsl:if test="./gmd:individualName">
9
            <xsl:if test="./gmd:individualName and normalize-space(./gmd:individualName/gco:CharacterString/text())!=''">
10 10
                <div class="control-group">
11 11
                    <label class="control-label">Individual</label>
12 12
                    <div class="controls">
......
16 16
                    </div>
17 17
                </div>
18 18
            </xsl:if>
19
            <xsl:if test="./gmd:organisationName">
19
            <xsl:if test="./gmd:organisationName and normalize-space(./gmd:organisationName/gco:CharacterString/text())!=''">
20 20
                <div class="control-group">
21 21
                    <label class="control-label">Organization</label>
22 22
                    <div class="controls">
......
26 26
                    </div>
27 27
                </div>
28 28
            </xsl:if>
29
            <xsl:if test="./gmd:positionName">
29
            <xsl:if test="./gmd:positionName and normalize-space(./gmd:positionName/gco:CharacterString/text())!=''">
30 30
                <div class="control-group">
31 31
                    <label class="control-label">Position</label>
32 32
                    <div class="controls">
......
36 36
                    </div>
37 37
                </div>
38 38
            </xsl:if>
39
            <xsl:if test="./gmd:role and normalize-space(./gmd:role/gmd:CI_RoleCode/text())!=''">
40
                <div class="control-group">
41
                    <label class="control-label">Role</label>
42
                    <div class="controls">
43
                        <div class="controls-well">
44
                            <xsl:apply-templates select="./gmd:role" />
45
                        </div>
46
                    </div>
47
                </div>
48
            </xsl:if>
39 49
            <xsl:if test="./gmd:contactInfo/gmd:CI_Contact/gmd:phone">
40 50
                <div class="control-group">
41 51
                    <label class="control-label">Phone</label>
......
86 96
                    </div>
87 97
                </div>
88 98
            </xsl:if>
89
            <xsl:if test="./gmd:role">
90
                <div class="control-group">
91
                    <label class="control-label">Role</label>
92
                    <div class="controls">
93
                        <div class="controls-well">
94
                            <xsl:apply-templates select="./gmd:role" />
95
                        </div>
96
                    </div>
97
                </div>
98
            </xsl:if>
99 99
        </div>
100 100
    </xsl:template>
101 101
    <xsl:template match="gmd:CI_RoleCode">
lib/style/skins/metacatui/iso19115/iso-ex.xsl
3 3
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
4 4
    xmlns:gmd="http://www.isotc211.org/2005/gmd" 
5 5
    xmlns:gco="http://www.isotc211.org/2005/gco" 
6
    xmlns:gml="http://www.opengis.net/gml/3.2" version="1.0">
6
    xmlns:gml="http://www.opengis.net/gml/3.2" 
7
    xmlns:xlink="http://www.w3.org/1999/xlink" version="1.0">
7 8
    <xsl:template match="gmd:EX_Extent">
8 9
        <h4>Coverage</h4>
9 10
        <!-- description -->
......
12 13
                <label class="control-label">Description</label>
13 14
                <div class="controls">
14 15
                    <div class="controls-well">
15
                        <xsl:apply-templates />
16
                        <xsl:apply-templates select=".//gmd:description" />
16 17
                    </div>
17 18
                </div>
18 19
            </div>
19 20
        </xsl:if>
20 21
        <!-- Geographic -->
21 22
        <xsl:for-each select=".//gmd:geographicElement">
22
            <div class="row-fluid geographicCoverage">
23
            <!--  Dynamically add the geographicCoverage class depending on 
24
            whether this is a bounding box or not because Google Static Maps are
25
             shown if the class is set but the current MetacatUI codebase only 
26
             supports rectangular bounding boxes and not geometries like 
27
             polygons.
28
             -->
29

  
30
            <xsl:element name="div">
31
                <xsl:choose>
32
                    <xsl:when test=".//gmd:EX_GeographicBoundingBox">
33
                        <xsl:attribute name="class">row-fluid geographicCoverage</xsl:attribute>
34
                    </xsl:when>
35
                    <xsl:otherwise>
36
                        <xsl:attribute name="class">row-fluid</xsl:attribute>
37
                    </xsl:otherwise>
38
                </xsl:choose>
39

  
23 40
                <div class="control-group">
24 41
                    <label class="control-label">Geographic</label>
25 42
                    <div class="controls">
......
28 45
                        </div>
29 46
                    </div>
30 47
                </div>
31
            </div>
48
            </xsl:element>
32 49
        </xsl:for-each>
33 50
        <!-- Temporal -->
34 51
        <xsl:for-each select=".//gmd:temporalElement">
......
130 147
        <xsl:apply-templates select=".//gmd:extent/*" />
131 148
    </xsl:template>
132 149
    <!-- EX_VerticalExtent-->
133
    <!-- TODO: Improve DOM structure -->
134
    <!-- TODO: Flesh this out a bit more... -->
135 150
    <xsl:template match="gmd:EX_VerticalExtent">
136
        <span>minimumValue:             
151
        <div class="control-group">
152
            <label class="control-label">Minimum</label>
153
            <div class="controls">
154
                <div class="controls-well">
137 155
            <xsl:value-of select="./gmd:minimumValue/gco:Real" />
138
        </span>
139
        <span>maximumValue:             
156
                </div>
157
            </div>
158
        </div>
159

  
160
        <div class="control-group">
161
            <label class="control-label">Maximum</label>
162
            <div class="controls">
163
                <div class="controls-well">
140 164
            <xsl:value-of select="./gmd:maximumValue/gco:Real" />
141
        </span>
142
        <span>verticalCRS:             
143
            <xsl:value-of select="./gmd:verticalCRS" />
144
        </span>
165
                </div>
166
            </div>
167
        </div>
168

  
169
        <div class="control-group">
170
            <label class="control-label">CRS</label>
171
            <div class="controls">
172
                <div class="controls-well">
173
                    <xsl:apply-templates select="./gmd:verticalCRS" />
174
                </div>
175
            </div>
176
        </div>
145 177
    </xsl:template>
178

  
146 179
    <!-- TimeInstant-->
147 180
    <!-- TODO
148 181
        - Attributes: frame, calendarEraName, indeterminatePosition
lib/style/skins/metacatui/iso19115/iso-gmd.xsl
1 1
<?xml version="1.0"?>
2 2
<xsl:stylesheet 
3 3
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
4
    xmlns:gmd="http://www.isotc211.org/2005/gmd" 
4
    xmlns:gmd="http://www.isotc211.org/2005/gmd"
5
    xmlns:gco="http://www.isotc211.org/2005/gco"
5 6
    xmlns:xlink="http://www.w3.org/1999/xlink" version="1.0">
6 7
    <xsl:template match="gmd:URL">
7 8
        <xsl:variable name="url">
......
47 48
    <xsl:template match="gmd:thesaurusName">
48 49
        <xsl:value-of select="./gmd:CI_Citation/gmd:title" />
49 50
    </xsl:template>
51

  
52
    <!-- gmd:code -->
53
    <xsl:template match="gmd:code">
54
        <xsl:variable name="code">
55
            <xsl:value-of select="./gco:CharacterString/text()" />
56
        </xsl:variable>
57
   
58
        <xsl:choose>
59
            <xsl:when test="starts-with($code, 'http://')">
60
                <xsl:element name="a">
61
                    <xsl:attribute name="href">
62
                        <xsl:value-of select="$code" />
63
                    </xsl:attribute>
64
                    <xsl:value-of select="$code" />
65
                </xsl:element>
66
            </xsl:when>
67
            <xsl:otherwise>
68
                <xsl:value-of select="$code" />
69
            </xsl:otherwise>
70
        </xsl:choose>
71
    </xsl:template>
72

  
73
    <!-- gmd:verticalCRS -->
74
    <xsl:template match="gmd:verticalCRS">
75
        <xsl:choose>
76
            <xsl:when test="./@xlink:href and ./@xlink:title">
77
                <xsl:element name="a">
78
                    <xsl:attribute name="href"><xsl:value-of select="./@xlink:href" /></xsl:attribute>
79
                    <xsl:value-of select="./@xlink:title" />
80
                </xsl:element>
81
            </xsl:when>
82
            <xsl:otherwise>See metadata record for full CRS information.</xsl:otherwise>
83
        </xsl:choose>
84
    </xsl:template>
50 85
</xsl:stylesheet>
lib/style/skins/metacatui/iso19115/iso-gml.xsl
7 7
        <!-- TODO -->
8 8
    </xsl:template>
9 9

  
10
    <!-- 
11
    gml:Polygon
12
    This is a very incomplete template for showing gml:Polygons 
13
    -->
10 14
    <xsl:template match="gml:Polygon">
11
        <!-- TODO -->
15
        <xsl:variable name="coordinates">
16
            <xsl:value-of select="./gml:exterior/gml:LinearRing/gml:coordinates/@decimal" />
17
        </xsl:variable>
18

  
19
        <xsl:element name="div">
20
            <xsl:attribute name="class">control-group coordinates</xsl:attribute>
21
            <xsl:attribute name="data-content">coordinates</xsl:attribute>
22
            <xsl:attribute name="data-value"><xsl:value-of select="$coordinates" /></xsl:attribute>
23

  
24
            <label class="control-label">Coordinates</label>
25
            <div class="controls">
26
                <div class="controls-well">
27
                    <xsl:choose>
28
                        <xsl:when test="$coordinates and normalize-space($coordinates)!=''">
29
                            <xsl:value-of select="$coordinates" />                    
30
                        </xsl:when>
31
                        <xsl:otherwise>
32
                            Polygon display not supported by this display. Please see full metadata record for polygon information.
33
                        </xsl:otherwise>
34
                    </xsl:choose>
35
                </div>
36
            </div>
37
        </xsl:element>
12 38
    </xsl:template>
13 39

  
14 40
    <xsl:template match="gml:interior">
lib/style/skins/metacatui/iso19115/iso-md.xsl
5 5
    <xsl:template match="gmd:MD_Identifier">
6 6
        <xsl:apply-templates select="./gmd:code" />
7 7
    </xsl:template>
8
    <xsl:template match="gmd:RS_Identifier">
9
        <xsl:apply-templates select="./gmd:code" />
10
    </xsl:template>
8 11
    <xsl:template match="gmd:MD_TopicCategoryCode">
9 12
        <xsl:apply-templates />
10 13
    </xsl:template>
lib/style/skins/metacatui/iso19115/isoroot.xsl
16 16
            <div class="control-group entity">
17 17
                <h4>General</h4>
18 18
                <!-- fileIdentifier 0:1 -->
19
                <xsl:if test="./gmd:fileIdentifier">
19
                <xsl:if test="./gmd:fileIdentifier and normalize-space(./gmd:fileIdentifier/text())!=''">
20 20
                    <div class="control-group">
21 21
                        <label class="control-label">File Identifier</label>
22 22
                        <div class="controls">
......
29 29
                <!-- TODO: language 0:1 -->
30 30
                <!-- TODO: characterSet 0:1 -->
31 31
                <!-- Parent Identifier 0:1 -->
32
                <xsl:if test="./gmd:parentIdentifier">
32
                <xsl:if test="./gmd:parentIdentifier and normalize-space(./gmd:parentIdentifier/text())!=''">
33 33
                    <div class="control-group">
34 34
                        <label class="control-label">Parent Identifier</label>
35 35
                        <div class="controls">
......
44 44
                <!-- Alternate identifier(s) 0:∞-->
45 45
                <!-- gmd:identifier is an optional part of the CI_Citation element -->
46 46
                <xsl:for-each select="./gmd:identificationInfo/gmd:MD_DataIdentification/gmd:citation/gmd:CI_Citation/gmd:identifier">
47
                    <div class="control-group">
48
                        <label class="control-label">Cited Identifier</label>
49
                        <div class="controls">
50
                            <div class="controls-well">
51
                                <xsl:apply-templates />
47
                    <xsl:if test="normalize-space(.//gmd:code/gco:CharacterString/text())!=''">
48
                        <div class="control-group">
49
                            <label class="control-label">Cited Identifier</label>
50
                            <div class="controls">
51
                                <div class="controls-well">
52
                                    <xsl:variable name="code">
53
                                        <xsl:value-of select=".//gmd:code/gco:CharacterString/text()" />
54
                                    </xsl:variable>
55
                            
56
                                    <xsl:choose>
57
                                        <xsl:when test="starts-with($code, 'http')">
58
                                            <xsl:element name="a">
59
                                                <xsl:attribute name="href">
60
                                                    <xsl:value-of select="$code" />
61
                                                </xsl:attribute>
62
                                                <xsl:value-of select="$code" />
63
                                            </xsl:element>
64
                                        </xsl:when>
65
                                        <xsl:otherwise>
66
                                            <xsl:value-of select="$code" />
67
                                        </xsl:otherwise>
68
                                    </xsl:choose>
69
                                </div>
52 70
                            </div>
53 71
                        </div>
54
                    </div>
72
                    </xsl:if>
55 73
                </xsl:for-each>
74
                
56 75
                <!-- Abstract 0:∞  Only shown if the abstract has content -->
57 76
                <xsl:for-each select="./gmd:identificationInfo/gmd:MD_DataIdentification/gmd:abstract">
58 77
                    <xsl:if test="normalize-space(./gco:CharacterString/text()) != ''">
......
178 197
                </div>
179 198
                <!-- Cited responsible parties-->
180 199
                <div class="control-group">
181
                    <label class="control-label">Associated Parties</label>
200
                    <label class="control-label">Responsible Parties</label>
182 201
                    <div class="controls">
183 202
                        <div class="controls-well">
184 203
                            <xsl:apply-templates select="./gmd:identificationInfo/gmd:MD_DataIdentification/gmd:citation/gmd:CI_Citation/gmd:citedResponsibleParty" />

Also available in: Unified diff