Changes for page Lab result file - SIKB0101 v14
Last modified by Robin Huisman on 2025/02/27 09:44
Change comment:
Uploaded new attachment "Labresult_Controle.xsl", version {1}
Summary
-
Page properties (2 modified, 0 added, 0 removed)
-
Attachments (1 modified, 1 added, 0 removed)
Details
- Page properties
-
- Title
-
... ... @@ -1,1 +1,1 @@ 1 -Lab result file - ObsoleteSIKB version91 +Lab result file - SIKB version 14 - Content
-
... ... @@ -8,19 +8,24 @@ 8 8 SIKB Version 9 is obsolete, and replaced with version 13 or version 14. Latest version can be found here: [[https:~~/~~/www.sikb.nl/datastandaarden/sikb0101-bodembeheer>>url:https://www.sikb.nl/datastandaarden/sikb0101-bodembeheer]] 9 9 {{/warning}} 10 10 11 -== What is a Lab result file == 11 +== What is a Lab result file? == 12 12 13 -A lab result file is an XML file contains all the lab results. The results are mapped tot their analyses samples. A lab result will be matched to the corresponding analyses sample based on the: “Labassignment Guid/SIKB-I d, projectCode, AnalysisSample Guid/SIKB-Id”13 +A lab result file is an XML file contains all the lab results. The results are mapped tot their analyses samples. A lab result will be matched to the corresponding analyses sample based on the: “Labassignment Guid/SIKB-ID, projectCode, AnalysisSample Guid/SIKB-ID” 14 14 15 -**Example files**: 16 16 17 -[[attach:labresultaat_IndividueelGr.xml||rel=" MengmonsterGr.xml||rel="16 +**Example files**: [[attach:labresultaat_MengmonsterGr.xml||rel="noopener noreferrer" target="_blank"]], [[attach:labresultaat_IndividueelGr.xml||rel="noopener noreferrer" target="_blank"]], [[attach:labresultaat_IndividueelGw.xml||rel="noopener noreferrer" target="_blank"]] 18 18 19 -[[ attach:labresultaat_IndividueelGw.xml||rel="noopeneroreferrer"target="_blank"]]18 +**XSD**: Ask or SIKB Members can download from: [[https:~~/~~/www.sikb.nl/datastandaarden/richtlijnen/sikb0101>>url:https://www.sikb.nl/datastandaarden/richtlijnen/sikb0101]] 20 20 20 +**Controle XSLT**: 21 21 22 -\\[[image:IMSIKB0101 - Labresults.png]] 22 +**Domaintable files**: [[immetingen lookup v14.8.0.xml>>url:https://wiki.terraindex.com/bin/download/Implementation%20documentation/Setting%20up%20Lab%20communication%20by%20REST%20services%20with%20TerraIndex/Lab%20assignment%20file/WebHome/immetingen%20lookup%20v14.8.0.xml?rev=1.2]] [[imsikb0101 lookup v14.8.0.xml>>url:https://wiki.terraindex.com/bin/download/Implementation%20documentation/Setting%20up%20Lab%20communication%20by%20REST%20services%20with%20TerraIndex/Lab%20assignment%20file/WebHome/imsikb0101%20lookup%20v14.8.0.xml?rev=1.1]] 23 +extracted from: **[[https:~~/~~/codes.sikb.nl>>url:https://codes.sikb.nl/]] ** 23 23 25 + 26 + 27 +[[image:IMSIKB0101 - Labresults.png]] 28 + 24 24 == File structure == 25 25 26 26
- labresultaat_IndividueelGw.xml
-
- Size
-
... ... @@ -1,1 +1,1 @@ 1 -15. 3KB1 +15.4 KB - Content
-
... ... @@ -1,5 +1,5 @@ 1 1 <?xml version="1.0" encoding="utf-8"?> 2 -<imsikb0101:FeatureCollectionIMSIKB0101 gml:id="LABRESULTAAT" 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:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sikb.nl/imsikb0101 file:///C:/dev/SIKB0101_Protocol/XSDs%2014. 8.0/imsikb0101_v14.8.0.xsd">2 +<imsikb0101:FeatureCollectionIMSIKB0101 gml:id="LABRESULTAAT" 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:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sikb.nl/imsikb0101 file:///C:/dev/SIKB0101_Protocol/XSDs%2014.9.0/imsikb0101_v14.9.0.xsd"> 3 3 <imsikb0101:metaData> 4 4 <imsikb0101:application>urn:imsikb0101:Applicaties:id:1</imsikb0101:application> 5 5 <imsikb0101:date>2013-09-07</imsikb0101:date> ... ... @@ -8,7 +8,7 @@ 8 8 <imsikb0101:reportDate>2013-07-07</imsikb0101:reportDate> 9 9 <imsikb0101:sender>urn:imsikb0101:Bronhouders:id:54</imsikb0101:sender> 10 10 <imsikb0101:supplier>urn:imsikb0101:Leveranciers:id:1</imsikb0101:supplier> 11 - <imsikb0101:version>14. 8.0</imsikb0101:version>11 + <imsikb0101:version>14.9.0</imsikb0101:version> 12 12 <imsikb0101:dataflow>urn:imsikb0101:DatastroomType:id:1</imsikb0101:dataflow> 13 13 </imsikb0101:metaData> 14 14 <!-- LabAssignment --> ... ... @@ -152,13 +152,14 @@ 152 152 <om:resultTime xlink:href="#_1645261c-381e-4af2-a7d5-78fc4e73aa78"/> 153 153 <om:procedure xlink:href="#_e911262c-d247-4aad-8fea-ae095f62b495"/> 154 154 <om:observedProperty/> 155 - <om:featureOfInterest xlink:href="#_b1adf8f7-e0cd-4810-a93e-60580f34b3fa"/> 155 + <om:featureOfInterest xlink:href="#_b1adf8f7-e0cd-4810-a93e-60580f34b3fa"/> 156 156 <om:result xsi:type="immetingen:AnalyticResultType"> 157 + <immetingen:remarks>Opmerking bij het analyseresultaat</immetingen:remarks> 157 157 <immetingen:numericValue uom="urn:immetingen:Eenheid:id:59">633.2</immetingen:numericValue> 158 158 <!-- mg/l --> 159 159 <immetingen:qualityIndicatorType>urn:immetingen:Kwaliteitsoordeel:id:4</immetingen:qualityIndicatorType> 160 160 <immetingen:limitSymbol><![CDATA[<]]></immetingen:limitSymbol> 161 - <immetingen:alphanumericValue>633,2 mg/l</immetingen:alphanumericValue> 162 + <immetingen:alphanumericValue>633,2 mg/l</immetingen:alphanumericValue> 162 162 </om:result> 163 163 <immetingen:identification> 164 164 <immetingen:NEN3610ID> ... ... @@ -179,7 +179,7 @@ 179 179 <immetingen:dateExpected>2013-10-28</immetingen:dateExpected> 180 180 <immetingen:versionNumber>115</immetingen:versionNumber> 181 181 </immetingen:AnalysisStatus> 182 - </immetingen:statusOfAnalysis> 183 + </immetingen:statusOfAnalysis> 183 183 </immetingen:Analysis> 184 184 </imsikb0101:featureMember> 185 185 <!-- /Sample 1 Analysis--> ... ... @@ -207,7 +207,7 @@ 207 207 <!-- /Sample 1 Analysis--> 208 208 <!-- Sample 2 veldmonster --> 209 209 <imsikb0101:featureMember> 210 - <imsikb0101:Sample gml:id="_ 4593fd8e-813a-4660-88ad-9e6ea38ca415">211 + <imsikb0101:Sample gml:id="_55fcfbe8-0e4c-4ddf-8a76-45975332ccfb"> 211 211 <sam:sampledFeature/> 212 212 <!-- AnalyseMonster --> 213 213 <sam:relatedSamplingFeature> ... ... @@ -238,7 +238,7 @@ 238 238 <immetingen:identification> 239 239 <immetingen:NEN3610ID> 240 240 <immetingen:namespace>SIKB</immetingen:namespace> 241 - <immetingen:lokaalID> 4593fd8e-813a-4660-88ad-9e6ea38ca415</immetingen:lokaalID>242 + <immetingen:lokaalID>55fcfbe8-0e4c-4ddf-8a76-45975332ccfb</immetingen:lokaalID> 242 242 </immetingen:NEN3610ID> 243 243 </immetingen:identification> 244 244 <immetingen:name>WA1-1</immetingen:name>
- 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) < 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) > 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]) < 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) >0"> 125 + <xsl:if test="string-length(imsikb0101:organisation) > 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) >0"> 130 + <xsl:if test="string-length(imsikb0101:version) > 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) > 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) > 0"> 148 + <xsl:if test="string-length(imsikb0101:customerCode) > 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) >0"> 166 + <xsl:if test="string-length(imsikb0101:orderNumber) > 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) >0"> 173 + <xsl:if test="string-length(imsikb0101:labCertificatePdfLink) > 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) <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) >0"> 183 + <xsl:if test="string-length(imsikb0101:searchPartDescription) > 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) >0"> 190 + <xsl:if test="string-length(immetingen:alphanunericValue) > 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) > 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) > 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) >0"> 212 + <xsl:if test="string-length(imsikb0101:districtCode) > 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) >0"> 217 + <xsl:if test="string-length(imsikb0101:letter) > 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) >0"> 222 + <xsl:if test="string-length(imsikb0101:letterAddition) > 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) >0"> 227 + <xsl:if test="string-length(imsikb0101:city) > 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) >0"> 232 + <xsl:if test="string-length(imsikb0101:zipcode) > 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) >0"> 237 + <xsl:if test="string-length(imsikb0101:street) > 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) >0"> 245 + <xsl:if test="string-length(imsikb0101:email) > 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) >0"> 250 + <xsl:if test="string-length(imsikb0101:fax) > 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) >0"> 255 + <xsl:if test="string-length(imsikb0101:telephoneNumber) > 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) >0"> 260 + <xsl:if test="string-length(imsikb0101:mobileNumber) > 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) >0"> 265 + <xsl:if test="string-length(imsikb0101:civilserviceNumber) > 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) >0"> 270 + <xsl:if test="string-length(imsikb0101:lastName) > 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) >0"> 275 + <xsl:if test="string-length(imsikb0101:firstName) > 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) >0"> 283 + <xsl:if test="string-length(imsikb0101:name) > 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) >0"> 288 + <xsl:if test="string-length(imsikb0101:email) > 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) >0"> 293 + <xsl:if test="string-length(imsikb0101:fax) > 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) >0"> 298 + <xsl:if test="string-length(imsikb0101:telephoneNumber) > 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) >0"> 303 + <xsl:if test="string-length(imsikb0101:mobileNumber) > 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() > 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>