2016-03-04 95 views
0

我的目標就是用這個XSLT樣式表刪除整個LoanSecondaryStatus節點時StatusDate是1900-01-01T00:00:00,但除此之外,保留節點時,它是其他任何日期。刪除XML節點基於屬性值與XSLT

我有下面的XML:

<Loans> 
    <Loan> 
     <LoanSecondaryStatus> 
      <StatusName>Application Started</StatusName> 
      <StatusDate>1900-01-01T00:00:00</StatusDate> 
     </LoanSecondaryStatus> 
     <LoanSecondaryStatus> 
      <StatusName>Application Finished</StatusName> 
      <StatusDate>2016-03-02T00:00:00</StatusDate> 
     </LoanSecondaryStatus> 
    </Loan> 
</Loans> 

這裏是我使用的嘗試和刪除LoanSecondaryStatus節點的XSLT:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 

    <xsl:output indent="yes" /> 

    <xsl:template match="@*|node()"> 
     <xsl:copy> 
      <xsl:apply-templates select="@*|node()"/> 
     </xsl:copy> 
    </xsl:template> 

    <xsl:template match="/LoanSecondaryStatus[not(StatusDate='1900-01-01T00:00:00')]"/> 
</xsl:stylesheet> 

回答

1

刪除整個LoanSecondaryStatus節點時,StatusDate是 1900-01-01T00:00:00

我相信你的第二個模板必須是:

<xsl:template match="LoanSecondaryStatus[StatusDate='1900-01-01T00:00:00']"/> 
+0

燁奏效。如果沒有「不」,該如何運作? – dc922

+1

@ dc922你的第一個模板是[恆等變換(https://en.wikipedia.org/wiki/Identity_transform)模板。它按原樣複製*。第二個模板提供了一個例外。它與您想要移除的節點相匹配並且不輸出任何內容。 –