繁体   English   中英

XSL转换:选择块而不选择正确的变量

[英]XSL Transform : Choose block not choosing right variable

我正在处理一个xsl文档,该文档会不断丢失地址行。 我已修复它,但似乎已无法解决与修复相关的问题。 这是我的代码示例:

  <addressLine2>
        <xsl:choose>
            <xsl:when test="number($houseNameNumberNumericCharacterLength) &gt;= number($houseNameNumberNonNumericCharacterLength)">
                <xsl:value-of select="mad:Address/mad:AddressLineTwo"/>
            </xsl:when>
            <xsl:otherwise>
                <xsl:value-of select="$addressLineOne"/>
            </xsl:otherwise>                
        </xsl:choose>   
  </addressLine2>
  <addressLine3>
        <xsl:choose>
            <xsl:when test="addressLine2 != '$addressLineOne'">
                <xsl:value-of select="$addressLineThree"/>
            </xsl:when>
            <xsl:otherwise>
                <xsl:value-of select="$addressLineTwo"/>
            </xsl:otherwise>
        </xsl:choose>
  </addressLine3>
  <addressLine4>
        <xsl:choose>
            <xsl:when test="addressLine3 = ($addressLineTwo)">
                <xsl:value-of select="$addressLineThree"/>
            </xsl:when>
            <xsl:otherwise>
                <xsl:value-of select="mad:Address/mad:AddressLineFour"/>
            </xsl:otherwise>
        </xsl:choose>
  </addressLine4>

您可以假设AddressLine2始终映射到变量$ addressLineOne。 AddressLine2工作正常。 我遇到的问题是地址行3。我测试

when addressLine2 = $addressLineOnechoose value $addressLineThree

但是地址如下所示:

Line1: (mapped from houseNumberHouseName)
Line2: $AddressLineOne
Line3: $AddressLineThree
Line4: /

我需要的是:

Line1: (mapped from houseNumberHouseName)
Line2: $AddressLineOne
Line3: $AddressLineTwo
Line4: $AddressLineThree

并且当未从houseNumberHouseName映射AddressLine1时:

Line1: $AddressLineOne
Line2: $AddressLineTwo
Line3: $AddressLineThree
Line4: /

有人可以指出为什么我的选择不起作用吗?

谢谢

也许您可以这样简化:

<xsl:choose>
    <xsl:when test="number($houseNameNumberNumericCharacterLength) &gt;= number($houseNameNumberNonNumericCharacterLength)">
        <addressLine2><xsl:value-of select="mad:Address/mad:AddressLineTwo"/></addressLine2>
        <addressLine3><xsl:value-of select="$addressLineThree"/></addressLine3>
        <addressLine4><xsl:value-of select="mad:Address/mad:AddressLineFour"/></addressLine4>
    </xsl:when>
    <xsl:otherwise>
        <addressLine2><xsl:value-of select="$addressLineOne"/></addressLine2>
        <addressLine3><xsl:value-of select="$addressLineTwo"/></addressLine3>
        <addressLine4><xsl:value-of select="$addressLineThree"/></addressLine4>
    </xsl:otherwise>                
</xsl:choose>  

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM