ここでXSLT2.0で変換をコーディングしようとしています。
私のソースドキュメントはどのように見えますか(不正な形式ですが、それが私が扱っているものです):
<p>
<a>
WANT TO GRAB TEXT NODE HERE
<br/>
<br/>
<i> WORD </i>
DEFINITION TEXT NODE HERE
<br/>
<br/>
<i> WORD </i>
DEFINITION TEXT NODE HERE
</a>
</p>
私の目標は、これを定義リストの現在のDTD標準に組み込んで、出力が次のように見えるようにすることです。
<p> WANT TO GRAB TEXT NODE HERE </p>
<dl>
<dlentry>
<dt><i> WORD </i></dt>
<dd> ANOTHER TEXT NODE HERE <dd>
<dt><i> WORD </i></dt>
<dd> ANOTHER TEXT NODE HERE <dd>
<dlentry>
<dl>
これが私の現在の変換からのコードスニペットです:
**<xsl:template match="a[descendant::i and descendant::br]/node()[1]">
<p>
<xsl:value-of select="." />
</p>
</xsl:template>**
<xsl:template match="p[string-length(.) gt 600]">
<dl>
<dlentry>
<xsl:apply-templates />
</dlentry>
</dl>
</xsl:template>
<xsl:template match="i">
<dt>
<i>
<xsl:value-of select="."/>
</i>
</dt>
</xsl:template>
<xsl:template match="text()[preceding-sibling::*[1][self::i]]">
<dd>
<xsl:value-of select="normalize-space()"/>
</dd>
</xsl:template>
トランスフォームへの出力は次のようになります。
<dl>
<dlentry>
<p> WANT TO GRAB TEXT NODE HERE </p>
<dt><i> WORD </i></dt>
<dd> ANOTHER TEXT NODE HERE </dd>
<dt><i> WORD </i></dt>
<dd> ANOTHER TEXT NODE HERE </dd>
</dlentry>
</dl>
私はそれが同じレベルの上に<p>
あることを望みます。<dl>
何か案は?
前もって感謝します。