次のようなxmlドキュメントがあります。
<div>
<p>Hello my name is Bob <cb ed="#R" n="1/>and I live in a house</p>
<p>My name is Susan.</p>
<p>Where are you from?</p>
<p>I am from <cb ed="#R" n="2/>Chicago, Illinois</p>
<p>I also live in Chicago</p>
<p>But I wish I <cb ed="#R" n="3"/>lived in New York</p>
</div>
等々 ...
私は基本的にそれを変換して、タグが最初と2番目の間のすべてのものを囲むようにしたいと思っています...しかし、新しく作成されたdiv内の既存の段落も保持したいと思います。これは、
要素の直後の兄弟であるテキスト ノードをタグで囲みます。
結果を次のようにしたい:
<div id="1">
<p>and I live in a house</p>
<p>My name is Susan.</p>
<p>Where are you from?</p>
<p>I am from</p>
</div>
<div id="2">
<p>Chicago, Illinois</p>
<p>I also live in Chicago</p>
<p>But I wish I</p>
</div>
<div id="3">
<p>lived in New York</p>
</div>
これはかなり難しいことがわかっています。誰かが私が正しい軌道に乗るのを手伝ってくれるか、または同様の種類の変換の例を教えてくれるのだろうか.
これが私がこれまでに持っているものです:
<xsl:template match="tei:p">
<xsl:choose>
<xsl:when test="./tei:cb[@ed='#R']">
<xsl:variable name="number" select="./tei:cb[@ed='#R']/@n"/>
<div id="{$number}">
<span>test</span>
<xsl:for-each select="./tei:cb[@ed='#R']/following::p[preceding::tei:cb[@ed='#R']]">
<p><xsl:value-of select="."/></p>
</xsl:for-each>
</div>
</xsl:when>
<xsl:otherwise>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
これまでのところ、唯一の結果は次のとおりです。
<div id="1rb"><span>test</span></div>
<div id="1va"><span>test</span></div>
<div id="1vb"><span>test</span></div>