2016-08-02 21 views
1

と一致していません。今問題は、CONTENTノードとCONTENTSノードです。これらの2つは無期限にネストすることができます(CONTENTには子がありません。CONTENTは常に子としてCONTENTを持ちますが、CONTENTをさらに含めることもできます)。私のXSLは、次のようになります。XSLテンプレートは、私は、次のXMLを持っているすべてのもの

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 

<xsl:output method="xml" indent="no" omit-xml-declaration="yes" /> 

<xsl:template match="contents[content]"> 
    <li> 
     <xsl:value-of select="@name" /> : <xsl:value-of select="@type" /> 
     <ul> 
      <xsl:apply-templates select="content" /> 
     </ul> 
    </li> 
</xsl:template> 

<xsl:template match="content"> 
    <li><xsl:value-of select="@name" /> : <xsl:value-of select="@type" /></li> 
</xsl:template> 

<xsl:template match="/"> 
    <div class="jumbotron"> 
     <table class="table table-bordered"> 
      <tr> 
       <td class="tdleft">Success Response</td> 
       <td class="tdright"> 
        <xsl:for-each select="function/success/response"> 
         <xsl:value-of select="@code" /> - <xsl:value-of select="@name" /> 
         <xsl:if test="content"> 
          <br/> 
          Content: 
          <ul> 
           <xsl:apply-templates select="content" /> 
           <xsl:apply-templates select="contents" /> 
          </ul> 
         </xsl:if> 
         <br/><br/> 
        </xsl:for-each> 
       </td> 
      </tr> 
     </table> 
    </div> 
</xsl:template> 

</xsl:stylesheet> 

私はそれを変換するときに私が取得することはこれです:

yellogUserId : long 
functionalAreas : Json[] 
    functionalAreaId : long 
    functionalAreaName : String 

しかし、私が欲しいのはこれです:

yellogUserId : long 
functionalAreas : Json[] 
    functionalAreaId : long 
    functionalAreaName : String 
    workPlaces : Json[] 
     workPlaceId : long 
     workPlaceName : String 

問題はそれということであり、最初のレイヤーにしかマッチしませんが、私がやりたいことはもっと深くはありません。

答えて

0

contentsと一致するテンプレートでは、xsl:apply-templatesを選択してcontentを選択するだけです。 contentsも選択する必要があります。

<xsl:template match="contents[content]"> 
    <li> 
     <xsl:value-of select="@name" /> : <xsl:value-of select="@type" /> 
     <ul> 
      <xsl:apply-templates select="content" /> 
     </ul> 
    </li> 
</xsl:template> 

後::前

あなたのソリューションが働い

<xsl:template match="contents[content]"> 
    <li> 
     <xsl:value-of select="@name" /> : <xsl:value-of select="@type" /> 
     <ul> 
      <xsl:apply-templates select="content|contents" /> 
     </ul> 
    </li> 
</xsl:template> 
+0

は、どうもありがとうございました! –

関連する問題