2016-03-24 2 views
0

私はXSLTの初心者です。XMLファイル内の特定の属性に従って、XMLファイルを複数のHTMLファイルに分割したいと考えています。ここで複数のHTMLファイルに分割されたXSLT

は私のXMLファイルのサンプルです:

<article> 
<div> 
<paragraph>text text text</paragraph> 
</div> 
<div class="zoologie"> 
<def>this is a definition</def> 
<def>this is another definition</def> 
<example>this is a first example</example> 
<example>this is a second example</example> 
</div> 
</article> 

<article> 
<div> 
<paragraph>text text text</paragraph> 
</div> 
<div class="médecine"> 
<def>this is a definition</def> 
<def>this is another definition</def> 
<example>this is a first example</example> 
<example>this is a second example</example> 
</div> 
</article> 

<article> 
<div> 
<paragraph>text text text</paragraph> 
</div> 
<div class="zoologie"> 
<def>this is a definition</def> 
<def>this is another definition</def> 
<example>this is a first example</example> 
<example>this is a second example</example> 
</div> 
</article> 

私が取得したいどのような同じ属性クラスを持つすべての記事togheterそのグループ1つのHTMLファイルです。たとえば、属性class = "zoologie"を含むすべての記事を収集する、zoologie.htmlという名前のHTMLファイル。 class = "médecine"という属性を持つすべての記事を収集するmédecine.htmlという別のHTMLファイル。私は分割機能で何かを試したが、それは動作しません。あなたが私にこれを手伝ってもらえれば幸いです。 おかげで、 フロ

+0

XSLT 2.0プロセッサと 'xsl:result-document'を使用できますか、拡張機能をサポートするXSLT 1.0プロセッサを使用して1つのスタイルシートで複数のドキュメントを作成できますか? –

+0

XSLT 2.0プロセッサを使用できます – FloD

答えて

0

は、これは古典的なXSLT 2.0構文です:

<xsl:for-each-group select="article" group-by="div/@class"> 
    <xsl:result-document href="{current-grouping-key()}.xml"> 
    <articles> 
     <xsl:copy-of select="current-group()"/> 
    </articles> 
    </xsl:result-document> 
</xsl:for-each-group> 

XSLT 1.0は、任意の組み込みのグループ化を行うにまたは複数の出力ファイルを生成する能力がありますが、一部の1.0プロセッサーていないことベンダー拡張が役立つ

+0

ありがとうございます。それは実際には機能しませんでした。どうしてか分かりません。私の目標は、私が望むさまざまな価値を持つ別の属性を選択するという別の方法を使わなければならなかった。私はそれぞれのHTMLファイルを生成することができました。私は会う締め切りがありました。スプリット機能を使う方法についてはもう考えることができませんでした。再度、感謝します。 – FloD

関連する問題