开发者

Stuck with xslt

I"m new to xslt, and now I'm stuck a little with it.

I have an 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>

I want it to convert something like that:

<?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>

I wrote an 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>

But it really doesn't do what I want. What did I do wrong?


<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>


More compact, this stylesheet:

<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>

Output:

<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>
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜