2013-02-20 14 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をコピーして、DataSeriesBodyType要素にXSLTをコピーし、その後、すべての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がclosingByy SeriesBodyの場合)。修正されたバージョンのXML(おそらく同じではない)で自分のコードを確認しました。 match = "DataSeriesBodyType"が正確に一致するかどうか(大文字と小文字が含まれているかどうか)を確認し、正しく機能していない場合は完全なXMLを投稿してください。 –

+0

DataSeriesBodyTypeまたはSeriesBodyTypeを除外しようとしているのはどの要素ですか? のmatch属性値を、除外するXML要素名に置き換えてください。 –

4

もありますこの質問についてはXMLPlease.comの素晴らしい記事です。これは、要素を排除するための多くの例が含まれている属性などの要素の名前を変更するなど

は、次のWebサイトを参照してください。 http://www.xmlplease.com/xsltidentity

関連する問題