2014-07-16 57 views
-1

我想從我的輸入xml中刪除某些標籤,並使用XSLT轉換爲所需的輸出xml。 這是我的XSLT多個字符串comarisons使用或在一個xslt條件如果條件

<xsl:param name="ID"/> 
<xsl:template match="/"> 

    <Table> 
     <xsl:for-each select="Apo/*"> 
     <xsl:variable name="target" select="name(.)" ></xsl:variable> 
     <xsl:if test="not($target = 'ApoID') or not($target = 'Instructions') or not($target = 'RouteSwitch')">     
    <Row>   
     <ApoID> 
      <xsl:value-of select="$ID"/> 
     </ApoID> 
     <AttributeName> 
      <xsl:value-of select="$target"/> 
     </AttributeName> 
     <AttributeValue> 
      <xsl:value-of select="."/> 
     </AttributeValue> 
     </Row> 
     </xsl:if> 
     </xsl:for-each> 
     </Table> 

    </xsl:template> 

當我使用這個它沒有過濾。但是,只使用一種條件時,它會被過濾掉。以下內容從我的輸入XML中刪除ApoID標籤,並給出預期的結果。

<xsl:param name="ID"/> 
    <xsl:template match="/"> 

    <Table> 
     <xsl:for-each select="Apo/*"> 
     <xsl:variable name="target" select="name(.)" ></xsl:variable> 
     <xsl:if test="not($target = 'ApoID') ">     
    <Row>   
     <ApoID> 
      <xsl:value-of select="$ID"/> 
     </ApoID> 
     <AttributeName> 
      <xsl:value-of select="$target"/> 
     </AttributeName> 
     <AttributeValue> 
      <xsl:value-of select="."/> 
     </AttributeValue> 
     </Row> 
     </xsl:if> 
     </xsl:for-each> 
     </Table> 

    </xsl:template> 

請幫我使用多字符串比較在XSLT如果條件

回答

0

測試

not($target = 'ApoID') or not($target = 'Instructions') or not($target = 'RouteSwitch') 

會爲$target每個值成功,因爲如果該值爲ApoID則不是Instructions,反之亦然。要測試值是你要麼需要使用and,而不是那些or或possiblities支架的沒有不同的看法

not($target = 'ApoID' or $target = 'Instructions' or $target = 'RouteSwitch')