2010-07-07 72 views
1

我有这样的XML一个做了改造后拿到号的XML节点中的一个节点名称使用路径:我需要使用XSLT

<XML> 
    <dealings> 
     <members> 
      <member path="Swap.1.&apos;stream#1.Schedule&apos;" source="0" type="string">CONTEND</member> 
      <member path="Swap.1.&apos;stream#2.Schedule&apos;" source="0" type="string">CONTEND</member> 
      <member path="Swap.1.&apos;stream#3.Schedule&apos;" source="0" type="string">CONTEND</member> 
     </members> 
    </dealings> 
</XML> 

,我需要做一个转换为除了改变内容,得到数流#之后的节点的名称来使用,让这样的事情:

<XML> 
    <flows-1> 
     CONTEND 
    </flows-1> 
    <flows-2> 
     CONTEND 
    </flows-2> 
    <flows-3> 
     CONTEND 
    </flows-3> 
</XML> 

我没有得到正确的方式来获得的数量。得到的数量,而不是单为了或猜测这是很重要的,因为数量可能不按顺序连续或甚至1

回答

4

这个样式表开始:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:template match="/"> 
     <XML> 
      <xsl:apply-templates/> 
     </XML> 
    </xsl:template> 
    <xsl:template match="member"> 
     <xsl:element name="flows-{substring-before(substring-after(@path,'#'),'.')}"> 
      <xsl:apply-templates/> 
     </xsl:element> 
    </xsl:template> 
</xsl:stylesheet> 

结果(正确)输出:

<XML> 
    <flows-1>CONTEND</flows-1> 
    <flows-2>CONTEND</flows-2> 
    <flows-3>CONTEND</flows-3> 
</XML> 
+0

好答案(+1)。 – 2010-07-07 22:29:16