Biztalk Map节点验证

时间:2014-03-05 12:07:18

标签: xslt xslt-1.0 biztalk biztalk2006r2 biztalk-mapper

我将家庭,工作和移动号码节点从源架构映射到目标架构中的家庭,工作和移动节点。

我需要确保数据与目标模式匹配(没有空格,标点符号,前导零,匹配[+0][0-9]*。这可以通过XSLT实现吗?

来源

<HTelephone>01656 123 123</HTelephone>
<WTelephone>01656-123-123</WTelephone>
<MTelephone>+447656 123 123</MTelephone>

目标

<HTelephone>01656123123</HTelephone>
<WTelephone>01656123123</WTelephone>
<MTelephone>+447656123123</MTelephone>

当前内联XSLT呼叫模板

<xsl:template name="MNo" xmlns:msxsl="urn:schemas-microsoft-com:xslt" >
 <xsl:param name="inTelNo"/>
 <xsl:element name="MTelephone" >
     <xsl:value-of select="concat('+', translate($inTelNo, translate($inTelNo,'0123456789',''), ''))"/>
 </xsl:element>

我们需要验证第一个字符是否允许0或+,任何想法?

1 个答案:

答案 0 :(得分:0)

假设输入正确(使用格式良好的XML的根元素),请使用concat()translate函数来更改字符串。

<强>输入

<?xml version="1.0" encoding="utf-8"?>
<root>
    <HTelephone>01656 123 123</HTelephone>
    <WTelephone>01656 123 123</WTelephone>
    <MTelephone>01656 123 123</MTelephone>
</root>

<强>样式表

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >

    <xsl:output method="xml" version="1.0" encoding="utf-8" indent="yes"/>
    <xsl:strip-space elements="*"/>

    <xsl:template match="/root">
        <xsl:copy>
            <xsl:apply-templates/>
        </xsl:copy> 
    </xsl:template>

    <xsl:template match="root/*">
        <xsl:copy>
            <xsl:value-of select="concat('+',translate(.,' ',''))"/>
        </xsl:copy>
    </xsl:template>

</xsl:stylesheet>

<强>输出

<?xml version="1.0" encoding="utf-8"?>
<root>
   <HTelephone>+01656123123</HTelephone>
   <WTelephone>+01656123123</WTelephone>
   <MTelephone>+01656123123</MTelephone>
</root>