I am trying to mask a XML tag stored inside column in SQL server DB .
The XML tag is multi value field means same XML tag can have more than one value like below.
<c150>20220412</c150>
<c150 m="2">20220419</c150>
<c150 m="3">20220430</c150>
<c150 m="4">20220503</c150>
Here we have XML tag c150 however there are multi value which is stored with m=2 and so on.
Now using TDM portal I am able to mask the field/xml tag <c150>20220412</c150> however when I am trying to configure masking rule for xml tag <c150 m="2">20220419</c150> it throws below error:
ERROR:
XXXXXX_MBR22_dbo: java.lang.IllegalArgumentException: Unable to compile '/row/c150 m=2'. See Cause. at org.jdom2.xpath.jaxen.JaxenCompiled.<init>(JaxenCompiled.java:152) at org.jdom2.xpath.jaxen.JaxenXPathFactory.compile(JaxenXPathFactory.java:82) at org.jdom2.xpath.XPathFactory.compile(XPathFactory.java:270) at com.grid_tools.products.datamasker.xml.XmlSaxParser.processXML(XmlSaxParser.java:391) at com.grid_tools.products.datamasker.resolver.ResolverFunction.resolveFunction(ResolverFunction.java:340) at com.grid_tools.products.datamasker.resolver.ResolverFunction.resolveFunction(ResolverFunction.java:312) at com.grid_tools.products.datamasker.resolver.ResolverFunction.resolveFunction(ResolverFunction.java:162) at com.grid_tools.products.datamasker.SQLUpdate.batchPreparedMasking(SQLUpdate.java:4370) at com.grid_tools.products.datamasker.SQLUpdate.run(SQLUpdate.java:5608) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:750) Caused by: org.jaxen.XPathSyntaxException: Unexpected 'm=2' at org.jaxen.BaseXPath.<init>(BaseXPath.java:121) at org.jaxen.BaseXPath.<init>(BaseXPath.java:142) at org.jdom2.xpath.jaxen.JaxenCompiled.<init>(JaxenCompiled.java:150) ... 11 more Caused by: class org.jaxen.saxpath.XPathSyntaxException: /row/c150 m=2: 10: Unexpected 'm=2' at org.jaxen.saxpath.base.XPathReader.createSyntaxException(XPathReader.java:1085) at org.jaxen.saxpath.base.XPathReader.parse(XPathReader.java:106) at org.jaxen.BaseXPath.<init>(BaseXPath.java:116) ... 13 more , java.lang.IllegalArgumentException: Unable to compile '/row/c150 m=2'. See Cause. at org.jdom2.xpath.jaxen.JaxenCompiled.<init>(JaxenCompiled.java:152) at org.jdom2.xpath.jaxen.JaxenXPathFactory.compile(JaxenXPathFactory.java:82) at org.jdom2.xpath.XPathFactory.compile(XPathFactory.java:270) at com.grid_tools.products.datamasker.xml.XmlSaxParser.processXML(XmlSaxParser.java:391) at com.grid_tools.products.datamasker.resolver.ResolverFunction.resolveFunction(ResolverFunction.java:340) at com.grid_tools.products.datamasker.resolver.ResolverFunction.resolveFunction(ResolverFunction.java:312) at com.grid_tools.products.datamasker.resolver.ResolverFunction.resolveFunction(ResolverFunction.java:162) at com.grid_tools.products.datamasker.SQLUpdate.batchPreparedMasking(SQLUpdate.java:4370) at com.grid_tools.products.datamasker.SQLUpdate.run(SQLUpdate.java:5608) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:750) Caused by: org.jaxen.XPathSyntaxException: Unexpected 'm=2' at org.jaxen.BaseXPath.<init>(BaseXPath.java:121) at org.jaxen.BaseXPath.<init>(BaseXPath.java:142) at org.jdom2.xpath.jaxen.JaxenCompiled.<init>(JaxenCompiled.java:150) ... 11 more Caused by: class org.jaxen.saxpath.XPathSyntaxException: /row/c150 m=2: 10: Unexpected 'm=2' at org.jaxen.saxpath.base.XPathReader.createSyntaxException(XPathReader.java:1085) at org.jaxen.saxpath.base.XPathReader.parse(XPathReader.java:106) at org.jaxen.BaseXPath.<init>(BaseXPath.java:116) ... 13 more , java.lang.IllegalArgumentException: Unable to compile '/row/c150 m=2'. See Cause. at org.jdom2.xpath.jaxen.JaxenCompiled.<init>(JaxenCompiled.java:152) at org.jdom2.xpath.jaxen.JaxenXPathFactory.compile(JaxenXPathFactory.java:82) at org.jdom2.xpath.XPathFactory.compile(XPathFactory.java:270) at com.grid_tools.products.datamasker.xml.XmlSaxParser.processXML(XmlSaxParser.java:391) at com.grid_tools.products.datamasker.resolver.ResolverFunction.resolveFunction(ResolverFunction.java:340) at com.grid_tools.products.datamasker.resolver.ResolverFunction.resolveFunction(ResolverFunction.java:312) at com.grid_tools.products.datamasker.resolver.ResolverFunction.resolveFunction(ResolverFunction.java:162) at com.grid_tools.products.datamasker.SQLUpdate.batchPreparedMasking(SQLUpdate.java:4370) at com.grid_tools.products.datamasker.SQLUpdate.run(SQLUpdate.java:5608) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:750) Caused by: org.jaxen.XPathSyntaxException: Unexpected 'm=2' at org.jaxen.BaseXPath.<init>(BaseXPath.java:121) at org.jaxen.BaseXPath.<init>(BaseXPath.java:142) at org.jdom2.xpath.jaxen.JaxenCompiled.<init>(JaxenCompiled.java:150) ... 11 more Caused by: class org.jaxen.saxpath.XPathSyntaxException: /row/c150 m=2: 10: Unexpected 'm=2' at org.jaxen.saxpath.base.XPathReader.createSyntaxException(XPathReader.java:1085) at org.jaxen.saxpath.base.XPathReader.parse(XPathReader.java:106) at org.jaxen.BaseXPath.<init>(BaseXPath.java:116) ... 13 more , java.lang.IllegalArgumentException: Unable to compile '/row/c150 m=2'. See Cause. at org.jdom2.xpath.jaxen.JaxenCompiled.<init>(JaxenCompiled.java:152) at org.jdom2.xpath.jaxen.JaxenXPathFactory.compile(JaxenXPathFactory.java:82) at org.jdom2.xpath.XPathFactory.compile(XPathFactory.java:270) at com.grid_tools.products.datamasker.xml.XmlSaxParser.processXML(XmlSaxParser.java:391) at com.grid_tools.products.datamasker.resolver.ResolverFunction.resolveFunction(ResolverFunction.java:340) at com.grid_tools.products.datamasker.resolver.ResolverFunction.resolveFunction(ResolverFunction.java:312) at com.grid_tools.products.datamasker.resolver.ResolverFunction.resolveFunction(ResolverFunction.java:162) at com.grid_tools.products.datamasker.SQLUpdate.batchPreparedMasking(SQLUpdate.java:4370) at com.grid_tools.products.datamasker.SQLUpdate.run(SQLUpdate.java:5608) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:750) Caused by: org.jaxen.XPathSyntaxException: Unexpected 'm=2' at org.jaxen.BaseXPath.<init>(BaseXPath.java:121) at org.jaxen.BaseXPath.<init>(BaseXPath.java:142) at org.jdom2.xpath.jaxen.JaxenCompiled.<init>(JaxenCompiled.java:150) ... 11 more Caused by: class org.jaxen.saxpath.XPathSyntaxException: /row/c150 m=2: 10: Unexpected 'm=2' at org.jaxen.saxpath.base.XPathReader.createSyntaxException(XPathReader.java:1085) at org.jaxen.saxpath.base.XPathReader.parse(XPathReader.java:106) at org.jaxen.BaseXPath.<init>
Release : 4.10
Please use below xpath to mask these repeated xml elements.
<c150 m="2">20220419</c150> -> /row/c150[2]
<c150 m="3">20220430</c150> -> /row/c150[3]
<c150 m="4">20220503</c150> -> /row/c150[4]
Since the xpath is passed incorrectly in FDM, you are getting an error.