2017-02-01 10 views
0

親の属性に合致する要素の属性に基づいて要素を削除し、属性値に基づいて、親の属性と一致しMUSXSLT 1.0:XSLT 1.0で、私はXMLの要素を維持し、他の人を削除したい

私は属性Journeeが親属性Dateと一致するところにDONNEES Elementsだけを残したいと思います。 = '2015-09-17T06:00:00'のようなものを置くことはできません。ここで

は、私がここで
<Root> 
<JOURNEE Date="2015-09-17T06:00:00"> 
<ID> 
<DONNEES Journee="2015-09-17T06:00:00"/> 
</ID> 
</JOURNEE> 
<JOURNEE Date="2015-09-18T06:00:00"> 
<ID> 
<DONNEES Journee="2015-09-18T06:00:00"/> 
</ID> 
</JOURNEE> 
<JOURNEE Date="2015-09-19T06:00:00"> 
<ID> 
<DONNEES Journee="2015-09-19T06:00:00"/> 
</ID> 
</JOURNEE> 
</Root> 

をしたい、私は今のところ持っているXSLT出力XMLの例ここで

<?xml version="1.0"?> 
<Root> 
    <JOURNEE Date="2015-09-17T06:00:00"> 
     <ID> 
      <DONNEES Journee="2015-09-17T06:00:00"/> 
      <DONNEES Journee="2015-09-18T06:00:00"/> 
      <DONNEES Journee="2015-09-19T06:00:00"/> 
     </ID> 
    </JOURNEE> 
    <JOURNEE Date="2015-09-18T06:00:00"> 
     <ID> 
      <DONNEES Journee="2015-09-17T06:00:00"/> 
      <DONNEES Journee="2015-09-18T06:00:00"/> 
      <DONNEES Journee="2015-09-19T06:00:00"/> 
     </ID> 
    </JOURNEE> 
    <JOURNEE Date="2015-09-19T06:00:00"> 
     <ID> 
      <DONNEES Journee="2015-09-17T06:00:00"/> 
      <DONNEES Journee="2015-09-18T06:00:00"/> 
      <DONNEES Journee="2015-09-19T06:00:00"/> 
     </ID> 
    </JOURNEE> 
</Root> 

されていることは、それがすべての件のデータを削除して動作しません

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

<xsl:template match="/*/*/*DONNEES[(@Journee != /*/JOURNEE/@Date)]" /> 

これを試しても機能しますが、このようなデータはありません

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

<xsl:template match="/*/*/*DONNEES[(@Journee != '2015-09-17T06:00:00')]" /> 

いただきありがとうございます:)

答えて

0

あなたは先祖日

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> 
    <xsl:output method="xml" indent="yes" /> 
    <xsl:strip-space elements="*" /> 

    <xsl:template match="DONNEES[@Journee != ../../@Date]" /> 

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

このXSLTを試して得るためにあなたの式に相対パスを使用する必要があり、多くはそれが動作感謝を! !! – CRT

関連する問題