2015-04-20 2 views
0
<Document> 
    <NodeA>1</NodeA> 
    <NodeB>2</NodeB> 
    <ServiceNode>3</ServiceNode> 
    <NodeX>4</NodeX> 
</Document> 

Мне нужно удалить ServiceNode из XML выше, используя преобразование XSLT. Выходной сигнал преобразования должен быть:удалить узел из XML с помощью XSLT

<Document> 
    <NodeA>1</NodeA> 
    <NodeB>2</NodeB> 
    <NodeX>4</NodeX> 
</Document> 

Я попытался this solution и this solution и не получил ни один из них работать. Выходное значение всегда включало «исключенные» узлы. Что мне делать, чтобы заставить это работать?

+0

Является ли это верной копией вашего документа? Существуют ли какие-либо _namespaces_ в вашем фактическом документе? _How_ вы пробовали решения, с которыми вы связаны? Пожалуйста, покажите код, который вы использовали. –

ответ

1

Вы не указали, как выглядит ваш XSL. Поэтому, я думаю, что в этом есть еще одна ошибка ?!

Используя этот код, вы можете удалить <ServiceNode>, заполнив пустой шаблон.

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output method="xml" indent="yes"/> 

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

    <xsl:template match="ServiceNode"/> 
</xsl:stylesheet> 
+0

Просьба показать правильное _identity transform_, соответствующее '@ * | node()'. Вы не хотели бы исключать 'comment()' и 'processing-instruction()'. –

+0

Вы правы: это не обязательно для фактического ввода, но лучший способ сделать это – leu

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