2013-02-20 2 views
7
<events> 
    <main> 
     <action>modification</action> 
     <subAction>weights</subAction> 
    </main> 
</events> 
<SeriesSet> 
    <Series id="Price_0"> 
     <seriesBodies> 
      <SeriesBody> 
       <DataSeriesBodyType>Do Not Copy</DataSeriesBodyType> 
      </SeriesBody> 
     </SeriesBodies> 
    </Series> 
</SeriesSet> 

Как скопировать все XML и исключить элемент DataSeriesBodyTypeXSLT Скопируйте все узлы, кроме 1 элемент

+1

[? Что вы пробовали] (http://whathaveyoutried.com) –

ответ

17

Вы просто должны использовать шаблон идентичности (как вы использовали), а затем использовать соответствующий шаблон DataSeriesBodyType который ничего не делает.

Код будет:

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


    <xsl:output method="xml" encoding="utf-8" indent="yes"/> 

    <!-- Identity template : copy all text nodes, elements and attributes --> 
    <xsl:template match="@*|node()"> 
     <xsl:copy> 
      <xsl:apply-templates select="@*|node()" /> 
     </xsl:copy> 
    </xsl:template> 

    <!-- When matching DataSeriesBodyType: do nothing --> 
    <xsl:template match="DataSeriesBodyType" /> 

</xsl:stylesheet> 

Если вы хотите, чтобы нормализовать выходные, чтобы удалить пустые текстовые данные узлы, а затем добавить к предыдущей таблицы стилей следующий шаблон:

<xsl:template match="text()"> 
    <xsl:value-of select="normalize-space()" /> 
</xsl:template> 
+0

У меня есть попробовал это, но возвращал элемент без значения. Я не хочу, чтобы элемент отображался вообще. – user2092096

+0

XML, который вы разместили, не является полным XML, и в нем есть некоторые ошибки (например, seriesBody с закрывающим тегом SeriesBody), поэтому я проверил свой код с исправленной версией вашего XML (что, возможно, не то же самое). Убедитесь, что имя, если match = "DataSeriesBodyType" соответствует точно (включая строчные и строчные буквы), а если он не работает, отправьте полный XML. –

+0

И какой элемент вы пытаетесь исключить DataSeriesBodyType или SeriesBodyType? Просто замените на значение атрибута соответствия с именем XML-элемента, которое должно быть исключено. –

4

Существует также отличная запись на XMLPlease.com об этих вопросах. Он содержит много примеров для исключения элементов, атрибутов, переименование элементов и т.д. и т.п.

Смотреть следующий веб-сайт: http://www.xmlplease.com/xsltidentity

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