我有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>
如何修改我的函數來得到正確的結果?