<
From version < 35.1 >
edited by Robin Huisman
on 2024/07/31 23:08
To version < 36.1 >
edited by Robin Huisman
on 2024/07/31 23:10
>
Change comment: Uploaded new attachment "Labresult_Controle.xsl", version {1}

Summary

Details

Labresult_Controle.xsl
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.RobinHuisman
Size
... ... @@ -1,0 +1,1 @@
1 +23.4 KB
Content
... ... @@ -1,0 +1,405 @@
1 +<?xml version="1.0" encoding="utf-8"?>
2 +<!--XSLT Labresult_Controle.xsl versie 4.1 - SIKB0101 versie 14.8.0-->
3 +<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:xsi="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2005/xpath-functions" xmlns:xdt="http://www.w3.org/2005/xpath-datatypes" xmlns:imsikb0101="http://www.sikb.nl/imsikb0101" xmlns:immetingen="http://www.sikb.nl/immetingen" xmlns:gco="http://www.isotc211.org/2005/gco" xmlns:gmd="http://www.isotc211.org/2005/gmd" xmlns:gsr="http://www.isotc211.org/2005/gsr" xmlns:gss="http://www.isotc211.org/2005/gss" xmlns:gts="http://www.isotc211.org/2005/gts" xmlns:gml="http://www.opengis.net/gml/3.2" xmlns:om="http://www.opengis.net/om/2.0" xmlns:sam="http://www.opengis.net/sampling/2.0" xmlns:sams="http://www.opengis.net/samplingSpatial/2.0" xmlns:spec="http://www.opengis.net/samplingSpecimen/2.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xs="http://www.w3.org/2001/XMLSchema"
4 +xmlns:sikb="http://xslcontrole.sikb"
5 + xsi:schemaLocation="http://www.sikb.nl/imsikb0101 imsikb0101_v14.8.0.xsd">
6 + <xsl:output method="xml" indent="yes" />
7 + <xsl:template match="/">
8 + <ArrayOfLogRecord>
9 +
10 + <!-- file dataflow check -->
11 + <xsl:if test="count(//imsikb0101:metaData/imsikb0101:dataflow) &lt; 1">
12 + <xsl:copy-of select="sikb:createRecord('WARNING','imsikb0101:metaData/imsikb0101:dataflow','Er zou een metadata/dataflow ingevuld moeten zijn.')"/>
13 + </xsl:if>
14 + <xsl:if test="lower-case(//imsikb0101:metaData/imsikb0101:dataflow) != lower-case('urn:imsikb0101:DatastroomType:id:1')">
15 + <xsl:copy-of select="sikb:createRecord('WARNING','imsikb0101:metaData/imsikb0101:dataflow','Het veld metadata/dataflow zou ingevuld moeten zijn met: urn:imsikb0101:DatastroomType:id:1. Als dit geen Labresultaat-xml is, kies dan voor een andere controle xslt.')"/>
16 + </xsl:if>
17 +
18 + <xsl:if test="count(//imsikb0101:LabAssignment) != 1">
19 + <xsl:copy-of select="sikb:createRecord('ERROR','imsikb0101:LabAssignment','Er moet precies 1 labopdracht aanwezig zijn.')"/>
20 + </xsl:if>
21 + <xsl:variable name="plGUID" select="replace(//imsikb0101:LabAssignment/imsikb0101:belongsToProject/@xlink:href,'#','')" />
22 + <xsl:if test="$plGUID = ''">
23 + <xsl:copy-of select="sikb:createRecord('ERROR','imsikb0101:LabAssignment/belongsToProject','Er moet Project gekoppeld zijn.')"/>
24 + </xsl:if>
25 + <xsl:if test="count(//imsikb0101:Project[@gml:id = $plGUID]) != 1">
26 + <xsl:copy-of select="sikb:createRecord('ERROR','imsikb0101:Project', string-join(('Er moet een Project meegeleverd zijn; gml:id =', $plGUID), ' ') )"/>
27 + </xsl:if>
28 +
29 + <xsl:if test="count(//imsikb0101:LabAssignment//imsikb0101:LabAssignmentCertificate) != 1">
30 + <xsl:copy-of select="sikb:createRecord('ERROR','imsikb0101:LabAssignmentCertificate','Er moet een LabAssignmentCertificate in LabAssignment aanwezig zijn.')"/>
31 + </xsl:if>
32 +
33 + <xsl:if test="count(//imsikb0101:LabAssignment//imsikb0101:SampleAnalysisRequest) = 0">
34 + <xsl:copy-of select="sikb:createRecord('ERROR','imsikb0101:SampleAnalysisRequest','Er moet een SampleAnalysisRequest in LabAssignment aanwezig zijn.')"/>
35 + </xsl:if>
36 +
37 + <xsl:for-each select="//imsikb0101:LabAssignment//imsikb0101:SampleAnalysisRequest">
38 + <xsl:if test="count(.//imsikb0101:sample) != 1">
39 + <xsl:copy-of select="sikb:createRecord('ERROR','imsikb0101:Sample','Er moet een Sample in SampleAnalysisRequest aanwezig zijn.')"/>
40 + </xsl:if>
41 + </xsl:for-each>
42 +
43 + <xsl:for-each select="//imsikb0101:Sample">
44 + <xsl:variable name="samGUID" select="@gml:id" />
45 + <xsl:variable name="specimenType" select="spec:specimenType/@xlink:href" />
46 +
47 + <xsl:if test="$specimenType = ''">
48 + <xsl:copy-of select="sikb:createRecord('ERROR','imsikb0101:Sample', string-join(('Er moet een specimenType in Sample aanwezig zijn; Sample gml:id =', $samGUID), ' ') )"/>
49 + </xsl:if>
50 + <xsl:if test="contains($specimenType,':10') or contains($specimenType,':7') or contains($specimenType,':8') or contains($specimenType,':9') ">
51 + <!-- AnalysisSamples/Materiaalmonsters/Zeefmonsters/Uitloogmonster schould contain Analysis-->
52 + <xsl:if test="count(descendant::immetingen:Analysis) &gt; 0">
53 + <xsl:copy-of select="sikb:createRecord('ERROR','imsikb0101:Analysis', string-join(('Er mag geen Analysis relationeel gekoppeld zijn in Sample; Sample gml:id =', $samGUID), ' ') )"/>
54 + </xsl:if>
55 + <xsl:if test="count(descendant::sam:relatedObservation[string-length(@xlink:href) > 1]) &lt; 1">
56 + <xsl:copy-of select="sikb:createRecord('ERROR','imsikb0101:Analysis', string-join(('Er moet een link naar Analysis in Sample aanwezig zijn; Sample gml:id =', $samGUID), ' ') )"/>
57 + </xsl:if>
58 +
59 + </xsl:if>
60 + </xsl:for-each>
61 +
62 + <xsl:for-each select="//immetingen:Analysis">
63 + <xsl:variable name="arGUID" select="@gml:id" />
64 +
65 + <xsl:variable select="string(om:result/@*)" name="arType"/>
66 + <xsl:if test="not(contains($arType,'immetingen:AnalyticResultType'))">
67 + <xsl:copy-of select="sikb:createRecord('ERROR','imsikb0101:AnalyticResult', string-join(('Er moet een AnalyticResult in Analysis aanwezig zijn; Analysis gml:id =', $arGUID), ' ') )"/>
68 + </xsl:if>
69 +
70 + <!-- Check AnalysisProcess -->
71 + <xsl:variable select="replace(om:procedure/@xlink:href,'#','')" name="prLiGUID"/>
72 + <xsl:variable select="om:procedure/*/@gml:id" name="prInGUID"/>
73 +
74 + <xsl:if test="concat($prInGUID,'', $prLiGUID) != ''">
75 + <xsl:if test="count(//immetingen:AnalysisProcess[@gml:id = concat($prInGUID,'', $prLiGUID)]) != 1">
76 + <xsl:copy-of select="sikb:createRecord('ERROR','immetingen:AnalysisProcess', string-join(('Analysis verwijst niet naar procedure van type: AnalysisProcess; Analysis gml:id =', $arGUID), ' ') )"/>
77 + </xsl:if>
78 + </xsl:if>
79 +
80 + </xsl:for-each>
81 +
82 +
83 + <xsl:apply-templates select="//imsikb0101:metaData" />
84 + <xsl:apply-templates select="//imsikb0101:SourceSystem" />
85 + <xsl:apply-templates select="//imsikb0101:LabAssignment" />
86 + <xsl:apply-templates select="//imsikb0101:LabAssignmentRequest" />
87 + <xsl:apply-templates select="//imsikb0101:LabAssignmentCertificate" />
88 + <xsl:apply-templates select="//imsikb0101:AsbestosComposition" />
89 + <xsl:apply-templates select="//immetingen:AnalyticResult" />
90 + <xsl:apply-templates select="//immetingen:Package" />
91 + <xsl:apply-templates select="//imsikb0101:featureMember" />
92 + <!--
93 + <xsl:apply-templates select="//imsikb0101:Address" />
94 + <xsl:apply-templates select="//imsikb0101:Person" />
95 + <xsl:apply-templates select="//imsikb0101:Organization" />
96 + -->
97 +
98 + <!-- single fields check -->
99 + <xsl:apply-templates select="//imsikb0101:remarks" />
100 +
101 + <!-- saxon levert nog een error in de RegExp : Waarom ???-->
102 + <xsl:apply-templates select="//om:resultTime" />
103 +
104 +
105 + </ArrayOfLogRecord>
106 + </xsl:template>
107 + <!-- lengte /verplichting van metadata velden -->
108 + <xsl:template match="imsikb0101:metaData">
109 + <xsl:if test="count(imsikb0101:application) != 1">
110 + <xsl:copy-of select="sikb:createRecord('ERROR','imsikb0101:metaData','application bij metaData moet aanwezig zijn.')" />
111 + </xsl:if>
112 + <xsl:if test="count(imsikb0101:date) != 1">
113 + <xsl:copy-of select="sikb:createRecord('ERROR','imsikb0101:metaData','date bij metaData moet aanwezig zijn.')" />
114 + </xsl:if>
115 + <xsl:if test="count(imsikb0101:supplier) != 1">
116 + <xsl:copy-of select="sikb:createRecord('ERROR','imsikb0101:metaData','supplier bij metaData moet aanwezig zijn.')" />
117 + </xsl:if>
118 + <xsl:if test="count(imsikb0101:organisation) != 1">
119 + <xsl:copy-of select="sikb:createRecord('ERROR','imsikb0101:metaData','organisation bij metaData moet aanwezig zijn.')" />
120 + </xsl:if>
121 + <xsl:if test="count(imsikb0101:version) != 1">
122 + <xsl:copy-of select="sikb:createRecord('ERROR','imsikb0101:metaData','version bij metaData moet aanwezig zijn.')" />
123 + </xsl:if>
124 + <xsl:if test="count(imsikb0101:organisation) &gt;0">
125 + <xsl:if test="string-length(imsikb0101:organisation) &gt; 60">
126 + <xsl:copy-of select="sikb:createRecord('ERROR','imsikb0101:metaData','Lengte van organisation bij metaData is meer dan 60 karakters.')" />
127 + </xsl:if>
128 + </xsl:if>
129 + <xsl:if test="count(imsikb0101:version) &gt;0">
130 + <xsl:if test="string-length(imsikb0101:version) &gt; 8">
131 + <xsl:copy-of select="sikb:createRecord('ERROR','imsikb0101:metaData','Lengte van version bij metaData is meer dan 8 karakters.')" />
132 + </xsl:if>
133 + </xsl:if>
134 + </xsl:template>
135 + <!-- lengte (/verplichting) van overige velden -->
136 + <xsl:template match="imsikb0101:SourceSystem">
137 + <xsl:if test="count(imsikb0101:applicationID) > 0">
138 + <xsl:if test="string-length(imsikb0101:applicationID) &gt; 20">
139 + <xsl:copy-of select="sikb:createRecord('ERROR','imsikb0101:SourceSystem',string-join(('Lengte van applicationID bij SourceSystem is meer dan 20 karakters.'),' '))" />
140 + </xsl:if>
141 + </xsl:if>
142 + </xsl:template>
143 + <xsl:template match="imsikb0101:LabAssignment">
144 + <xsl:if test="count(imsikb0101:customerCode) != 1">
145 + <xsl:copy-of select="sikb:createRecord('ERROR','imsikb0101:LabAssignment','customerCode bij LabAssignment moet aanwezig zijn.')" />
146 + </xsl:if>
147 + <xsl:if test="count(imsikb0101:customerCode) &gt; 0">
148 + <xsl:if test="string-length(imsikb0101:customerCode) &gt; 20">
149 + <xsl:copy-of select="sikb:createRecord('ERROR','imsikb0101:LabAssignment','Lengte van customerCode bij LabAssignment is meer dan 20 karakters.')" />
150 + </xsl:if>
151 + </xsl:if>
152 +
153 + <!-- Check ProjectLeader is Person -->
154 + <xsl:variable select="replace(imsikb0101:projectLeader/@xlink:href,'#','')" name="prLiGUID"/>
155 + <xsl:variable select="imsikb0101:projectLeader/*/@gml:id" name="prInGUID"/>
156 +
157 + <xsl:if test="concat($prInGUID,'', $prLiGUID) != ''">
158 + <xsl:if test="count(//immetingen:Person[@gml:id = concat($prInGUID,'', $prLiGUID)]) != 1">
159 + <xsl:copy-of select="sikb:createRecord('ERROR','immetingen:Person', 'projectLeader van de labopdracht verwijst niet naar subject van type: imsikb0101:Person.' )"/>
160 + </xsl:if>
161 + </xsl:if>
162 +
163 + </xsl:template>
164 + <xsl:template match="imsikb0101:LabAssignmentRequest">
165 + <xsl:if test="count(imsikb0101:orderNumber) &gt;0">
166 + <xsl:if test="string-length(imsikb0101:orderNumber) &gt; 25">
167 + <xsl:copy-of select="sikb:createRecord('ERROR','imsikb0101:LabAssignmentRequest',string-join(('Lengte van orderNumber bij LabAssignmentRequest is meer dan 25 karakters.'),' '))" />
168 + </xsl:if>
169 + </xsl:if>
170 + </xsl:template>
171 + <xsl:template match="imsikb0101:LabAssignmentCertificate">
172 + <xsl:if test="count(imsikb0101:labCertificatePdfLink) &gt;0">
173 + <xsl:if test="string-length(imsikb0101:labCertificatePdfLink) &gt; 2000">
174 + <xsl:copy-of select="sikb:createRecord('ERROR','imsikb0101:LabAssignmentCertificate',string-join(('Lengte van labCertificatePdfLink bij LabAssignmentCertificate is meer dan 2000 karakters.'),' '))" />
175 + </xsl:if>
176 + </xsl:if>
177 + <xsl:if test="string-length(imsikb0101:labCertificateNumber) &lt;1">
178 + <xsl:copy-of select="sikb:createRecord('WARNING','imsikb0101:LabAssignmentCertificate',string-join(('Het invullen van het labCertificateNumber is wenselijk voor een goede uitwisseling.'),' '))" />
179 + </xsl:if>
180 + </xsl:template>
181 + <xsl:template match="imsikb0101:AsbestosComposition">
182 + <xsl:if test="count(imsikb0101:searchPartDescription) &gt;0">
183 + <xsl:if test="string-length(imsikb0101:searchPartDescription) &gt; 20">
184 + <xsl:copy-of select="sikb:createRecord('ERROR','imsikb0101:AsbestosComposition',string-join(('Lengte van searchPartDescription bij AsbestosComposition is meer dan 20 karakters.'),' '))" />
185 + </xsl:if>
186 + </xsl:if>
187 + </xsl:template>
188 + <xsl:template match="immetingen:AnalyticResult">
189 + <xsl:if test="count(immetingen:alphanunericValue) &gt;0">
190 + <xsl:if test="string-length(immetingen:alphanunericValue) &gt; 20">
191 + <xsl:copy-of select="sikb:createRecord('ERROR','immetingen:AnalyticResult',string-join(('Lengte van alphanunericValue bij AnalyticResult is meer dan 20 karakters.'),' '))" />
192 + </xsl:if>
193 + </xsl:if>
194 +
195 + </xsl:template>
196 + <xsl:template match="immetingen:Package">
197 + <xsl:if test="count(immetingen:barcode) > 0">
198 + <xsl:if test="string-length(immetingen:barcode) &gt; 15">
199 + <xsl:copy-of select="sikb:createRecord('ERROR','immetingen:Package',string-join(('Lengte van barcode bij Package is meer dan 15 karakters.'),' '))" />
200 + </xsl:if>
201 + </xsl:if>
202 + <xsl:if test="count(immetingen:name) > 0">
203 + <xsl:if test="string-length(immetingen:name) &gt; 20">
204 + <xsl:copy-of select="sikb:createRecord('ERROR','immetingen:Package',string-join(('Lengte van name bij Package is meer dan 20 karakters.'),' '))" />
205 + </xsl:if>
206 + </xsl:if>
207 + </xsl:template>
208 + <!--
209 + <xsl:template match="imsikb0101:Address">
210 + <xsl:variable select="@gml:id" name="prGUID" />
211 + <xsl:if test="count(imsikb0101:districtCode) &gt;0">
212 + <xsl:if test="string-length(imsikb0101:districtCode) &gt; 4">
213 + <xsl:copy-of select="sikb:createRecord('ERROR','imsikb0101:Address',string-join(('Lengte van districtCode bij Address',$prGUID,'is meer dan 4 karakters.'),' '))" />
214 + </xsl:if>
215 + </xsl:if>
216 + <xsl:if test="count(imsikb0101:letter) &gt;0">
217 + <xsl:if test="string-length(imsikb0101:letter) &gt; 1">
218 + <xsl:copy-of select="sikb:createRecord('ERROR','imsikb0101:Address',string-join(('Lengte van letter bij Address',$prGUID,'is meer dan 1 karakters.'),' '))" />
219 + </xsl:if>
220 + </xsl:if>
221 + <xsl:if test="count(imsikb0101:letterAddition) &gt;0">
222 + <xsl:if test="string-length(imsikb0101:letterAddition) &gt; 4">
223 + <xsl:copy-of select="sikb:createRecord('ERROR','imsikb0101:Address',string-join(('Lengte van letterAddition bij Address',$prGUID,'is meer dan 4 karakters.'),' '))" />
224 + </xsl:if>
225 + </xsl:if>
226 + <xsl:if test="count(imsikb0101:city) &gt;0">
227 + <xsl:if test="string-length(imsikb0101:city) &gt; 80">
228 + <xsl:copy-of select="sikb:createRecord('ERROR','imsikb0101:Address',string-join(('Lengte van city bij Address',$prGUID,'is meer dan 80 karakters.'),' '))" />
229 + </xsl:if>
230 + </xsl:if>
231 + <xsl:if test="count(imsikb0101:zipcode) &gt;0">
232 + <xsl:if test="string-length(imsikb0101:zipcode) &gt; 6">
233 + <xsl:copy-of select="sikb:createRecord('ERROR','imsikb0101:Address',string-join(('Lengte van zipcode bij Address',$prGUID,'is meer dan 6 karakters.'),' '))" />
234 + </xsl:if>
235 + </xsl:if>
236 + <xsl:if test="count(imsikb0101:street) &gt;0">
237 + <xsl:if test="string-length(imsikb0101:street) &gt; 80">
238 + <xsl:copy-of select="sikb:createRecord('ERROR','imsikb0101:Address',string-join(('Lengte van street bij Address',$prGUID,'is meer dan 80 karakters.'),' '))" />
239 + </xsl:if>
240 + </xsl:if>
241 + </xsl:template>
242 + <xsl:template match="imsikb0101:Person">
243 + <xsl:variable select="@gml:id" name="prGUID" />
244 + <xsl:if test="count(imsikb0101:email) &gt;0">
245 + <xsl:if test="string-length(imsikb0101:email) &gt; 100">
246 + <xsl:copy-of select="sikb:createRecord('ERROR','imsikb0101:Person',string-join(('Lengte van email bij Person',$prGUID,'is meer dan 100 karakters.'),' '))" />
247 + </xsl:if>
248 + </xsl:if>
249 + <xsl:if test="count(imsikb0101:fax) &gt;0">
250 + <xsl:if test="string-length(imsikb0101:fax) &gt; 20">
251 + <xsl:copy-of select="sikb:createRecord('ERROR','imsikb0101:Person',string-join(('Lengte van fax bij Person',$prGUID,'is meer dan 20 karakters.'),' '))" />
252 + </xsl:if>
253 + </xsl:if>
254 + <xsl:if test="count(imsikb0101:telephoneNumber) &gt;0">
255 + <xsl:if test="string-length(imsikb0101:telephoneNumber) &gt; 20">
256 + <xsl:copy-of select="sikb:createRecord('ERROR','imsikb0101:Person',string-join(('Lengte van telephoneNumber bij Person',$prGUID,'is meer dan 20 karakters.'),' '))" />
257 + </xsl:if>
258 + </xsl:if>
259 + <xsl:if test="count(imsikb0101:mobileNumber) &gt;0">
260 + <xsl:if test="string-length(imsikb0101:mobileNumber) &gt; 20">
261 + <xsl:copy-of select="sikb:createRecord('ERROR','imsikb0101:Person',string-join(('Lengte van mobileNumber bij Person',$prGUID,'is meer dan 20 karakters.'),' '))" />
262 + </xsl:if>
263 + </xsl:if>
264 + <xsl:if test="count(imsikb0101:civilserviceNumber) &gt;0">
265 + <xsl:if test="string-length(imsikb0101:civilserviceNumber) &gt; 9">
266 + <xsl:copy-of select="sikb:createRecord('ERROR','imsikb0101:Person',string-join(('Lengte van civilserviceNumber bij Person',$prGUID,'is meer dan 9 karakters.'),' '))" />
267 + </xsl:if>
268 + </xsl:if>
269 + <xsl:if test="count(imsikb0101:lastName) &gt;0">
270 + <xsl:if test="string-length(imsikb0101:lastName) &gt; 60">
271 + <xsl:copy-of select="sikb:createRecord('ERROR','imsikb0101:Person',string-join(('Lengte van lastName bij Person',$prGUID,'is meer dan 60 karakters.'),' '))" />
272 + </xsl:if>
273 + </xsl:if>
274 + <xsl:if test="count(imsikb0101:firstName) &gt;0">
275 + <xsl:if test="string-length(imsikb0101:firstName) &gt; 80">
276 + <xsl:copy-of select="sikb:createRecord('ERROR','imsikb0101:Person',string-join(('Lengte van firstName bij Person',$prGUID,'is meer dan 80 karakters.'),' '))" />
277 + </xsl:if>
278 + </xsl:if>
279 + </xsl:template>
280 + <xsl:template match="imsikb0101:Organization">
281 + <xsl:variable select="@gml:id" name="prGUID" />
282 + <xsl:if test="count(imsikb0101:name) &gt;0">
283 + <xsl:if test="string-length(imsikb0101:name) &gt; 100">
284 + <xsl:copy-of select="sikb:createRecord('ERROR','imsikb0101:Organization',string-join(('Lengte van name bij Organization',$prGUID,'is meer dan 100 karakters.'),' '))" />
285 + </xsl:if>
286 + </xsl:if>
287 + <xsl:if test="count(imsikb0101:email) &gt;0">
288 + <xsl:if test="string-length(imsikb0101:email) &gt; 100">
289 + <xsl:copy-of select="sikb:createRecord('ERROR','imsikb0101:Organization',string-join(('Lengte van email bij Organization',$prGUID,'is meer dan 100 karakters.'),' '))" />
290 + </xsl:if>
291 + </xsl:if>
292 + <xsl:if test="count(imsikb0101:fax) &gt;0">
293 + <xsl:if test="string-length(imsikb0101:fax) &gt; 20">
294 + <xsl:copy-of select="sikb:createRecord('ERROR','imsikb0101:Organization',string-join(('Lengte van fax bij Organization',$prGUID,'is meer dan 20 karakters.'),' '))" />
295 + </xsl:if>
296 + </xsl:if>
297 + <xsl:if test="count(imsikb0101:telephoneNumber) &gt;0">
298 + <xsl:if test="string-length(imsikb0101:telephoneNumber) &gt; 20">
299 + <xsl:copy-of select="sikb:createRecord('ERROR','imsikb0101:Organization',string-join(('Lengte van telephoneNumber bij Organization',$prGUID,'is meer dan 20 karakters.'),' '))" />
300 + </xsl:if>
301 + </xsl:if>
302 + <xsl:if test="count(imsikb0101:mobileNumber) &gt;0">
303 + <xsl:if test="string-length(imsikb0101:mobileNumber) &gt; 20">
304 + <xsl:copy-of select="sikb:createRecord('ERROR','imsikb0101:Organization',string-join(('Lengte van mobileNumber bij Organization',$prGUID,'is meer dan 20 karakters.'),' '))" />
305 + </xsl:if>
306 + </xsl:if>
307 + </xsl:template>
308 + -->
309 + <xsl:template match="imsikb0101:remarks">
310 + <xsl:if test="string-length() &gt; 4000">
311 + <xsl:copy-of select="sikb:createRecord('ERROR','imsikb0101:remarks','Lengte van remarks is meer dan 4000.')" />
312 + </xsl:if>
313 + </xsl:template>
314 +
315 +<!-- xmlns:xs="http://www.w3.org/2001/XMLSchema" -->
316 +<!-- timePosition fix test (PAR)
317 + <xsl:template match="om:resultTime">
318 + <xsl:if test="count(//gml:timePosition) != 1">
319 + <xsl:copy-of select="sikb:createRecord('ERROR','on:resultTime','Er moet een gml:timePosition in om:resultTime aanwezig zijn.')"/>
320 + </xsl:if>
321 + <xsl:if test="count(//gml:timePosition) != 0">
322 + <xsl:variable select="//gml:timePosition" name="lvDateTime"/>
323 + <xsl:if test="not(lvDateTime castable as xs:date)">
324 + <xsl:copy-of select="sikb:createRecord('ERROR','gml:timePosition','gml:timePosition is niet geldig.')" />
325 + </xsl:if>
326 + </xsl:if>
327 + </xsl:template>
328 +-->
329 +
330 +<!-- werk niet met deze regexp?
331 + <xsl:template match="om:resultTime">
332 + <xsl:if test="count(//gml:timePosition) != 1">
333 + <xsl:copy-of select="sikb:createRecord('ERROR','on:resultTime','Er moet een gml:timePosition in om:resultTime aanwezig zijn.')"/>
334 + </xsl:if>
335 + <xsl:if test="count(//gml:timePosition) != 0">
336 + <xsl:variable select="//gml:timePosition" name="lvDateTime"/>
337 + <xsl:variable name="DTEXP" select ='"^([\+-]?\d{4}(?!\d{2}\b))((-?)((0[1-9]|1[0-2])(\3([12]\d|0[1-9]|3[01]))?|W([0-4]\d|5[0-2])(-?[1-7])?|(00[1-9]|0[1-9]\d|[12]\d{2}|3([0-5]\d|6[1-6])))([T\s]((([01]\d|2[0-3])((:?)[0-5]\d)?|24\:?00)([\.,]\d+(?!:))?)?(\17[0-5]\d([\.,]\d+)?)?([zZ]|([\+-])([01]\d|2[0-3]):?([0-5]\d)?)?)?)?$"'/>
338 + <xsl:choose>
339 + <xsl:when test="$lvDateTime = ''">
340 + <xsl:copy-of select="sikb:createRecord('ERROR','gml:timePosition','gml:timePosition is niet gevuld.')" />
341 + </xsl:when>
342 + <xsl:when test="matches($lvDateTime, $DTEXP, 'm') ">
343 + </xsl:when>
344 + <xsl:otherwise>
345 + <xsl:copy-of select="sikb:createRecord('ERROR','gml:timePosition','gml:timePosition is niet geldig.')" />
346 + </xsl:otherwise>
347 + </xsl:choose>
348 + </xsl:if>
349 + </xsl:template>
350 + -->
351 +
352 + <xsl:template match="om:resultTime/gml:TimeInstant">
353 + <xsl:if test="count(gml:timePosition) > 0">
354 + <xsl:variable select="gml:timePosition" name="lvDateTime"/>
355 + <xsl:if test="not($lvDateTime castable as xs:dateTime)">
356 + <xsl:copy-of select="sikb:createRecord('ERROR','gml:timePosition', string-join(('gml:timePosition is niet geldig.', $lvDateTime), ' '))" />
357 + </xsl:if>
358 + </xsl:if>
359 + </xsl:template>
360 +
361 + <xsl:template match="imsikb0101:featureMember">
362 + <xsl:variable name="GmlId" select="substring-after(./*/@gml:id,'_')"/>
363 + <xsl:variable name="IdentificationImmetingen" select="./*/immetingen:identification/immetingen:NEN3610ID/immetingen:lokaalID"/>
364 + <xsl:variable name="IdentificationImSikb" select="./*/imsikb0101:identification/immetingen:NEN3610ID/immetingen:lokaalID"/>
365 + <xsl:variable name="ElementName" select="name(./*)"/>
366 + <xsl:choose>
367 +
368 + <xsl:when test="$IdentificationImmetingen != ''">
369 + <xsl:if test="$IdentificationImmetingen != $GmlId">
370 + <xsl:copy-of select="sikb:createRecord('ERROR',$ElementName,string-join(($ElementName,'met gml:id (',$GmlId,') heeft een afwijkend lokaalId (',$IdentificationImmetingen,').' ),' '))" />
371 + </xsl:if>
372 + </xsl:when>
373 +
374 + <xsl:otherwise>
375 + <xsl:if test="$IdentificationImSikb != $GmlId">
376 + <xsl:copy-of select="sikb:createRecord('ERROR',$ElementName,string-join(($ElementName,'met gml:id (',$GmlId,') heeft een afwijkend lokaalId (',$IdentificationImSikb,').' ),' '))" />
377 + </xsl:if>
378 + </xsl:otherwise>
379 +
380 + </xsl:choose>
381 +</xsl:template>
382 +
383 +
384 +
385 +
386 + <!-- verplichte velden -->
387 +
388 + <!-- functies -->
389 + <xsl:function name="sikb:createRecord">
390 + <xsl:param name="type" />
391 + <xsl:param name="title" />
392 + <xsl:param name="message" />
393 + <xsl:element name="LogRecord">
394 + <xsl:element name="Type">
395 + <xsl:copy-of select="$type" />
396 + </xsl:element>
397 + <xsl:element name="Title">
398 + <xsl:copy-of select="$title" />
399 + </xsl:element>
400 + <xsl:element name="Message">
401 + <xsl:copy-of select="$message" />
402 + </xsl:element>
403 + </xsl:element>
404 + </xsl:function>
405 +</xsl:stylesheet>
TerraIndex
asd