誤解を招くタイトルのため申し訳ありませんが、私はそれのためのより良い表現は分かりません。私は完全に異なるタイプのデータのために、出力XMLに2つの異なるメインセクションを提供するXSLを作成しようとしています。しかし、私はいつも、それぞれのテンプレート呼び出しで、両方のタイプのデータを取得します。私はあなたにこれを達成するためのヒントを教えてください。これらは私の成分である:出力をXSLで区切る
ソースXML
<?xml version="1.0" encoding="UTF-8"?>
<root>
<books>
<book>Xpages</book>
<book>XML</book>
</books>
<dvds>
<dvd>Star Wars</dvd>
<dvd>Prometheus</dvd>
</dvds>
</root>
XSL
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<media>
<xsl:element name="booklist">
<xsl:call-template name="books"/>
</xsl:element>
<xsl:element name="dvdlist">
<xsl:call-template name="dvds"/>
</xsl:element>
</media>
</xsl:template>
<xsl:template name="books" match="books">
<xsl:apply-templates/>
</xsl:template>
<xsl:template name="dvds" match="dvds">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="books/book" name="book">
<xsl:value-of select="text()"/>
</xsl:template>
<xsl:template match="dvds/dvd" name="dvd">
<xsl:value-of select="text()"/>
</xsl:template>
</xsl:stylesheet>
これは私が
<?xml version="1.0" encoding="UTF-8"?>
<media>
<booklist>
Xpages
XML
Star Wars
Prometheus
</booklist>
<dvdlist>
Xpages
XML
Star Wars
Prometheus
</dvdlist>
</media>
得るものです。しかし、これは私が欲しいものである
<?xml version="1.0" encoding="UTF-8"?>
<media>
<booklist>
Xpages
XML
</booklist>
<dvdlist>
Star Wars
Prometheus
</dvdlist>
</media>
ご覧のとおり、私の2つのリストは2倍になります。私は2つのテンプレートの中でapply-templatesを使うからだと思いますが、これを解決する方法が必要です。どんな助けでも大歓迎です!
ありがとう! appy-templatesにselect属性を持たせることもできませんでした。 –