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>
我有一个关于 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>