尝试在 XSLT 2.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>
并处于同一水平。有任何想法吗?
提前致谢。