2014-02-07 3 views
3

datafile.xml을 호출하는 somefile.xslt가 주어지면 somefile에서 호출하지 않는 datafile.xml의 노드 섹션 보고서를 출력하는 스크립트가 존재합니까? .xslt?XSLT와 XML 데이터 소스 사이에서 사용하지 않는 요소를 결정하는 스크립트

분명히 각 파일을 시각적으로 검사하여 분석의 기초로 사용할 수는 있지만 자동화 된 방법을 찾고 있습니다.

<xsl:for-each select="//somenode/somesubnode/@attribute"> 

하고 XML 데이터 소스가 somenode/somesubnode 데이터 구조를 포함 할 것으로 예상된다 :

예를 들어, 내 XSLT 같은 XPath를 포함하고 있습니다. 그러나 someothernode 데이터 구조가 XSLT에서 루트 요소 또는 xpath라는 자식이 아닌 경우 "사용되지 않는 노드"보고서의 일부 여야합니다.

+1

xslt의 복잡한 점은 무엇입니까? 어떤 유형의 xpath 표현식을 사용 하시겠습니까? xslt 매개 변수 또는 xslt 확장 기능을 허용합니까? xslt 1.0 또는 2.0? –

+0

확장 기능을 사용하지 않는 XSLT 1.0 –

답변

1

끌어 오기 방식 (xsl:for-each) 대신 밀어 넣기 방식()을 사용하는 경우 다른 서식 파일과 일치하지 않는 요소를 "잡아 먹는"우선 순위가 낮은 템플릿을 가질 수 있습니다. 그것은 "사용하지 않는"수표보다는 "비교할 수없는"수표의 더 많은 것입니다.

기본 예 ...

XML 입력

<doc> 
    <foo> 
     <bar>bar text</bar> 
    </foo> 
    <foo2> 
     <bar>more bar text</bar> 
    </foo2> 
</doc> 

XSLT 1.0

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

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

    <xsl:template match="doc|foo|bar"> 
     <xsl:call-template name="ident"/> 
    </xsl:template> 

    <xsl:template match="*"> 
     <xsl:processing-instruction name="unused-element"> 
      <xsl:value-of select="name()"/> 
     </xsl:processing-instruction> 
     <xsl:call-template name="ident"/> 
    </xsl:template> 

</xsl:stylesheet> 

XML 출력

<doc> 
    <foo> 
     <bar>bar text</bar> 
    </foo> 
    <?unused-element foo2?><foo2> 
     <bar>more bar text</bar> 
    </foo2> 
</doc> 
+0

Daniel에게 감사드립니다. 마침내이 프로젝트로 돌아가서 오늘 이것을 확인하고 있습니다. 내가 알려 주마. –

+0

Daniel, 내 디버그 전략에서 예제를 구현하는 방법을 결정하려고합니다. 각 xslt에 footer include로 넣고 DOM 검사기로 끌 수있는 숨겨진 div에 포맷 하시겠습니까? –

관련 문제