我是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>但它真的做不到我想要的。我做错什么了?
发布于 2010-10-12 17:17:01
<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>发布于 2010-10-12 22:06:02
更紧凑的是这个样式表:
<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>https://stackoverflow.com/questions/3912594
复制相似问题