2016-06-10 3 views
0

У меня есть этот XML-файл, мне нужно удалить элемент ContentText с атрибутом languageCode = "FR", если элемент ContentText с атрибутом languageCode = "EN" существует, остальное сохранит французский текст ,XSLT Удалить узел на основе атрибута другого узла

Текущий XML:

<MaterialByElementsResponse_sync> 
    <Material> 
    <Detail> 
     <ContentText languageCode="FR">Inscription</ContentText> 
     <ContentText languageCode="EN">Subscription</ContentText> 
    </Detail> 
    </Material> 
</MaterialByElementsResponse_sync> 

Желаемая Выход:

<MaterialByElementsResponse_sync> 
    <Material> 
    <Detail> 
     <ContentText languageCode="EN">Subscription</ContentText> 
    </Detail> 
    </Material> 
</MaterialByElementsResponse_sync> 

Я попробовал этот XSLT, но она всегда удаляет текст FR, даже если текст EN не существует:

<xsl:template match="node()|@*"> 

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

    </xsl:template> 
    <xsl:template match="ContentText[@languageCode='FR']"/> 
</xsl:stylesheet> 

Помните, что если текст отсутствует на английском языке, французский текст не следует удалять.

спасибо.

+0

Я добавил свой текущий XSLT к главной теме. Вы можете взглянуть. Спасибо. –

ответ

1

Изменение:

<xsl:template match="ContentText[@languageCode='FR']"/> 

к:

<xsl:template match="ContentText[@languageCode='FR'][../ContentText[@languageCode='EN']]"/> 
Смежные вопросы