如何解决XML / XSL段落元素嵌套问题
尽管我的XSL无效,因为段落元素未正确嵌套,但我正在尝试使用此XML和XSL实现以下输出。我该如何克服?
XML
<Phrases>
<Phrase>
<FullText>Lorem ipsum dolor sit amet.</FullText>
</Phrase>
<Phrase>
<FullText>Consectetur adipiscing elit.</FullText>
<NewLine/>
</Phrase>
<Phrase>
<FullText>Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</FullText>
</Phrase>
<Phrase>
<FullText>Ut enim ad minim veniam.</FullText>
</Phrase>
</Phrases>
XSL
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<xsl:call-template name="Phrase">
<xsl:with-param name="Phrases" select="Phrases"/>
</xsl:call-template>
<!-- Phrase -->
<xsl:template name="Phrase">
<xsl:param name="Phrases"/>
<p>
<xsl:for-each select="$Phrases">
<xsl:value-of select="FullText"/>
<xsl:if test="position() != last() and not(NewLine)">
 
</xsl:if>
<xsl:if test="position() != last() and NewLine">
</p><p>
</xsl:if>
</xsl:for-each>
</p>
</xsl:template>
</xsl:stylesheet>
预期产量
<p>Lorem ipsum dolor sit amet. Consectetur adipiscing elit.</p>
<p>Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam.</p>
解决方法
使用XSLT 2或3即可使用
<xsl:template match="Phrases">
<xsl:for-each-group select="Phrase" group-ending-with="Phrase[NewLine]">
<p>
<xsl:value-of select="current-group()/FullText" separator=" "/>
</p>
</xsl:for-each-group>
</xsl:template>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。