XSL-从字符串中删除文本块



我有一个关于xslt的问题。在我的输入中,我有如下字符串:

<dxrCardNumber2>[EBERG615] [104699] [104913]</dxrCardNumber2>

如果括号中包含一个字母,我必须删除所有括号和括号之间的值。

结果应该是:

=> <dxrCardNumber2>104699 104913</dxrCardNumber2>

我必须删除的数据的位置是随机的。我尝试了标记化,然后我可以过滤掉不相关的条目。但最后,我遇到了将所有条目重新组合成一个字符串的问题。

假设您可以使用XSLT2.0或更高版本,您可以执行以下操作:

<xsl:template match="dxrCardNumber2">
<xsl:copy>
<xsl:value-of select="tokenize(translate(., '[]', ''), ' ')[matches(., '^d+$')]"/>
</xsl:copy>
</xsl:template>
<xsl:template match="dxrCardNumber2">
<xsl:analyze-string select="." regex="[([A-Z0-9]+)]s+[([0-9]+)]s+[([0-9]+)]" flags="i">
<xsl:matching-substring>
<dxrCardNumber2><xsl:value-of select="concat(regex-group(2),' ')"/>
<xsl:value-of select="regex-group(3)"/></dxrCardNumber2>
</xsl:matching-substring>
<xsl:non-matching-substring>
<xsl:value-of select="."/>
</xsl:non-matching-substring>
</xsl:analyze-string>        
</xsl:template>

最新更新