2016-03-04 2 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> 

А вот XSLT, я использую, чтобы попытаться удалить узел LoanSecondaryStatus:

<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 Ваш первый шаблон - это шаблон [identity transform] (https://en.wikipedia.org/wiki/Identity_transform). Он копирует все *, как есть *. Второй шаблон предоставляет исключение. Он соответствует узлу, который вы хотите удалить, и ничего не выводит. –

Смежные вопросы