我是xslt的新手,现在我已经陷入了困境。
我有一个XML:
<map>
<node TEXT="test" TYPE="node" >
<element/>
<node TYPE="normal" >
<dummy>
<FONT>
mindmap_node1_l1
</FONT>
</dummy>
<node LINK="url.com" TYPE="node" >
<dummy>
<FONT>
node node1_l2)
</FONT>
</dummy>
<element/>
<element/>
</node>
</node>
<node TYPE="normal" >
<dummy>
<FONT>
mindmap_node2_l1
</FONT>
</dummy>
<node TYPE="normal" >
<dummy>
<FONT>
mindmap_node3_l2
</FONT>
</dummy>
</node>
</node>
</node>
</map>
我想让它转换成类似的东西:
<?xml version="1.0"?>
<transform text="">
<transform text="mindmap_node1_l1">
<transform text="node node1_l2)">
</transform>
</transform>
<transform text="mindmap_node2_l1">
<transform text="mindmap_node3_l2">
</transform>
</transform>
</transform>
我写了一个xslt:
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="map">
<xsl:apply-templates select="/map/node"/>
</xsl:template>
<xsl:template match="node">
<xsl:element name="transform">
<xsl:attribute name="text">
<xsl:value-of select="normalize-space(.)"/>
</xsl:attribute>
<xsl:apply-templates />
</xsl:element>
</xsl:template>
</xsl:stylesheet>
但它真的没有做我想要的。我做错了什么?
答案 0 :(得分:1)
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="map">
<xsl:apply-templates select="/map/node"/>
</xsl:template>
<xsl:template match="node">
<xsl:element name="transform">
<xsl:attribute name="text">
<xsl:value-of select="normalize-space(dummy/FONT)"/>
</xsl:attribute>
<xsl:apply-templates select="node"/>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
答案 1 :(得分:1)
更紧凑,这个样式表:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="text()"/>
<xsl:template match="node">
<transform text="{normalize-space(dummy/FONT)}">
<xsl:apply-templates />
</transform>
</xsl:template>
</xsl:stylesheet>
输出:
<transform text="">
<transform text="mindmap_node1_l1">
<transform text="node node1_l2)">
</transform>
</transform>
<transform text="mindmap_node2_l1">
<transform text="mindmap_node3_l2">
</transform>
</transform>
</transform>