2017-01-27 3 views
0

私は下の構造のXMLファイルをこれとかなり似ている別のものに変換したいと思います。それぞれの要素名が変更されたとします(つまりA..F-> ANew..FNew)。非常に大きなファイルを処理する必要があるので、Saxon-EE v9.7を使用してXSLT 3.0で導入されたストリーミング可能なモードでやりたいと思います。私はそれを部分的に成功させることはできますが(ルート/ヘッドセクション)、私はSaxon-EEがストリーミング可能なルールを満たせないため、文書全体を完全に解決するソリューションを考え出すことができませんでした。 Saxon-EE v9.7でストリーミングモードで動作します。ストリーミング可能なXSLT変換を作成する方法は?

<Root> 
    <Head> 
    <A/> 
    <B/> 
    </Head> 
    <Grp> 
    <D/> 
    <E/> 
    <SubGrp> 
     <E/> 
     <F/> 
    </SubGrp> 
    <SubGrp> 
     <E/> 
     <F/> 
    </SubGrp> 
    </Grp> 
    <Grp> 
    <D/> 
    <E/> 
    <SubGrp> 
     <E/> 
     <F/> 
    </SubGrp> 
    <SubGrp> 
     <E/> 
     <F/> 
    </SubGrp> 
    </Grp> 
</Root> 
+0

ストリーミング変換がうまく動作するのは非常に難しいことに感謝します。しかし、SOフォーマットで進める最善の方法は、明確で再現性のある方法で失敗した試みをあなたに示すことです。そして、あなたがその特定の障害を乗り越えるのを手助けすることができます。また、Saxon-EEライセンスを購入した場合は、Saxonicaへの直接的なサポートルートがあります:StackOverflowを使用しても構いませんが、サクソニカ独自のサポートチャネルを使用している場合は、 。 –

答えて

0

あなたが出発点として

<xsl:mode streamable="yes" on-no-match="shallow-copy"/> 

を使用する場合は、あなたが必要とするすべては、いくつかの要素の名前を変更した場合、あなたはその例をやってテンプレートを追加することができます

<xsl:template match="A"> 
    <ANew> 
    <xsl:apply-templates/> 
    </ANew> 
</xsl:template> 

<xsl:template match="F"> 
    <FNew> 
    <xsl:apply-templates/> 
    </FNew> 
</xsl:template> 

問題が解決しない場合は、XSLTとSaxonが提供する正確なエラーメッセージを一緒に表示してください。

関連する問題