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

XSL - Removing text blocks from string

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

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

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

结果应该是:

=> <dxrCardNumber2>104699 104913</dxrCardNumber2>

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

假设您可以使用 XSLT 2.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>