1
我具有以下XML(簡化爲目的)組相鄰的語法建議需要
<content>
<p1>blabla</p1>
<p2>blabla</p2>
<p2>blabla</p2>
<p1>blabla</p1>
<p3>blabla</p3>
<p1>blabla</p1>
<p2>blabla</p2>
<p2>blabla</p2>
<p1>blabla</p1>
<p3>blabla</p3>
<p2>blabla</p2>
</content>
和我想組的所有元件P1和P2的元素,但後者只有當前一個兄弟是p1元素。
我用下面的XSLT:
<xsl:for-each-group select="*" group-adjacent="self::p1 or (self::p2 and preceding-sibling::p1[1])">
<xsl:choose>
<xsl:when test="current-grouping-key()">
<ol_coll>
<xsl:apply-templates select="current-group()"/>
</ol_coll>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates select="current-group()"/>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each-group>
但我俯瞰我的語法的東西,因爲它不看第一前次元素,但在整個樹。所以,我獲得以下收益
<content>
<ol_coll>
<p1>blabla</p1>
<p2>blabla</p2>
<p2>blabla</p2>
<p1>blabla</p1>
</ol_coll>
<p3>blabla</p3>
<ol_coll>
<p1>blabla</p1>
<p2>blabla</p2>
<p2>blabla</p2>
<p1>blabla</p1>
</ol_coll>
<p3>blabla</p3>
<ol_coll>
<p2>blabla</p2>
</ol_coll>
</content>
,但我所希望的是以下幾點:
<content>
<ol_coll>
<p1>blabla</p1>
<p2>blabla</p2>
</ol_coll>
<p2>blabla</p2>
<p1>blabla</p1>
<p3>blabla</p3>
<ol_coll>
<p1>blabla</p1>
<p2>blabla</p2>
</ol_coll>
<p2>blabla</p2>
<p1>blabla</p1>
<p3>blabla</p3>
<p2>blabla</p2>
</content>
任何人都可以點我到我的錯誤?謝謝 !