Changes for page 13 Structure Mapping
Last modified by Artur on 2025/09/10 11:19
Summary
-
Page properties (1 modified, 0 added, 0 removed)
Details
- Page properties
-
- Content
-
... ... @@ -189,36 +189,37 @@ 189 189 190 190 These rules are described using either regular expressions, or substrings for simpler use cases. 191 191 192 -=== 13. 5.1 Regular expressions ===192 +=== 13.6.1 Regular expressions === 193 193 194 -Regular expression mapping rules are defined in the Representation Map. 194 +Regular expression mapping rules are defined in the [[Representation>>doc:sdmx:Glossary.Representation.WebHome]] Map. 195 195 196 -Below is an example set of regular expression rules for a particular component. 196 +Below is an example set of regular expression rules for a particular [[component>>doc:sdmx:Glossary.Component.WebHome]]. 197 197 198 -|Regex|Description|Output 199 -|A|Rule match if input = 'A'|OUT_A 200 -|^[A-G]|Rule match if the input starts with letters A to G|OUT_B 201 -|A~|B|Rule match if input is either 'A' or 'B'|OUT_C 198 +(% style="width:664.294px" %) 199 +|(% style="width:141px" %)**Regex**|(% style="width:362px" %)**Description**|(% style="width:158px" %)**Output** 200 +|(% style="width:141px" %)A|(% style="width:362px" %)Rule match if input = 'A'|(% style="width:158px" %)OUT_A 201 +|(% style="width:141px" %)^[A-G]|(% style="width:362px" %)Rule match if the input starts with letters A to G|(% style="width:158px" %)OUT_B 202 +|(% style="width:141px" %)A~|B|(% style="width:362px" %)Rule match if input is either 'A' or 'B'|(% style="width:158px" %)OUT_C 202 202 203 -Like all mapping rules, the output is either a Code, a Value or free text depending on the representation of the Component in the target Data Structure Definition. 204 +Like all mapping rules, the output is either a [[Code>>doc:sdmx:Glossary.Code.WebHome]], a Value or free text depending on the [[representation>>doc:sdmx:Glossary.Representation.WebHome]] of the [[Component>>doc:sdmx:Glossary.Component.WebHome]] in the target [[Data Structure Definition>>doc:sdmx:Glossary.Data structure definition.WebHome]]. 204 204 205 205 If the regular expression contains capture groups, these can be used in the definition of the output value, by specifying \**//n//**// //as an output value where **//n//** is the number of the capture group starting from 1. For example 206 206 207 -|Regex|Target output|Example Input|Example Output 208 -|((( 209 -([0-9]{4})[0- 208 +(% style="width:700.294px" %) 209 +|(% style="width:203px" %)Regex|(% style="width:148px" %)Target output|(% style="width:157px" %)Example Input|(% style="width:189px" %)Example Output 210 +|(% style="width:203px" %)((( 211 +([0-9]{4})[0-9]([0-9]{1}) 212 +)))|(% style="width:148px" %)\1-Q\2|(% style="width:157px" %)200933|(% style="width:189px" %)2009-Q3 210 210 211 -9]([0-9]{1}) 212 -)))|\1-Q\2|200933|2009-Q3 213 - 214 214 As regular expression rules can be used as a general catch-all if nothing else matches, the ordering of the rules is important. Rules should be tested starting with the highest priority, moving down the list until a match is found. 215 215 216 216 The following example shows this: 217 217 218 -|Priority|Regex|Description|Output 219 -|1|A|Rule match if input = 'A'|OUT_A 220 -|2|B|Rule match if input = 'B'|OUT_B 221 -|3|[A-Z]|Any character A-Z|OUT_C 218 +(% style="width:704.294px" %) 219 +|(% style="width:130px" %)Priority|(% style="width:125px" %)Regex|(% style="width:241px" %)Description|(% style="width:205px" %)Output 220 +|(% style="width:130px" %)1|(% style="width:125px" %)A|(% style="width:241px" %)Rule match if input = 'A'|(% style="width:205px" %)OUT_A 221 +|(% style="width:130px" %)2|(% style="width:125px" %)B|(% style="width:241px" %)Rule match if input = 'B'|(% style="width:205px" %)OUT_B 222 +|(% style="width:130px" %)3|(% style="width:125px" %)[A-Z]|(% style="width:241px" %)Any character A-Z|(% style="width:205px" %)OUT_C 222 222 223 223 The input 'A' matches both the first and the last rule, but the first takes precedence having the higher priority. The output is OUT_A. 224 224 ... ... @@ -230,14 +230,16 @@ 230 230 231 231 For instance: 232 232 233 -|Input String|Start|Length|Output 234 -|ABC_DEF_XYZ|5|3|DEF 235 -|XULADS|1|2|XU 234 +(% style="width:623.294px" %) 235 +|(% style="width:169px" %)Input String|(% style="width:147px" %)Start|(% style="width:133px" %)Length|(% style="width:171px" %)Output 236 +|(% style="width:169px" %)ABC_DEF_XYZ|(% style="width:147px" %)5|(% style="width:133px" %)3|(% style="width:171px" %)DEF 237 +|(% style="width:169px" %)XULADS|(% style="width:147px" %)1|(% style="width:133px" %)2|(% style="width:171px" %)XU 236 236 237 237 Sub-strings can therefore be used for the conceptual rule //If starts with 'XU' map to Y// as shown in the following example: 238 238 239 -|Start|Length|Source|Target 240 -|1|2|XU|Y 241 +(% style="width:628.294px" %) 242 +|(% style="width:163px" %)Start|(% style="width:158px" %)Length|(% style="width:128px" %)Source|(% style="width:176px" %)Target 243 +|(% style="width:163px" %)1|(% style="width:158px" %)2|(% style="width:128px" %)XU|(% style="width:176px" %)Y 241 241 242 242 == 13.6 Mapping non-SDMX time formats to SDMX formats == 243 243