我编写了一些XSL代码,它读取XML文件并为每个子节点创建text类型的输入元素。考虑以下XML文件,对于节点c,将创建两个输入框,如
标签(com 1):输入框---------------------标签(com 2):输入框
节点c下可以有任意数量的子节点,也可以有任意数量的节点,例如c。如果为c下的子节点填充HTML页面上的一行,则将创建另一行。我希望用户能够从一个输入框移动到同一行的下一个输入框,而不是下一行的输入框。
我想为使用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 :(得分:0)
您不必在循环中计算元素,您可以使用position()
<xsl:variable name="itempos" select="position()"/>
使用count()
<xsl:variable name="itemcount" select="count(/Base/c/*)"/>