XSL Transform: выберите блок, не выбирая правильную переменную
Я работаю над документом xsl, который продолжает терять строки адреса. Я исправил это, но, кажется, сломал его, пытаясь исправить проблему, связанную с исправлением. Вот пример из моего кода:
,
<addressLine2>
<xsl:choose>
<xsl:when test="number($houseNameNumberNumericCharacterLength) >= 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) >= 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>