我有AA示例XML类似如下,XSLT - 放置自节点文本()来
<doc>
<para>AAAAA BBB<s/>CCC DDD<l/>EEEE<t/>FFFFF <style>GGGG</style>HHHHHH</para>
</doc>
使用XSLT属性我有这个转换为同一节点树,但添加一个名称属性<para>
节点命名'name'
和它的值应该是<para>
元素的内容文本。
所以输出应该是什么样子,
<doc>
<p name="AAAAA BBB CCC DDD EEEE FFFFF GGGG HHHHHH">AAAAA BBB<s/>CCC DDD<l/>EEEE<t/>FFFFF <style>GGGG</style>HHHHHH</p>
</doc>
正如你可以在输出中看到,所有的文本节点应该被复制到name属性值和所有的内联元素(<s/>,<t/>,<l/>,<style>
)必须除去。并且所有<s/>
,<t/>
,<l/>
必须用空格替换。
我写了下面的XSLT为此,
<xsl:template match="p">
<p name="{abc:process-attr-text(child::node())}">
<xsl:apply-templates/>
</p>
</xsl:template>
<xsl:function name="abc:process-attr-text">
<xsl:param name="node"/>
<xsl:sequence select="$node/text()"/>
</xsl:function>
它提供了以下输出,
<doc>
<p name="GGGG">AAAAA BBB<s/>CCC DDD<l/>EEEE<t/>FFFFF <style>GGGG</style> HHHHHH</p>
</doc>
如何修改我的函数来得到正确的结果?