、XSLT - 置か自ノードのテキスト()は次のように私はAAサンプルXMLを持って
<doc>
<para>AAAAA BBB<s/>CCC DDD<l/>EEEE<t/>FFFFF <style>GGGG</style>HHHHHH</para>
</doc>
は、XSLTを使用して属性のために私は、同じノードツリーに、この変換が、'name'
という名前<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属性の値aと、すべてのインライン要素(<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>
は、どのように私は、正しい結果を得るために、私の機能を変更することができますか?