2013-08-13 5 views
0

나는 이런 XML을 가지고있다.XSLT for XML to HTML 테이블

< cars> 
< car> 
< ford color="black" >eco sport</ford>  
< maruti color="red" >zen< /maruti> 
< hyundai color="blue" >accent< /hyundai> 
< /car> 
< car> 
< ford color="green" >figo</ford>  
< maruti color="red" >swift< /maruti> 
< hyundai color="white" >santro< /hyundai> 
< /car> 
< /cars> 

은 내가 XSLT 매우 새로운 오전 ... 사람이 좀 도와 수

COMPANY COLOR MODEL 
ford  black ecosport 
maruti red  zen  
hyundai green figo 
ford  red  swift 
maruti red  zen  
hyundai white santro 

같은 HTML 테이블이 필요하고이 있지만, 행운에 대한 몇 가지 valuble 시간을 보냈다. 미리 감사드립니다. 아래는 XSLT 난

<xsl:template match ="/"> 
    <html> 
     <head> 
     <title> Cars </title> 
     </head> 
     <body> 
     <xsl:apply-templates /> 
     </body> 
    </html> 
</xsl:template> 

<xsl:template match="cars"> 
    <table width="400" border="1" > 
     <tr bgcolor = "#cccccc" > 
      <td>COMPANY</td> 
      <td>COLOR</td> 
      <td>MODEL</td> 
     </tr> 
<xsl:for-each select="car"> 
     <tr> 
     <xsl:for-each select="./"> 
      <td><xsl:value-of select="name()"/></td>  
      <td> <xsl:value-of select="@color" /> </td> 
       <td> <xsl:value-of select="ford" /> </td> 
     </xsl:for-each> 
     </tr> 
</xsl:for-each> 
    </table> 
</xsl:template> 

답변

2

당신은 XSLT 당신과 함께 몇 가지 (작은) 문제를했습니다와 함께 노력 해왔다된다. 첫째,이 라인은 유효하지 않습니다

당신이 자동차 요소에 배치하는대로,이 시점에서 일을해야하기 때문에

<xsl:for-each select="*"> 
처럼, 각각의 하위 요소를 반복하는 것입니다
<xsl:for-each select="./"> 

두 번째로, 현재 수행중인 것처럼이 루프 내에 tr 요소를 외부에 작성하지 않고 생성하려고합니다. 이 공백으로 (당신의 XML에 적용하면 그냥이

<xsl:value-of select="." /> 

이 XSLT

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output method="xml" indent="yes"/> 

    <xsl:template match="/"> 
     <html> 
      <head> 
       <title> Cars </title> 
      </head> 
      <body> 
       <xsl:apply-templates/> 
      </body> 
     </html> 
    </xsl:template> 

    <xsl:template match="cars"> 
     <table width="400" border="1"> 
      <tr bgcolor="#cccccc"> 
       <td>COMPANY</td> 
       <td>COLOR</td> 
       <td>MODEL</td> 
      </tr> 
      <xsl:for-each select="car"> 
       <xsl:for-each select="*"> 
        <tr> 
         <td> 
          <xsl:value-of select="name()"/> 
         </td> 
         <td> 
          <xsl:value-of select="@color"/> 
         </td> 
         <td> 
          <xsl:value-of select="."/> 
         </td> 
        </tr> 
       </xsl:for-each> 
      </xsl:for-each> 
     </table> 
    </xsl:template> 
</xsl:stylesheet> 

을 시도해야 할 때 세 번째 모델을 얻기 위해,이

<xsl:value-of select="ford" /> 

을하고있다 요소 이름이 제거되었습니다.), 다음이 출력됩니다.

<html> 
    <head> 
     <title> Cars </title> 
    </head> 
    <body> 
     <table width="400" border="1"> 
      <tr bgcolor="#cccccc"> 
       <td>COMPANY</td> 
       <td>COLOR</td> 
       <td>MODEL</td> 
      </tr> 
      <tr> 
       <td>ford</td> 
       <td>black</td> 
       <td>eco sport</td> 
      </tr> 
      <tr> 
       <td>maruti</td> 
       <td>red</td> 
       <td>zen</td> 
      </tr> 
      <tr> 
       <td>hyundai</td> 
       <td>blue</td> 
       <td>accent</td> 
      </tr> 
      <tr> 
       <td>ford</td> 
       <td>green</td> 
       <td>figo</td> 
      </tr> 
      <tr> 
       <td>maruti</td> 
       <td>red</td> 
       <td>swift</td> 
      </tr> 
      <tr> 
       <td>hyundai</td> 
       <td>white</td> 
       <td>santro</td> 
      </tr> 
     </table> 
    </body> 
</html> 
+0

고마워요. 이것은 절대적으로 효과가 있습니다. 한 번 더 질문. 요소가 마루 티와 같은 경우 'zen'앞에 들여 쓰기를 할 수 있습니까? –

+0

maruti zens에 대해서만 모델 이름의 왼쪽에 간격을두기를 원하십니까? – JLRishe

+0

예 .. 그래서 내 조건은 '마루 티', 다음 칸에 2 칸 zen nad라면 'hyundai', 3 칸은 악센트 –

1

거의 들었습니다. 시도해주세요.

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output method="xml" indent="yes" omit-xml-declaration="yes"/> 
    <xsl:strip-space elements="*" /> 

    <xsl:template match ="/"> 
    <html> 
     <head> 
     <title> Cars </title> 
     </head> 
     <body> 
     <xsl:apply-templates /> 
     </body> 
    </html> 
    </xsl:template> 

    <xsl:template match="cars"> 
    <table width="400" border="1" > 
     <tr bgcolor = "#cccccc" > 
     <th>COMPANY</th> 
     <th>COLOR</th> 
     <th>MODEL</th> 
     </tr> 
     <xsl:apply-templates /> 
    </table> 
    </xsl:template> 

    <xsl:template match="car/*"> 
    <tr> 
     <td> 
     <xsl:value-of select="name()"/> 
     </td> 
     <td> 
     <xsl:value-of select="@color" /> 
     </td> 
     <td> 
     <xsl:value-of select="." /> 
     </td> 
    </tr> 
    </xsl:template> 
</xsl:stylesheet> 
+0

고마워요. 이것은 절대적으로 효과가 있습니다. 한 번 더 질문. 요소가 마루 티와 같은 경우 'zen'앞에 들여 쓰기를 할 수 있습니까? –