2016-11-23 6 views
0

私はSAXを使ってXML文書を変換し、xsl:stylesheet(teppicのおかげで)を使ってノードを削除しています。ドキュメントを編集する方法を理解するためにXMLに精通していません。xml階層の特定のノードを見つけるJAVA

のxsl:

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

<!-- Strip IMFile elements --> 
<xsl:template match="IMFile"/> 

これはIMFileのすべてのノードを取得し、完全に削除されます。 Calloutをタイプし、VectorNodeの値の子がTypeWinTextと等しいかどうかを確認し、そうであればCalloutノード全体を削除する必要があります。そうでない場合は何もしないでください。

Project_Data Version="8.00"> 
<CSMLData> 
<GoProject id="1" version="3.0" > <Project id="2" editRate="30/1" version="3.0" > 
<Timeline id="6" > 
<GenericMixer id="10" name="Unified Mixer"> 
<Tracks> 
<GenericTrack id="11" > 
<Medias> 
<Callout id="91" start="55" duration="20" scalar="1/1" mediaStart="25/1" mediaDuration="20/1" > 
<Attributes> 
<Attribute id="130" name="vectorNode"> 
<VectorNode id="131" kind="TypeWinSVG" > </VectorNode> 

答えて

0

によってテンプレートを適用することができます

<xsl:template match="Keyframes"> 
<xsl:choose> 
     <xsl:when test="Keyframe/@value='x'"> 
       //do what you want for example 
      <xsl:value-of select="Keyframe/@value> 
       // this will print "x" 
     </xsl:when> 
</xsl:choose> 
</xsl:template> 

:ノードがあなたのような何かができるxの属性を持っている場合

を検索するには特定の条件で:

<xsl:template match="Callout[descendant::VectorNode/@kind='TypeWinText']"/> 
+0

私はそれを感謝します!魅力的な作品! – Torewin

0

吹き出しノードはどのような位置にありますか、より具体的になりますか?ベースコールアウトを削除するには、別の空のテンプレートを追加することを検討し

<xsl:apply-templates select="Keyframes"/> 
+0

GoProject/Project/Tiメリイン/ GenericMixer/Tracks/GenericTrack/Medias/Callout/Attributes/Attribute/VectorNode < - 属性値を取得する= x x値の各吹き出しを検索する必要があり、trueの場合は吹き出しノード全体を削除する必要があります。私はあなたの事例をすばやく実際に与えるでしょう! – Torewin

関連する問題