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>
Как это достичь?
Благодаря Martin. Я пробовал это, и он работает во втором сценарии, где имя файла просто «другое», но не выполняется для первого сценария, где существует более одного типа файла; «другой» все еще появляется. Любая идея почему? – kayfun
Он отлично работает для меня по адресу http://xsltransform.net/jyRYYiH, после исправления вашего образца ввода, чтобы быть хорошо сформированным XML. Измените свой вопрос, чтобы предоставить минимальный, но полный и хорошо сформированный образец ввода XML, для которого это предложение терпит неудачу, а также информацию об используемом XSLT-процессоре. –