XSL Transform: выберите блок, не выбирая правильную переменную

Я работаю над документом 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 = $addressLineOne затем choose value $addressLineThree

Но адрес получается так:

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

Что мне нужно это:

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

и когда AddressLine1 не отображается из houseNumberHouseName:

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

Может кто-нибудь, пожалуйста, указать, почему мой выбор не работает?

Спасибо

1 ответ

Решение

Возможно, вы можете упростить это так:

<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>  
Другие вопросы по тегам