2016-01-13 5 views
0

У меня есть документы образца 2 XML, как показано нижеУдаление узла с помощью XSLT

<document> 

    <content name="filetype>other</content> 

    <content name="filetype>xml</content> 

</document> 




<document> 

    <content name="filetype>other</content> 

</document> 

Если тег содержание имеет тип файла, кроме «другого», я хочу, чтобы удалить «другой» тип файла. Таким образом, XML 2 будет оставаться как, так как он имеет только «другой» тип файла в то время как XML 1 становится

<document> 

    <content name="filetype>xml</content> 

</document> 

Я попробовал несколько подошел справиться с этим, но никто не похоже на работу. Ниже мой последний подход

<xsl:template match="content[@name='filetype']" mode="copy"> 


    <xsl:if test=".='other'"> 

     <xsl:variable name="filetypes" select="../content[@name='filetype']" /> 



<xsl:variable name="coun" select="count($filetypes)" /> 


<xsl:if test="coun = 1"> 

    <content name="filetype"> 
    other 
    </content> 

    </xsl:if> 


    </xsl:if> 


    <xsl:if test=".!='other'"> 

    <content name="filetype"> 

     <xsl:value-of select="." /> 

    </content> 

    </xsl:if> 

</xsl:template> 

Как это достичь?

ответ

2

Использование

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

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

<xsl:template match="document[content[@name = 'filetype'] != 'other']/content[@name = 'filetype' and . = 'other']"/> 

</xsl:stylesheet> 
+0

Благодаря Martin. Я пробовал это, и он работает во втором сценарии, где имя файла просто «другое», но не выполняется для первого сценария, где существует более одного типа файла; «другой» все еще появляется. Любая идея почему? – kayfun

+0

Он отлично работает для меня по адресу http://xsltransform.net/jyRYYiH, после исправления вашего образца ввода, чтобы быть хорошо сформированным XML. Измените свой вопрос, чтобы предоставить минимальный, но полный и хорошо сформированный образец ввода XML, для которого это предложение терпит неудачу, а также информацию об используемом XSLT-процессоре. –

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