2017-12-01 19 views
0

XML 파일을 읽고 각 자식 노드에 대해 텍스트 형식의 입력 요소를 만드는 XSL 코드를 작성했습니다. 노드 C에 대해 다음 XML 파일을 고려하십시오.tabIndex를 설정하기 위해 카운터를 xsl로 설정하십시오.

레이블 (com 1) : 입력란 --------------------- 레이블 (com 2) : 입력 상자

노드 c에는 자식 노드가 여러 개있을 수 있고 c와 같은 노드가있을 수 있습니다. HTML 페이지의 한 행이 c 아래의 하위 노드에 채워지면 다른 행이 작성됩니다. 사용자가 한 행의 입력 상자에서 다음 행의 입력 상자가 아닌 같은 행의 다음 입력 상자로 이동할 수있게하려고합니다.

XSL을 사용하여 생성 된 각 입력 요소에 대해 탭 인덱스를 설정하려고합니다. 다음 부모 요소의 자식 노드에 대한 탭 인덱스를 설정하도록 한 부모 노드 아래에 자식 노드의 개수를 계산해야합니다.

<Base>   
      <C> 
       <Label>Af</Label> 
       <Column> 
        <Label>Com 1</Label> 
        <Max>200</Max>     
       </Column> 
       <Column> 
        <Label>Com 2</Label> 
        <max>100</max>     
       </Column> 
      </C> 

      <D> 
       <Row> 
        <Column> 
         <Label>A</Label> 
         <max>40</max> 
        </Column> 
        <Column> 
         <Label>B</Label> 
         <max>40</max>      
        </Column> 
        <Column> 
         <Label>C</Label> 
         <max>40</max>      
        </Column> 
        <Column> 
         <Label>D</Label> 
         <max>40</max>      
        </Column> 
       </Row> 
       <Row> 
        <Column> 
         <Label>A</Label> 
         <max>40</max>      
        </Column> 
        <Column> 
         <Label>B</Label> 
         <max>40</max>      
        </Column> 
        <Column> 
         <Label>C</Label> 
         <max>40</max>      
        </Column> 
        <Column> 
         <Label>D</Label> 
         <max>40</max>      
        </Column> 
       </Row> 
       <Row> 
        <Column> 
         <Label>A</Label> 
         <max>40</max>      
        </Column> 
        <Column> 
         <Label>B</Label> 
         <max>40</max>      
        </Column> 
        <Column> 
         <Label>C</Label> 
         <max>40</max>      
        </Column> 
        <Column> 
         <Label>D</Label> 
         <max>40</max>      
        </Column> 
       </Row> 
       <Row> 
        <Column> 
         <Label>A</Label> 
         <max>340</max>      
        </Column> 
        <Column> 
         <Label>B</Label> 
         <max>40</max>      
        </Column> 
        <Column> 
         <Label>C</Label> 
         <max>40</max>      
        </Column> 
        <Column> 
         <Label>D</Label> 
         <max>40</max>      
        </Column> 
       </Row> 
       <Row> 
        <Column> 
         <Label>A</Label> 
         <max>40</max>      
        </Column> 
        <Column> 
         <Label>B</Label> 
         <max>40</max>      
        </Column> 
        <Column> 
         <Label>C</Label> 
         <max>40</max>      
        </Column> 
        <Column> 
         <Label>D</Label> 
         <max>40</max>      
        </Column> 
       </Row> 
       <Row> 
        <Column> 
         <Label>A</Label> 
         <max>340</max>      
        </Column> 
        <Column> 
         <Label>B</Label> 
         <max>40</max>      
        </Column> 
        <Column> 
         <Label>C</Label> 
         <max>40</max>      
        </Column> 
        <Column> 
         <Label>D</Label> 
         <max>40</max>      
        </Column> 
       </Row> 
       <Row> 
        <Column> 
         <Label>A</Label> 
         <max>40</max>      
        </Column> 
        <Column> 
         <Label>B</Label> 
         <max>40</max>      
        </Column> 
        <Column> 
         <Label>C</Label> 
         <max>40</max>      
        </Column> 
        <Column> 
         <Label>D</Label> 
         <max>40</max>      
        </Column> 
       </Row> 
       <Row> 
        <Column> 
         <Label>A</Label> 
         <max>40</max>      
        </Column> 
        <Column> 
         <Label>B</Label> 
         <max>40</max> 

        </Column> 
        <Column> 
         <Label>C</Label> 
         <max>40</max> 

        </Column> 
        <Column> 
         <Label>D</Label> 
         <max>40</max> 

        </Column> 
       </Row> 
       <Row> 
        <Column> 
         <Label>A</Label> 
         <max>40</max> 

        </Column> 
        <Column> 
         <Label>B</Label> 
         <max>40</max> 

        </Column> 
        <Column> 
         <Label>C</Label> 
         <max>40</max> 

        </Column> 
        <Column> 
         <Label>D</Label> 
         <max>40</max>      
        </Column> 
       </Row> 
       <Row> 
        <Column> 
         <Label>E</Label> 
         <max>40</max>      
        </Column> 
       </Row> 
       <GColumn> 
      </Base> 

는 XSL으로 내가 변수를 설정하고를위한 각 루프에 대한 하나의 실행 후를 증가 할 수있는 방법을 찾을 수 없습니다 기능적인 언어되고. tabindex를 설정할 수있는 요소의 수를 유지하려면 도움이 필요합니다.

답변

0

당신은 당신이 position()

<xsl:variable name="itempos" select="position()"/> 

으로 들어-각 루프에서 요소의 인덱스를 얻을 수 있습니다, 루프의 요소를 계산하고 count()

와 자녀의 요소의 총 수를 얻을하지 않습니다
<xsl:variable name="itemcount" select="count(/Base/c/*)"/>