2011-07-20 49 views
0

我有這樣的XML;我想寫一個XSLT。在哪裏我可以提取屬性V.並生成這樣的樹結構。想要爲XML編寫XSLT來獲得樹結構嗎?

 
PS 
. 
. 
....Product Category 
.   . 
.   . 
.   . 
.   Product. 
. 
....Financial Product Images 
      . 
      . 
      .Product2. 

Other 
. 
. 
........Customer Location Images 
       . 
       . 
       . Service3. 

<PV V="PS:Product Category:Product1" L="" H="" C="327" /> 
    <PV V="PS:Financial Product Images:Product2" L="" H="" C="173" /> 
    <PV V="Other:Customer Location Images:Service2" L="" H="" C="122" /> 
    <PV V="PS:POS Product Images:Product3" L="" H="" C="109" /> 
    <PV V="N/A" L="" H="" C="106" /> 
    <PV V="Other:Customer Location Images:Service 3" L="" H="" C="98" /> 

 

可有人請幫助我,我是很新的XSLT

回答

0

,所以你需要通過更換它們,可以使用此XSLT

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> 
    <xsl:template match="/wrapper"> 
     <wrapper2> 
      <xsl:apply-templates select="PV[starts-with(@V,'PS')]"/> 
      <xsl:apply-templates select="PV[starts-with(@V,'Other')]"/> 
     </wrapper2> 
    </xsl:template> 

    <xsl:template match="//PV"> 
     <xsl:variable name="elementName1" select="substring-before(./@V,':')"/> 
     <xsl:variable name="elementName23" select="substring-after(./@V,':')"/> 
     <xsl:variable name="elementName2" 
      select="translate(substring-before($elementName23,':'), ' ', '_')"/> 
     <xsl:variable name="elementName3" 
      select="translate(substring-after($elementName23,':'), ' ', '_')"/> 

     <xsl:if test="not($elementName1 = '')"> 
      <xsl:element name="{$elementName1}"> 
       <xsl:element name="{$elementName2}"> 
        <xsl:element name="{$elementName3}"> </xsl:element> 
       </xsl:element> 
      </xsl:element> 
     </xsl:if> 
    </xsl:template> 
</xsl:stylesheet> 

的標籤名不能有空格一些其他的角色。這是通過用'_'替換空格來完成的。