<media>
タグをスライドショーとして、一連の画像をインライン画像として扱うには、xslt
が必要です。私は<media>
が<p>
タグで囲まれているが、すべて<media>
タグ以外を扱うように拡張するのは面倒です。 xslt 1.0で動くnot(p)
ロジックをどうやって書くことができますか?ここで一連の画像をスライドショーとして、単一画像をインライン画像として変換するにはどうすればよいですか?
は、XSLTは(それは重要ではありませんので、私は完全なコール・テンプレートのコードを削除しました)である:ここでは
<xsl:template name="textImage">
<xsl:param name="paragraphs"/>
<xsl:variable name="paragraphCount" select="count($paragraphs)"/>
<xsl:for-each select="$paragraphs">
<xsl:choose>
<xsl:when test="mediaReference">
<xsl:choose>
<!--single media block-->
<xsl:when test="ancestor::table or position() = $paragraphCount or (position() = 1 and (generate-id(following-sibling::*[1]) != generate-id(following-sibling::media[1]))) or (generate-id(preceding-sibling::p[1]/following-sibling::media[1]) = generate-id(current()) and generate-id(following-sibling::p[1]/preceding-sibling::media[1]) = generate-id(current()))">
<xsl:call-template name="imageNode"/>
</xsl:when>
<!--two more pam:media blocks for a carousel-->
<xsl:otherwise>
<xsl:choose>
<xsl:when test="generate-id(preceding-sibling::p[1]/following-sibling::media[1]) = generate-id(current())">
<xsl:call-template name="firstImageNode"/>
</xsl:when>
<xsl:when test="generate-id(following-sibling::p[1]/preceding-sibling::media[1]) = generate-id(current())">
<xsl:call-template name="lastImageNode"/>
</xsl:when>
<xsl:otherwise>
<xsl:call-template name="imageNode"/>
</xsl:otherwise>
</xsl:choose>
</xsl:otherwise>
</xsl:choose>
</xsl:when>
<xsl:otherwise>
<xsl:call-template name="textNode"/>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</xsl:template>
は、いくつかのサンプルxmlです:
<?xml version="1.0" encoding="utf-8"?>
<message>
<article xml:lang="en-US">
<body>
<h2>What a Chicken!</h2>
<media>
<mediaReference refid="BA_chicken1.jpg"/>
</media>
<ol>
<li>
<p>Place chicken breast side down.</p>
</li>
</ol>
<media>
<mediaReference refid="BA_chicken2.jpg"/>
</media>
<media>
<mediaReference refid="BA_chicken3.jpg"/>
</media>
<p>More about chickens</p>
<media>
<mediaReference refid="BA_chicken4.jpg"/>
</media>
<p>The End</p>
</body>
</article>
</message>
正しい出力が何かを探しますlike:
<h2>What a Chicken!</h2>
<img src="BA_chicken1.jpg">
<ol><li>
<p>Place chicken breast side down.</p>
</li></ol>
<div class="slideshow">
<img src="BA_chicken2.jpg">
<img src="BA_chicken3.jpg">
</div>
<p>More about chickens</p>
<img src="BA_chicken4.jpg">
<p>The End</p>
画像のロジックは何ですか?最初はすべて* slideshow * divに入っていますが?また、名前空間 'pam:'は使用する前に宣言しなければなりません。あなたはサンプルを投稿する際にそれを残しているかもしれません。 – Parfait
pam名前空間はサンプルから除外されますが、マッチングにとって重要ではありません。私はスライドショーに2つのイメージの各グループを作成し、1つのイメージをインラインイメージとして残す必要があります。 –