-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathmmf.xslt
67 lines (59 loc) · 1.96 KB
/
mmf.xslt
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
<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:exsl="http://exslt.org/common" xmlns:func="http://exslt.org/functions"
xmlns:str="http://exslt.org/strings" xmlns:my="http://example.org/my"
xmlns:h="urn:iso:std:iso:20022:tech:xsd:head.001.001.01"
exclude-result-prefixes="my" extension-element-prefixes="func str exsl">
<xsl:output indent="yes" method="xml" />
<xsl:variable name="eeacountrycodes" select="document('lookup/eea-countries.xml')/codes/code" />
<xsl:variable name="countrycodes" select="document('lookup/iso-3166-1.xml')/codes/code" />
<xsl:include href="common.xslt" />
<xsl:variable name="mmf9validations" select="document('lookup/mmf-validations.xml')" />
<xsl:key name="validationlookup" match="rule" use="error_code" />
<xsl:template name="MMFError">
<xsl:param name="code" />
<xsl:param name="context" />
<error>
<code>
<xsl:value-of select="$code" />
</code>
<xsl:for-each select="$mmf9validations">
<xsl:for-each select="key('validationlookup', $code)">
<control>
<xsl:value-of select="control" />
</control>
<message>
<xsl:value-of select="error_message" />
</message>
</xsl:for-each>
</xsl:for-each>
<context>
<xsl:for-each select="exsl:node-set($context)">
<field>
<name>
<xsl:call-template name="path" />
</name>
<value>
<xsl:value-of select="." />
</value>
</field>
</xsl:for-each>
</context>
</error>
</xsl:template>
<xsl:template match="/">
<result>
<xsl:apply-templates />
</result>
</xsl:template>
<xsl:template match="h:AppHdr/h:To/h:OrgId/h:Id/h:OrgId/h:Othr/h:Id">
<xsl:if test=". != 'EU'">
<xsl:call-template name="MMFError">
<xsl:with-param name="code" select="'1'" />
<xsl:with-param name="context" select="." />
</xsl:call-template>
</xsl:if>
</xsl:template>
<xsl:template match="text()|@*">
<!-- <xsl:value-of select="."/> -->
</xsl:template>
</xsl:transform>