检查<xsl:value-of> </xsl:value-of>中的条件

时间:2012-07-03 19:33:17

标签: xml xslt xslt-1.0 xslt-2.0

如果我定义的变量不等于特定的字符串,我想取值。在这里,我想把变量'name','address'和'city'的值分别用“ - ”分隔,如果它们分别不等于'Tom','Street'和'CityStreet'。这可能吗?

xsl:attribute name='person'>
        <xsl:value-of separator="-" select=
    "($name, $address,
     $city)" />
        </xsl:attribute> 

2 个答案:

答案 0 :(得分:1)

您可以在变量上使用谓词:

<xsl:attribute name='person'>
    <xsl:value-of separator="-" select="($name[.!='Tom'], $address[.!='Street'],$city[.!='CityStreet'])"/>          
</xsl:attribute>

或者如果你不想要一个空属性:

<xsl:if test="$name != 'Tom' and 
    $address != 'Street' and 
    $city != 'CityStreet'">
    <xsl:attribute name="person">
        <xsl:value-of separator="-" select="($name[.!='Tom'], $address[.!='Street'],$city[.!='CityStreet'])"/>
    </xsl:attribute>
</xsl:if>

答案 1 :(得分:1)

使用

<xsl:if test=
  "not($name eq 'Tom' and $address eq 'Street' and $city eq 'CityStreet')">
  <xsl:attribute name="person">
    <xsl:value-of separator="-" select=
      "($name[. ne 'Tom'], $address[. ne 'Street'], $city[. ne 'CityStreet'])"/>
  </xsl:attribute>
</xsl:if>