私はXMLとXSLTの初心者で、2つの異なるテンプレートがありますが、取得する出力は最後のテンプレートからのものです。
最初のテンプレートは、data-video-singleがfalseの場合のcreate htmlテキストを出力します。つまり値0で、2番目のテンプレートは2つのdiv(つまり、左側に1つ、右側に2つ)のhtmlテキストを出力します。
両方のテキストを単一のhtml出力として結合する必要があります。
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="html"/>
<xsl:key name="groups" match="/videos/video" use="data-video-group"/>
<xsl:template match="/videos">
<xsl:apply-templates mode="single" select="video[generate-id() = generate-id(key('groups', data-video-group)[1]) and data-video-single=0]" />
</xsl:template>
<xsl:template match="video" mode="single">
<h2>
<xsl:value-of select="data-video-group"/>
</h2>
<xsl:for-each select="key('groups', data-video-group)">
<xsl:if test="data-video-single = '0'">
<div class="feature">
<p class="featurePic">
<img data-video-id="{data-video-id}" data-video-url="{data-video-url}" alt=""></img>
</p>
<h3>
<xsl:value-of select="data-video-heading"/>
</h3>
<p>
<xsl:value-of select="data-video-content"/>
</p>
</div>
</xsl:if>
</xsl:for-each>
</xsl:template>
<xsl:template match="/videos">
<xsl:apply-templates mode="nonSingle" select="video[generate-id() = generate-id(key('groups', data-video-group)[1]) and data-video-single=1]" />
</xsl:template>
<xsl:template match="video" mode="nonSingle">
<xsl:if test="position() mod 2 != 0">
<div class="featureLeft">
<h2>
<xsl:value-of select="data-video-group"/>
</h2>
<xsl:for-each select="key('groups', data-video-group)">
<xsl:if test="data-video-single = '1'">
<div class="feature">
<p class="featurePic">
<img data-video-id="{data-video-id}" data-video-url="{data-video-url}" alt=""></img>
</p>
<h3>
<xsl:value-of select="data-video-heading"/>
</h3>
<p>
<xsl:value-of select="data-video-content"/>
</p>
</div>
</xsl:if>
</xsl:for-each>
</div>
</xsl:if>
<xsl:if test="position() mod 2 = 0">
<div class="featureRight">
<h2>
<xsl:value-of select="data-video-group"/>
</h2>
<xsl:for-each select="key('groups', data-video-group)">
<xsl:if test="data-video-single = '1'">
<div class="feature">
<p class="featurePic">
<img data-video-id="{data-video-id}" data-video-url="{data-video-url}" alt=""></img>
</p>
<h3>
<xsl:value-of select="data-video-heading"/>
</h3>
<p>
<xsl:value-of select="data-video-content"/>
</p>
</div>
</xsl:if>
</xsl:for-each>
</div>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
これがソースxmlデータです。
<?xml version="1.0" encoding="utf-8" ?>
<?xml-stylesheet type="text/xsl" href="/UserControls/IRISNewRelease/Data/newrelease.xslt"?>
<videos>
<video>
<data-video-id>1</data-video-id>
<data-video-single>0</data-video-single>
<data-video-group>ABC GROUP</data-video-group>
<data-video-groupNote></data-video-groupNote>
<data-video-url>VIMEO</data-video-url>
<data-video-heading>Video Heading 1</data-video-heading>
<data-video-content>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean commodo tellus vitae lacus fermentum vehicula.</data-video-content>
</video>
<video>
<data-video-id>2</data-video-id>
<data-video-single>0</data-video-single>
<data-video-group>ABC GROUP</data-video-group>
<data-video-url>VIMEO</data-video-url>
<data-video-heading>Video Heading 2</data-video-heading>
<data-video-content>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean commodo tellus vitae lacus fermentum vehicula.</data-video-content>
</video>
<video>
<data-video-id>3</data-video-id>
<data-video-single>0</data-video-single>
<data-video-group>Company Secretarial</data-video-group>
<data-video-url>VIMEO</data-video-url>
<data-video-heading>Video Heading 3</data-video-heading>
<data-video-content>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean commodo tellus vitae lacus fermentum vehicula.</data-video-content>
</video>
<video>
<data-video-id>4</data-video-id>
<data-video-single>0</data-video-single>
<data-video-group>Business Tax</data-video-group>
<data-video-url>VIMEO</data-video-url>
<data-video-heading>Video Heading 4</data-video-heading>
<data-video-content>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean commodo tellus vitae lacus fermentum vehicula.</data-video-content>
</video>
<video>
<data-video-id>5</data-video-id>
<data-video-single>0</data-video-single>
<data-video-group>Personal Tax</data-video-group>
<data-video-url>VIMEO</data-video-url>
<data-video-heading>Video Heading 5</data-video-heading>
<data-video-content>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean commodo tellus vitae lacus fermentum vehicula.</data-video-content>
</video>
<video>
<data-video-id>6</data-video-id>
<data-video-single>1</data-video-single>
<data-video-group>Personal Tax</data-video-group>
<data-video-groupNote>Integration with IRIS Personal Tax</data-video-groupNote>
<data-video-url>VIMEO</data-video-url>
<data-video-heading>Video Heading 6</data-video-heading>
<data-video-content>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean commodo tellus vitae lacus fermentum vehicula.</data-video-content>
</video>
</videos>
以下のような期待される結果...
以下の結果は、最初のテンプレート、つまりmode = singleからのものです。2番目のテンプレートにコメントを付けて実行すると、正常に機能します。
<h2>
Personal Tax</h2>
<div class="feature">
<p class="featurePic">
<img data-video-id="50214413" data-video-url="VIMEO" alt=""></p>
<h3>
Simplified Client Data Entry</h3>
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean commodo tellus vitae
lacus fermentum vehicula.</p>
</div>
<div class="feature">
<p class="featurePic">
<img data-video-id="50214135" data-video-url="VIMEO" alt=""></p>
<h3>
IRIS Personal Tax and Payroll Integration</h3>
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean commodo tellus vitae
lacus fermentum vehicula.</p>
</div>
これは、2番目のテンプレートの結果です。つまり、mode = nonSingleです。最初のテンプレートにコメントを付けて実行すると、この結果は正常に機能します。
<div class="featureLeft">
<h2>
Accounts Production</h2>
<div class="feature">
<p class="featurePic">
<img data-video-id="50220365" data-video-url="VIMEO" alt=""></p>
<h3>
Companies House iXBRL e-filing</h3>
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean commodo tellus vitae
lacus fermentum vehicula.</p>
</div>
<div class="feature">
<p class="featurePic">
<img data-video-id="50220516" data-video-url="VIMEO" alt=""></p>
<h3>
IRIS Accounts Production supports companies limited by guarantee</h3>
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean commodo tellus vitae
lacus fermentum vehicula.</p>
</div>
</div>
<div class="featureRight">
<h2>
Company Secretarial</h2>
<div class="feature">
<p class="featurePic">
<img data-video-id="50220436" data-video-url="VIMEO" alt=""></p>
<h3>
Company name change for Companies House</h3>
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean commodo tellus vitae
lacus fermentum vehicula.</p>
</div>
</div>
<div class="featureLeft">
<h2>
Business Tax</h2>
<div class="feature">
<p class="featurePic">
<img data-video-id="50214325" data-video-url="VIMEO" alt=""></p>
<h3>
IRIS Business Tax Client Account Overview</h3>
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean commodo tellus vitae
lacus fermentum vehicula.</p>
</div>
</div>
現在、ファイルに両方があり、両方のテンプレートではなく、最後のテンプレートの結果のみが表示されます。
どんな助けでも大歓迎です。
ありがとう