2016-11-23 3 views
0

XML 문서를 변환하고 xsl : stylesheet (teppic 덕분에)를 사용하여 노드를 제거하는 데 SAX를 사용하고 있습니다. 문서를 편집하는 방법을 이해하기 위해 XML에 익숙하지 않습니다.XML 계층 구조에서 특정 노드 찾기 JAX

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의 모든 노드를 점점 완벽을 삭제합니다. 이제 유형의 노드를 검색해야합니다. 콜 아웃 및 VectorNode 값의 자식 중 하나가 TypeWinText와 같은지 확인하고 전체 콜 아웃 노드를 삭제해야합니다. 그렇지 않다면 아무 것도하지 마십시오.

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 속성 값 "= x 해당 x 값에 대해 각 설명 선을 검색해야하며, 참이면 전체 설명 선 노드를 제거해야합니다. 나는 너의 모범을 진짜 빨리 줄 것이다! – Torewin