riddl 0.99.246 → 0.99.248
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/examples/declaration-server-distributed/properties.xml +1 -0
- data/examples/declaration-server-distributed/xsls/test/properties.xsl +1 -0
- data/examples/declaration-server-hybrid/properties.xml +1 -0
- data/examples/declaration-server-local/properties.xml +1 -0
- data/examples/downloadify/downloadify.xml +1 -0
- data/examples/flickr/Exif/riddl.jpg +1 -0
- data/examples/flickr/Flickr/riddl.png +1 -0
- data/examples/flickr/riddl.jpg +1 -0
- data/examples/helloworld/declaration-definition_goal.xml +0 -4
- data/examples/notifications/producer.main.xml +1 -0
- data/examples/properties/properties.xml +1 -0
- data/examples/twitter/client.rb +7 -7
- data/examples/xmpp/properties.xml +1 -0
- data/lib/ruby/riddl/client.rb +10 -8
- data/lib/ruby/riddl/roles/http%3A%2F%2Foauth.net%2F1.0/base.rb +2 -2
- data/lib/ruby/riddl/server.rb +2 -1
- data/lib/ruby/riddl/wrapper.rb +18 -18
- data/lib/ruby/riddl/wrapper/declaration.rb +10 -10
- data/lib/ruby/riddl/wrapper/declaration/facade.rb +1 -2
- data/lib/ruby/riddl/wrapper/declaration/tile.rb +4 -4
- data/lib/ruby/riddl/wrapper/description.rb +6 -6
- data/lib/ruby/riddl/wrapper/description/access.rb +7 -6
- data/lib/ruby/riddl/wrapper/layerchecker.rb +2 -2
- data/lib/ruby/riddl/wrapper/resourcechecker.rb +6 -6
- data/riddl.gemspec +3 -3
- data/tools/riddlcheck +1 -0
- data/tools/riddlprocess +1 -0
- metadata +6 -7
- data/examples/declaration-server-distributed/properties.xml +0 -150
- data/examples/declaration-server-distributed/xsls/test/properties.xsl +0 -185
- data/examples/declaration-server-hybrid/properties.xml +0 -150
- data/examples/declaration-server-local/properties.xml +0 -150
- data/examples/downloadify/downloadify.xml +0 -18
- data/examples/flickr/Exif/riddl.jpg +0 -0
- data/examples/flickr/Flickr/riddl.png +0 -0
- data/examples/flickr/riddl.jpg +0 -0
- data/examples/library/server-9292.pid +0 -1
- data/examples/notifications/producer.main.xml +0 -206
- data/examples/properties/properties.xml +0 -150
- data/examples/xmpp/properties.xml +0 -150
- data/tools/riddlcheck +0 -36
- data/tools/riddlprocess +0 -51
@@ -12,8 +12,8 @@ module Riddl
|
|
12
12
|
def check_layers(res)
|
13
13
|
#{{{
|
14
14
|
messages = []
|
15
|
-
res.each do |
|
16
|
-
messages += check_field(
|
15
|
+
res.each do |tres|
|
16
|
+
messages += check_field(tres.attributes['name'],tres.parent.attributes['relative'] || '/')
|
17
17
|
end
|
18
18
|
messages
|
19
19
|
#}}}
|
@@ -12,17 +12,17 @@ module Riddl
|
|
12
12
|
def check_rec_resources(res,path='')
|
13
13
|
#{{{
|
14
14
|
messages = []
|
15
|
-
res.each do |
|
15
|
+
res.each do |tres|
|
16
16
|
tpath = if path == ''
|
17
17
|
'/'
|
18
18
|
else
|
19
|
-
|
19
|
+
tres.attributes['relative'].nil? ? path + '{}/' : path + tres.attributes['relative'] + '/'
|
20
20
|
end
|
21
21
|
|
22
22
|
h_ifield = {}; h_pfield = {}
|
23
23
|
h_ofield = {}; h_tfield = {}
|
24
24
|
h_cfield = {}
|
25
|
-
|
25
|
+
tres.find("des:get|des:put|des:delete|des:post|des:request").each do |mt|
|
26
26
|
mn = (mt.attributes['type'].nil? ? mt.qname.to_s : mt.attributes['type'])
|
27
27
|
|
28
28
|
h_ifield[mn] ||= {}; h_pfield[mn] ||= {}
|
@@ -51,14 +51,14 @@ module Riddl
|
|
51
51
|
end
|
52
52
|
h_ofield.each do |mn,ofield|
|
53
53
|
messages += check_fields(ofield,"#{tpath} -> #{mn}","out","message")
|
54
|
-
end
|
54
|
+
end
|
55
55
|
h_tfield.each do |mn,tfield|
|
56
56
|
messages += check_fields(tfield,"#{tpath} -> #{mn}","transformation","transformation")
|
57
|
-
end
|
57
|
+
end
|
58
58
|
h_cfield.each do |mn,cfield|
|
59
59
|
messages << "#{tpath} -> #{mn}: more than one catchall (*) operation is not allowed." if cfield > 1
|
60
60
|
end
|
61
|
-
messages += check_rec_resources(
|
61
|
+
messages += check_rec_resources(tres.find("des:resource"),tpath)
|
62
62
|
end
|
63
63
|
messages
|
64
64
|
#}}}
|
data/riddl.gemspec
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = "riddl"
|
3
|
-
s.version = "0.99.
|
3
|
+
s.version = "0.99.248"
|
4
4
|
s.platform = Gem::Platform::RUBY
|
5
|
-
s.license = "LGPL-3"
|
5
|
+
s.license = "LGPL-3.0"
|
6
6
|
s.summary = "restful interface description and declaration language: tools and client/server libs"
|
7
7
|
|
8
8
|
s.description = "rest service interface definition, mixing, and evolution. supports mixed http and xmpp servers."
|
@@ -32,7 +32,7 @@ Gem::Specification.new do |s|
|
|
32
32
|
s.add_runtime_dependency 'em-websocket-client', '>= 0.1', '~>0'
|
33
33
|
s.add_runtime_dependency 'mime-types', '>= 2.4', '~>2'
|
34
34
|
s.add_runtime_dependency 'minitest', '>= 5.0.0', '~>5'
|
35
|
-
s.add_runtime_dependency 'blather', '~>1'
|
35
|
+
s.add_runtime_dependency 'blather', '~>1.1'
|
36
36
|
s.add_runtime_dependency 'charlock_holmes', '>= 0.7', '~>0'
|
37
37
|
s.add_runtime_dependency 'redis', '>= 3.3.0', '~>3.3'
|
38
38
|
end
|
data/tools/riddlcheck
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
riddlcheck-1_0
|
data/tools/riddlprocess
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
riddlprocess-1_0
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: riddl
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.99.
|
4
|
+
version: 0.99.248
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Juergen 'eTM' Mangler
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: tools
|
12
12
|
cert_chain: []
|
13
|
-
date: 2016-08-
|
13
|
+
date: 2016-08-09 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: xml-smart
|
@@ -186,14 +186,14 @@ dependencies:
|
|
186
186
|
requirements:
|
187
187
|
- - "~>"
|
188
188
|
- !ruby/object:Gem::Version
|
189
|
-
version: '1'
|
189
|
+
version: '1.1'
|
190
190
|
type: :runtime
|
191
191
|
prerelease: false
|
192
192
|
version_requirements: !ruby/object:Gem::Requirement
|
193
193
|
requirements:
|
194
194
|
- - "~>"
|
195
195
|
- !ruby/object:Gem::Version
|
196
|
-
version: '1'
|
196
|
+
version: '1.1'
|
197
197
|
- !ruby/object:Gem::Dependency
|
198
198
|
name: charlock_holmes
|
199
199
|
requirement: !ruby/object:Gem::Requirement
|
@@ -359,7 +359,6 @@ files:
|
|
359
359
|
- examples/library/rngs/list-of-books.rng
|
360
360
|
- examples/library/rngs/list-of-customers.rng
|
361
361
|
- examples/library/rngs/list-of-loans.rng
|
362
|
-
- examples/library/server-9292.pid
|
363
362
|
- examples/library/server.rb
|
364
363
|
- examples/library/static/info.txt
|
365
364
|
- examples/notifications/implementation/index.html
|
@@ -513,7 +512,7 @@ files:
|
|
513
512
|
- tools/riddlprocess-1_0
|
514
513
|
homepage: http://www.wst.univie.ac.at/communities/riddl/
|
515
514
|
licenses:
|
516
|
-
- LGPL-3
|
515
|
+
- LGPL-3.0
|
517
516
|
metadata: {}
|
518
517
|
post_install_message:
|
519
518
|
rdoc_options: []
|
@@ -531,7 +530,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
531
530
|
version: '0'
|
532
531
|
requirements: []
|
533
532
|
rubyforge_project:
|
534
|
-
rubygems_version: 2.
|
533
|
+
rubygems_version: 2.5.1
|
535
534
|
signing_key:
|
536
535
|
specification_version: 4
|
537
536
|
summary: 'restful interface description and declaration language: tools and client/server
|
@@ -1,150 +0,0 @@
|
|
1
|
-
<description datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes" xmlns="http://riddl.org/ns/description/1.0" xmlns:xi="http://www.w3.org/2001/XInclude">
|
2
|
-
|
3
|
-
<message name="value">
|
4
|
-
<choice>
|
5
|
-
<parameter name="value" mimetype="text/xml" handler="http://riddl.org/ns/handlers/relaxng">
|
6
|
-
<grammar xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes" ns="http://riddl.org/ns/common-patterns/properties/1.0">
|
7
|
-
<start>
|
8
|
-
<choice>
|
9
|
-
<element name="value">
|
10
|
-
<ref name="value"/>
|
11
|
-
</element>
|
12
|
-
<element name="not-existing">
|
13
|
-
<empty/>
|
14
|
-
</element>
|
15
|
-
</choice>
|
16
|
-
</start>
|
17
|
-
|
18
|
-
<define name="value">
|
19
|
-
<zeroOrMore>
|
20
|
-
<choice>
|
21
|
-
<text/>
|
22
|
-
<ref name="any"/>
|
23
|
-
</choice>
|
24
|
-
</zeroOrMore>
|
25
|
-
</define>
|
26
|
-
|
27
|
-
<define name="any">
|
28
|
-
<element>
|
29
|
-
<anyName/>
|
30
|
-
<zeroOrMore>
|
31
|
-
<attribute>
|
32
|
-
<anyName/>
|
33
|
-
</attribute>
|
34
|
-
</zeroOrMore>
|
35
|
-
<ref name="value"/>
|
36
|
-
</element>
|
37
|
-
</define>
|
38
|
-
|
39
|
-
</grammar>
|
40
|
-
</parameter>
|
41
|
-
<parameter name="value" type="string"/>
|
42
|
-
|
43
|
-
<parameter name="content" mimetype="text/xml"/>
|
44
|
-
<parameter name="content" mimetype="text/plain"/>
|
45
|
-
</choice>
|
46
|
-
</message>
|
47
|
-
|
48
|
-
<message name="resource-document">
|
49
|
-
<parameter name="document" mimetype="text/xml"/>
|
50
|
-
</message>
|
51
|
-
<message name="resource-document-schema">
|
52
|
-
<parameter name="document-schema" mimetype="text/xml"/>
|
53
|
-
</message>
|
54
|
-
|
55
|
-
<message name="properties">
|
56
|
-
<oneOrMore>
|
57
|
-
<parameter name="name" type="string"/>
|
58
|
-
<choice>
|
59
|
-
<parameter name="value" type="string"/>
|
60
|
-
<parameter name="value" mimetype="text/plain"/>
|
61
|
-
<parameter name="content" mimetype="text/xml"/> <!-- add everything inside the root tag -->
|
62
|
-
<parameter name="content" type="string"/> <!-- add everything inside the root tag -->
|
63
|
-
</choice>
|
64
|
-
</oneOrMore>
|
65
|
-
</message>
|
66
|
-
|
67
|
-
<message name="propertylist">
|
68
|
-
<parameter name="properties" mimetype="text/xml" handler="http://riddl.org/ns/handlers/relaxng">
|
69
|
-
<grammar xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes" ns="http://riddl.org/ns/common-patterns/properties/1.0">
|
70
|
-
<start>
|
71
|
-
<element name="properties">
|
72
|
-
<zeroOrMore>
|
73
|
-
<ref name="property"/>
|
74
|
-
</zeroOrMore>
|
75
|
-
</element>
|
76
|
-
</start>
|
77
|
-
|
78
|
-
<define name="property">
|
79
|
-
<element>
|
80
|
-
<anyName/>
|
81
|
-
<data type="string"/>
|
82
|
-
</element>
|
83
|
-
</define>
|
84
|
-
|
85
|
-
</grammar>
|
86
|
-
</parameter>
|
87
|
-
</message>
|
88
|
-
<message name="addcontent">
|
89
|
-
<choice>
|
90
|
-
<parameter name="value" type="string"/>
|
91
|
-
<parameter name="value" mimetype="text/xml"/>
|
92
|
-
</choice>
|
93
|
-
</message>
|
94
|
-
<message name="updcontent">
|
95
|
-
<choice>
|
96
|
-
<parameter name="value" type="string"/>
|
97
|
-
<parameter name="value" mimetype="text/plain"/>
|
98
|
-
<parameter name="content" mimetype="text/xml"/> <!-- add everything inside the root tag -->
|
99
|
-
<parameter name="content" type="string"/> <!-- add everything inside the root tag -->
|
100
|
-
</choice>
|
101
|
-
</message>
|
102
|
-
<message name="property">
|
103
|
-
<parameter name="name" type="string">
|
104
|
-
<param name="pattern">[a-zA-Z_][a-zA-Z0-9_]*</param>
|
105
|
-
</parameter>
|
106
|
-
<choice>
|
107
|
-
<parameter name="value" type="string"/>
|
108
|
-
<parameter name="value" mimetype="text/plain"/>
|
109
|
-
<parameter name="content" mimetype="text/xml"/> <!-- add everything inside the root tag -->
|
110
|
-
<parameter name="content" type="string"/> <!-- add everything inside the root tag -->
|
111
|
-
</choice>
|
112
|
-
</message>
|
113
|
-
<message name="query">
|
114
|
-
<parameter name="query" type="string"/>
|
115
|
-
</message>
|
116
|
-
|
117
|
-
<resource pattern="http://riddl.org/ns/common-patterns/properties/1.0">
|
118
|
-
<get in="*" out="resource-document"/>
|
119
|
-
<get in="query" out="value"/>
|
120
|
-
<resource relative="schema">
|
121
|
-
<get in="*" out="resource-document-schema"/>
|
122
|
-
<resource relative="rng">
|
123
|
-
<get in="*" out="resource-document-schema"/>
|
124
|
-
</resource>
|
125
|
-
<resource relative="xsd">
|
126
|
-
<get in="*" out="resource-document-schema"/>
|
127
|
-
</resource>
|
128
|
-
</resource>
|
129
|
-
<resource relative="values">
|
130
|
-
<get in="*" out="propertylist"/>
|
131
|
-
<post in="property"/>
|
132
|
-
<put in="properties"/>
|
133
|
-
<resource>
|
134
|
-
<get in="*" out="value"/>
|
135
|
-
<delete in="*"/>
|
136
|
-
<post in="addcontent"/>
|
137
|
-
<put in="updcontent"/>
|
138
|
-
<resource>
|
139
|
-
<get in="*" out="value"/>
|
140
|
-
<put in="updcontent"/>
|
141
|
-
<delete in="*"/>
|
142
|
-
<resource recursive='true'>
|
143
|
-
<get in="*" out="value"/>
|
144
|
-
</resource>
|
145
|
-
</resource>
|
146
|
-
</resource>
|
147
|
-
</resource>
|
148
|
-
</resource>
|
149
|
-
|
150
|
-
</description>
|
@@ -1,185 +0,0 @@
|
|
1
|
-
<!DOCTYPE html>
|
2
|
-
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
|
3
|
-
<xsl:output method="html" doctype-public="XSLT-compat"/>
|
4
|
-
<xsl:template match="*">
|
5
|
-
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
6
|
-
<head>
|
7
|
-
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
8
|
-
<title>Further Explore the Notifications</title>
|
9
|
-
</head>
|
10
|
-
<body>
|
11
|
-
<h1>Navigation </h1>
|
12
|
-
<ul>
|
13
|
-
<li><a href='schema/'>Schema</a></li>
|
14
|
-
<li><a href='values/'>Values</a></li>
|
15
|
-
</ul>
|
16
|
-
<h1>RAW</h1>
|
17
|
-
<pre>
|
18
|
-
<xsl:apply-templates select="node()" mode="XmlEscape"/>
|
19
|
-
</pre>
|
20
|
-
</body>
|
21
|
-
</html>
|
22
|
-
</xsl:template>
|
23
|
-
|
24
|
-
<xsl:param name="NL" select="'
'" /><!-- newline sequence -->
|
25
|
-
<xsl:param name="INDENTSEQ" select="'  '" /><!-- indent sequence -->
|
26
|
-
|
27
|
-
<xsl:variable name="LT" select="'<'" />
|
28
|
-
<xsl:variable name="GT" select="'>'" />
|
29
|
-
|
30
|
-
<xsl:template match="transform-me">
|
31
|
-
<html>
|
32
|
-
<body>
|
33
|
-
<!-- this XML-escapes an entire sub-structure -->
|
34
|
-
<pre><xsl:apply-templates select="*" mode="XmlEscape" /></pre>
|
35
|
-
</body>
|
36
|
-
</html>
|
37
|
-
</xsl:template>
|
38
|
-
|
39
|
-
<!-- element nodes will be handled here, incl. proper indenting -->
|
40
|
-
<xsl:template match="*" mode="XmlEscape">
|
41
|
-
<xsl:param name="indent" select="''" />
|
42
|
-
|
43
|
-
<xsl:value-of select="concat($indent, $LT, name())" />
|
44
|
-
<xsl:apply-templates select="@*" mode="XmlEscape" />
|
45
|
-
|
46
|
-
<xsl:variable name="HasChildNode" select="node()[not(self::text())]" />
|
47
|
-
<xsl:variable name="HasChildText" select="text()[normalize-space()]" />
|
48
|
-
<xsl:choose>
|
49
|
-
<xsl:when test="$HasChildNode or $HasChildText">
|
50
|
-
<xsl:value-of select="$GT" />
|
51
|
-
<xsl:if test="not($HasChildText)">
|
52
|
-
<xsl:value-of select="$NL" />
|
53
|
-
</xsl:if>
|
54
|
-
<!-- render child nodes -->
|
55
|
-
<xsl:apply-templates mode="XmlEscape" select="node()">
|
56
|
-
<xsl:with-param name="indent" select="concat($INDENTSEQ, $indent)" />
|
57
|
-
</xsl:apply-templates>
|
58
|
-
<xsl:if test="not($HasChildText)">
|
59
|
-
<xsl:value-of select="$indent" />
|
60
|
-
</xsl:if>
|
61
|
-
<xsl:value-of select="concat($LT, '/', name(), $GT, $NL)" />
|
62
|
-
</xsl:when>
|
63
|
-
<xsl:otherwise>
|
64
|
-
<xsl:value-of select="concat(' /', $GT, $NL)" />
|
65
|
-
</xsl:otherwise>
|
66
|
-
</xsl:choose>
|
67
|
-
</xsl:template>
|
68
|
-
|
69
|
-
<!-- comments will be handled here -->
|
70
|
-
<xsl:template match="comment()" mode="XmlEscape">
|
71
|
-
<xsl:param name="indent" select="''" />
|
72
|
-
<xsl:value-of select="concat($indent, $LT, '!--', ., '--', $GT, $NL)" />
|
73
|
-
</xsl:template>
|
74
|
-
|
75
|
-
<!-- text nodes will be printed XML-escaped -->
|
76
|
-
<xsl:template match="text()" mode="XmlEscape">
|
77
|
-
<xsl:if test="not(normalize-space() = '')">
|
78
|
-
<xsl:call-template name="XmlEscapeString">
|
79
|
-
<xsl:with-param name="s" select="." />
|
80
|
-
<xsl:with-param name="IsAttribute" select="false()" />
|
81
|
-
</xsl:call-template>
|
82
|
-
</xsl:if>
|
83
|
-
</xsl:template>
|
84
|
-
|
85
|
-
<!-- attributes become a string: '{name()}="{escaped-value()}"' -->
|
86
|
-
<xsl:template match="@*" mode="XmlEscape">
|
87
|
-
<xsl:value-of select="concat(' ', name(), '="')" />
|
88
|
-
<xsl:call-template name="XmlEscapeString">
|
89
|
-
<xsl:with-param name="s" select="." />
|
90
|
-
<xsl:with-param name="IsAttribute" select="true()" />
|
91
|
-
</xsl:call-template>
|
92
|
-
<xsl:value-of select="'"'" />
|
93
|
-
</xsl:template>
|
94
|
-
|
95
|
-
<!-- template to XML-escape a string -->
|
96
|
-
<xsl:template name="XmlEscapeString">
|
97
|
-
<xsl:param name="s" select="''" />
|
98
|
-
<xsl:param name="IsAttribute" select="false()" />
|
99
|
-
<!-- chars &, < and > are never allowed -->
|
100
|
-
<xsl:variable name="step1">
|
101
|
-
<xsl:call-template name="StringReplace">
|
102
|
-
<xsl:with-param name="s" select="$s" />
|
103
|
-
<xsl:with-param name="search" select="'&'" />
|
104
|
-
<xsl:with-param name="replace" select="'&amp;'" />
|
105
|
-
</xsl:call-template>
|
106
|
-
</xsl:variable>
|
107
|
-
<xsl:variable name="step2">
|
108
|
-
<xsl:call-template name="StringReplace">
|
109
|
-
<xsl:with-param name="s" select="$step1" />
|
110
|
-
<xsl:with-param name="search" select="'<'" />
|
111
|
-
<xsl:with-param name="replace" select="'&lt;'" />
|
112
|
-
</xsl:call-template>
|
113
|
-
</xsl:variable>
|
114
|
-
<xsl:variable name="step3">
|
115
|
-
<xsl:call-template name="StringReplace">
|
116
|
-
<xsl:with-param name="s" select="$step2" />
|
117
|
-
<xsl:with-param name="search" select="'>'" />
|
118
|
-
<xsl:with-param name="replace" select="'&lt;'" />
|
119
|
-
</xsl:call-template>
|
120
|
-
</xsl:variable>
|
121
|
-
<!-- chars ", TAB, CR and LF are never allowed in attributes -->
|
122
|
-
<xsl:choose>
|
123
|
-
<xsl:when test="$IsAttribute">
|
124
|
-
<xsl:variable name="step4">
|
125
|
-
<xsl:call-template name="StringReplace">
|
126
|
-
<xsl:with-param name="s" select="$step3" />
|
127
|
-
<xsl:with-param name="search" select="'"'" />
|
128
|
-
<xsl:with-param name="replace" select="'&quot;'" />
|
129
|
-
</xsl:call-template>
|
130
|
-
</xsl:variable>
|
131
|
-
<xsl:variable name="step5">
|
132
|
-
<xsl:call-template name="StringReplace">
|
133
|
-
<xsl:with-param name="s" select="$step4" />
|
134
|
-
<xsl:with-param name="search" select="'	'" />
|
135
|
-
<xsl:with-param name="replace" select="'&#x9;'" />
|
136
|
-
</xsl:call-template>
|
137
|
-
</xsl:variable>
|
138
|
-
<xsl:variable name="step6">
|
139
|
-
<xsl:call-template name="StringReplace">
|
140
|
-
<xsl:with-param name="s" select="$step5" />
|
141
|
-
<xsl:with-param name="search" select="'
'" />
|
142
|
-
<xsl:with-param name="replace" select="'&#xD;'" />
|
143
|
-
</xsl:call-template>
|
144
|
-
</xsl:variable>
|
145
|
-
<xsl:variable name="step7">
|
146
|
-
<xsl:call-template name="StringReplace">
|
147
|
-
<xsl:with-param name="s" select="$step6" />
|
148
|
-
<xsl:with-param name="search" select="'
'" />
|
149
|
-
<xsl:with-param name="replace" select="'&#xD;'" />
|
150
|
-
</xsl:call-template>
|
151
|
-
</xsl:variable>
|
152
|
-
<xsl:value-of select="$step7" />
|
153
|
-
</xsl:when>
|
154
|
-
<xsl:otherwise>
|
155
|
-
<xsl:value-of select="$step3" />
|
156
|
-
</xsl:otherwise>
|
157
|
-
</xsl:choose>
|
158
|
-
</xsl:template>
|
159
|
-
|
160
|
-
<!-- generic string replace template -->
|
161
|
-
<xsl:template name="StringReplace">
|
162
|
-
<xsl:param name="s" select="''" />
|
163
|
-
<xsl:param name="search" select="''" />
|
164
|
-
<xsl:param name="replace" select="''" />
|
165
|
-
|
166
|
-
<xsl:choose>
|
167
|
-
<xsl:when test="contains($s, $search)">
|
168
|
-
<xsl:value-of select="substring-before($s, $search)" />
|
169
|
-
<xsl:value-of select="$replace" />
|
170
|
-
<xsl:variable name="rest" select="substring-after($s, $search)" />
|
171
|
-
<xsl:if test="$rest">
|
172
|
-
<xsl:call-template name="StringReplace">
|
173
|
-
<xsl:with-param name="s" select="$rest" />
|
174
|
-
<xsl:with-param name="search" select="$search" />
|
175
|
-
<xsl:with-param name="replace" select="$replace" />
|
176
|
-
</xsl:call-template>
|
177
|
-
</xsl:if>
|
178
|
-
</xsl:when>
|
179
|
-
<xsl:otherwise>
|
180
|
-
<xsl:value-of select="$s" />
|
181
|
-
</xsl:otherwise>
|
182
|
-
</xsl:choose>
|
183
|
-
</xsl:template>
|
184
|
-
|
185
|
-
</xsl:stylesheet>
|