2016-06-16 20 views
0

2つのxslファイルを1つにまとめる必要があります。私は試みたが、私はそうしていない。これらのxslファイルはどちらも別々に正常に動作しますが、それらを組み合わせるとうまく動作しません。私はxslの専門家ではない。ここで 2つのxmlファイルを結合する

は、最初のXSLファイルです:

<xsl:variable name="products" select="document('T01_product.xml')/products"/> 
<xsl:strip-space elements="*"/> 
<xsl:key name="product" match="product" use="pm-id" /> 

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

<xsl:template match="deleted-assignment/pm-id"> 
    <xsl:copy-of select="."/> 
    <xsl:copy-of select="key('product', .)/art-num"/> 
</xsl:template> 
</xsl:stylesheet> 

二XSLファイルは事前に

<xsl:variable name="items" select="document('T01_item.xml')/items"/> 
<xsl:strip-space elements="*"/> 
<xsl:key name="item" match="item" use="pm-id" /> 

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

<xsl:template match="deleted-assignment/pm-id"> 
    <xsl:copy-of select="."/> 
    <xsl:copy-of select="key('item', .)/art-num"/> 
</xsl:template> 
</xsl:stylesheet> 

おかげで

答えて

0

<xsl:template match="deleted-assignment/pm-id"> 
    <xsl:copy-of select="."/> 
    <xsl:copy-of select="key('product', .)/art-num"/> 
</xsl:template> 

<xsl:template match="deleted-assignment/pm-id"> 
    <xsl:copy-of select="."/> 
    <xsl:copy-of select="key('item', .)/art-num"/> 
</xsl:template> 

を組み合わせたいので、これは野生の推測で欲しい結果とどのように説明していません2つのスタイルシートAとBを結合したいと言っていますが、まず変換Aを適用してから変換Bを結果に適用したいということですか?それが必要な場合は、それらを分けておき、いくつかのパイプライン技術を使用してワークフローを編成することが望ましいかもしれません(例えば、XProcでも他の多くの候補があります)。

特にXSLT 2.0では、モードを使用して単一のスタイルシートパイプラインを実行することもできます。各変換のすべてのルールを別々のモードに入れ、各フェーズの結果を変数に取り込み、apply-templates次のフェーズのモード名を指定する変数に追加します。

スタイルシートを他の方法で組み合わせたい場合は、要件をよりよく説明する必要があります。

0

あなたの入力が見え、どのあなたはおそらくあなたが

<xsl:template match="deleted-assignment/pm-id"> 
    <xsl:copy-of select="."/> 
    <xsl:copy-of select="key('product', .)/art-num"/> 
    <xsl:copy-of select="key('item', .)/art-num"/> 
</xsl:template> 
関連する問題