XSLT 从 XML 中的数字中删除字符串和特殊字符



在 xslt 转换期间,我试图从客户编号中清除字符串和特殊,但它不起作用。我需要从数字中删除 c: 或 s: 。谢谢:)

XML 文件 1

<Data>
 <Request>
   <CustNo>c:222</CustNo>
 </Request>
</Data>

XML 文件 2

<Data>
 <Request>
   <CustNo>s:333</CustNo>
 </Request>
</Data>

XSLT

        <?xml version="1.0" encoding="iso-8859-1" ?>
        <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2005/xpath-functions" xmlns:xdt="http://www.w3.org/2005/xpath-datatypes" >
            <xsl:output method="xml" version="1.0" indent="yes"/>
            <xsl:template match="Request" >
                <TestPayment>
                    <Transactions>
                        <Transaction  custno="{CustNo}" >           
                        </Transaction>
                    </Transactions>
                </TestPayment>
            </xsl:template>
             <xsl:template match="Request/CustNo">
                    <xsl:value-of select="regex=(^c:[a-zA-Z0-9]*$,^s:[a-zA-Z0-9]*$ )"/>
             </xsl:template>
        </xsl:template>
        </xsl:stylesheet>

XML 文件 1 的结果:

    <?xml version="1.0" encoding="utf-8"?>
    <TestPayment>
      <Transactions>
        <Transaction custno="222">
        </Transaction>
      </Transactions>
    </TestPayment>

XML 文件 2 的结果:

    <?xml version="1.0" encoding="utf-8"?>
    <TestPayment>
      <Transactions>
        <Transaction custno="333">
        </Transaction>
      </Transactions>
    </TestPayment>

在 XSLT 2.0 中,您可以简单地执行以下操作:

replace(CustNo, 'D', '')

以删除任何非数字字符。

即使在 XSLT 1.0 中,您也可以使用:

substring-after(CustNo, ':')

以适应您的两个示例。

你为什么不尝试双翻译函数呢?

<Transaction custno="{translate(CustNo, translate(CustNo, '0123456789', ''), '')}" >

相关内容

  • 没有找到相关文章