次のような非標準の html 要素を含む XML ファイルがあります。 注: 段落は短縮されています。
<content>
Sacrifice. It's Mass Effect 3's major theme...
<p />
Mass Effect was about time and place; you d...
<p />
Mass Effect 3 is focused more on plot th...
<p />
<img url="me3_img1.jpg">Plenty of games feat...</img>
Like Star Wars, Mass Effect 3 is an inc...
<p />
The reapers aren't your only adver...
<p />
<img url="me3_img2.jpg">If looks could kill..</img>
The series' focus on player choice is as vi...
<p />
This intense narrative is met wi...
<p />
<img url="me3_img3.jpg">The sun is sett...</img>
These are exquis...
</content>
それぞれが段落間のギャップになります。各画像は、コンテンツに表示される段落の間に表示する必要があります。また、キャプションも必要です。コンテンツは と の間にあります。 には src ではなく URL があることに注意してください。したがって、これを変更する必要があります。
私の現在の xslt のみのコピーと css はレイアウトを修正しますが、URL を src に変更したり、キャプションを設定したりできないため、img は表示されません。
助けてください。
アップデート:
<xsl:for-each select='./review/content/child::*'>
<xsl:value-of select="name()"/>
<xsl:choose>
<xsl:when test="name()='p'">
<p />
</xsl:when>
<xsl:when test="name()='img'">
<div class="reviewImage">
<img>
<xsl:attribute name="src">
<xsl:value-of select="./@url"/>
</xsl:attribute>
</img>
<xsl:value-of select="."/>
</div>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="."/>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
text() を出力していません。ただし、画像とキャプションは現在ソートされています。
見つかった解決策:
<xsl:for-each select='./review/content/node()'>
<xsl:choose>
<xsl:when test="name()='p'">
<p />
</xsl:when>
<xsl:when test="name()='img'">
<div class="reviewImage">
<img>
<xsl:attribute name="src">
<xsl:value-of select="./@url"/>
</xsl:attribute>
</img>
<xsl:value-of select="."/>
</div>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="."/>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>