2016-09-13 2 views
0

에 가입하여 두 개의 테이블을 생성 XSL : 여기내가 가진 XML 문서 카운터 필드

<Cable>A030.000 </Cable> 
<Address> 
<ZIP>11411</ZIP> 
<City>A-City</City> 
<Street>B-Street</Steet> 
<Hause>8</Hause> 
<CableData> 
<Damping>0242</Damping> 
<DM-1>400</DM-1> 
<Length-1>0054</Length-1> 
<DM-2>400</DM-2> 
<Length-2>0041</Length-2> 
<DM-3>400</DM-3> 
<Length-3>0024</Length-3> 
</CableData> 
</Address> 
<Address> 
<ZIP>11511</ZIP> 
<City>A-City</City> 
<Street>B-Street</Steet> 
<Hause>10</Hause> 
<CableData> 
<Damping>0242</Damping> 
<DM-1>400</DM-1> 
<Length-1>0054</Length-1> 
</CableData> 
</Address> 

모든 주소 노드가 차례로 댐핑이있는 자식 노드 CableData을 보유하고 오쌍 DM-XX 길이-XX까지.

내가 달성하고자하는 것은 XSL 2 테이블을 공통 필드 행 카운터로 결합하여 생성하는 것입니다. 첫 번째 테이블에는 CableData를 제외한 주소 정보가 있어야하며 다른 테이블에는 각 주소에 대한 CableData 내용이 표시되어야합니다. 테이블에 대한 공통 데이터는 첫 번째 열, 즉 행 번호에 있으며 두 테이블의 데이터를 조인하는 데 사용됩니다.

-1- 일 표 :

<table> 
<tr> 
<th>Num</th> 
<th>Zip</th> 
<th>City</th> 
<th>City dstr</th> 
<th>Street</th> 
<th>Hause</th> 
<th>Hause Ltr</th> 
</tr> 
<tr> 
    <td>1</td> 
    <td>12345</td> 
    <td>A-City</td> 
    <td>North</td> 
    <td>B-Street</td> 
    <td>1</td> 
    <td>C</td> 
</tr> 
<tr> 
    <td>2</td> 
    <td>12345</td> 
    <td>A-City</td> 
    <td>North</td> 
    <td>B-Street</td> 
    <td>2</td> 
    <td>D</td> 
</tr> 
</table> 

2 차 테이블이 두 테이블

<table> 
<tr> 
    <th>Num</th> 
    <th>Damping</th> 
    <th>DM-1</th> 
<th>Length-1</th> 
<th>DM-2</th> 
<th>Length-2</th> 
<th>DM-3</th> 
<th>Length-3</th> 
<th>DM-4</th> 
<th>Length-4</th> 
<th>DM-5</th> 
<th>Length-5</th> 
</tr> 
<tr> 
<td>1</td> 
<td>0242</td> 
<td>400</td> 
<td>0054</td> 
<td>400</td> 
<td>0041</td> 
<td>400</td> 
<td>0024</td> 
<td></td> 
<td></td> 
<td></td> 
<td></td> 
</tr> 
<tr> 
<td>2</td> 
<td>0242</td> 
<td>400</td> 
<td>0054</td> 
<td></td> 
<td></td> 
<td></td> 
<td></td> 
<td></td> 
<td></td> 
<td></td> 
<td></td> 
</tr> 
</table> 

공통 열은 민이다.

+0

XML 입력에 대해 잘 구성된 ** 예를 게시하고 (b) 문제가있는 부분을 정확하게 설명하십시오. 이. –

+0

@ uL1 OP 코드를 편집하지 마십시오 : 어떻게 생겼는지 모릅니다. –

답변

0

힌트 1 : 댓글에 이미 언급 된 @ michael.hor257k와 같이 완벽하고 형식이 완벽하고 검증 가능한 예제를 제공하십시오.

힌트 2 : 주어진 xml를 확인하십시오. 유효하지 않습니다. [예 : <street></steet>에 의해 폐쇄됩니다.

힌트 3 : 문제가있는 곳을 알려주십시오. 당신이 일하는 사람을 찾으면, 이것은 잘못된 곳입니다. 이를 명심하십시오.

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> 

    <xsl:output encoding="UTF-8" method="html"/> 

    <xsl:template match="/"> 
     <xsl:call-template name="createAddressesTab"/> 
     <xsl:call-template name="createDampingTab"/> 
    </xsl:template> 

    <xsl:template name="createAddressesTab"> 
     <table> 
      <tr> 
       <th>Num</th> 
       <th>Zip</th> 
       <th>City</th> 
       <th>City dstr</th> 
       <th>Street</th> 
       <th>Hause</th> 
       <th>Hause Ltr</th> 
      </tr> 
      <xsl:for-each select="//Address"> 
       <tr> 
        <td><xsl:value-of select="position()"/></td> 
        <td><xsl:value-of select="ZIP"/></td> 
        <td><xsl:value-of select="City"/></td> 
        <td><!-- provide some xml for this tag --></td> 
        <td><xsl:value-of select="Street"/></td> 
        <td><xsl:value-of select="Hause"/></td> 
        <td><!-- provide some xml for this tag --></td> 
       </tr> 
      </xsl:for-each> 
     </table> 
    </xsl:template> 

    <xsl:template name="createDampingTab"> 
     <table> 
      <tr> 
       <th>Num</th> 
       <th>Damping</th> 
       <th>DM-1</th> 
       <th>Length-1</th> 
       <th>DM-2</th> 
       <th>Length-2</th> 
       <th>DM-3</th> 
       <th>Length-3</th> 
       <th>DM-4</th> 
       <th>Length-4</th> 
       <th>DM-5</th> 
       <th>Length-5</th> 
      </tr> 
      <xsl:for-each select="//Address"> 
       <tr> 
        <td><xsl:value-of select="position()"/></td> 
        <td><xsl:value-of select="CableData/Damping"/></td> 
        <td><xsl:value-of select="CableData/DM-1"/></td> 
        <td><xsl:value-of select="CableData/Length-1"/></td> 
        <td><xsl:value-of select="CableData/DM-2"/></td> 
        <td><xsl:value-of select="CableData/Length-2"/></td> 
        <td><xsl:value-of select="CableData/DM-3"/></td> 
        <td><xsl:value-of select="CableData/Length-3"/></td> 
        <td><xsl:value-of select="CableData/DM-4"/></td> 
        <td><xsl:value-of select="CableData/Length-4"/></td> 
        <td><xsl:value-of select="CableData/DM-5"/></td> 
        <td><xsl:value-of select="CableData/Length-5"/></td> 
       </tr> 
      </xsl:for-each> 
     </table> 
    </xsl:template> 

</xsl:stylesheet> 

설명 :는 "고급"하나 꽤 똑바로 앞으로

은 보라. XSLT 1.0에서 완전히 기능합니다. 요청 된 작업을 수행하는 2 개의 명명 된 템플릿을 호출합니다.

그것은 작업을 수행합니다. 문제가 있으면 의견을 통해 문의하십시오. 원한다면이 질문을 올리거나 닫으십시오.

+0

실제로 작동합니다. 고마워요! –