如何在 xsl 中查找组行项目的索引位置 [英] How to find index position for group line item in xsl
本文介绍了如何在 xsl 中查找组行项目的索引位置的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
有人可以帮我吗?
输入 XML:
<dataXML>
<Items>
<itemLine>
<lineNo>1</lineNo>
<lineRefNo>001</lineRefNo>
<lineDes>test1</lineDes>
</itemLine>
<itemLine>
<lineNo>6</lineNo>
<lineRefNo>003</lineRefNo>
<lineDes>test6</lineDes>
</itemLine>
<itemLine>
<lineNo>4</lineNo>
<lineRefNo>002</lineRefNo>
<lineDes>test4</lineDes>
</itemLine>
<itemLine>
<lineNo>3</lineNo>
<lineRefNo>002</lineRefNo>
<lineDes>test3</lineDes>
</itemLine>
<itemLine>
<lineNo>7</lineNo>
<lineRefNo>003</lineRefNo>
<lineDes>test7</lineDes>
</itemLine>
<itemLine>
<lineNo>5</lineNo>
<lineRefNo>002</lineRefNo>
<lineDes>test5</lineDes>
</itemLine>
<itemLine>
<lineNo>2</lineNo>
<lineRefNo>001</lineRefNo>
<lineDes>test2</lineDes>
</itemLine>
</Items>
</dataXML>
需要根据索引位置的 LineRefNo 对项目行进行分组.
Need to group item lines based on LineRefNo for index position.
预期结果:自然顺序必须相同.
<dataXML>
<Items>
<itemLine>
<lineNo>1</lineNo>
<lineRefNo>001</lineRefNo>
<lineDes>test1</lineDes>
<RefNoIndex>1</RefNoIndex>
</itemLine>
<itemLine>
<lineNo>6</lineNo>
<lineRefNo>003</lineRefNo>
<lineDes>test6</lineDes>
<RefNoIndex>1</RefNoIndex>
</itemLine>
<itemLine>
<lineNo>4</lineNo>
<lineRefNo>002</lineRefNo>
<lineDes>test4</lineDes>
<RefNoIndex>1</RefNoIndex>
</itemLine>
<itemLine>
<lineNo>3</lineNo>
<lineRefNo>002</lineRefNo>
<lineDes>test3</lineDes>
<RefNoIndex>2</RefNoIndex>
</itemLine>
<itemLine>
<lineNo>7</lineNo>
<lineRefNo>003</lineRefNo>
<lineDes>test7</lineDes>
<RefNoIndex>2</RefNoIndex>
</itemLine>
<itemLine>
<lineNo>5</lineNo>
<lineRefNo>002</lineRefNo>
<lineDes>test5</lineDes>
<RefNoIndex>3</RefNoIndex>
</itemLine>
<itemLine>
<lineNo>2</lineNo>
<lineRefNo>001</lineRefNo>
<lineDes>test2</lineDes>
<RefNoIndex>2</RefNoIndex>
</itemLine>
</Items>
</dataXML>
如何使用 xsl 1.0 版传输输入数据?
How to transfer input data using xsl version 1.0?
提前致谢.
推荐答案
这种转变:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="node()|@*" name="identity">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="itemLine/*[last()]">
<xsl:call-template name="identity"/>
<RefNoIndex>
<xsl:copy-of select=
"count(preceding::lineRefNo[. = current()/../lineRefNo])"/>
</RefNoIndex>
</xsl:template>
</xsl:stylesheet>
应用于提供的 XML 文档时:
<dataXML>
<Items>
<itemLine>
<lineNo>1</lineNo>
<lineRefNo>001</lineRefNo>
<lineDes>test1</lineDes>
</itemLine>
<itemLine>
<lineNo>6</lineNo>
<lineRefNo>003</lineRefNo>
<lineDes>test6</lineDes>
</itemLine>
<itemLine>
<lineNo>4</lineNo>
<lineRefNo>002</lineRefNo>
<lineDes>test4</lineDes>
</itemLine>
<itemLine>
<lineNo>3</lineNo>
<lineRefNo>002</lineRefNo>
<lineDes>test3</lineDes>
</itemLine>
<itemLine>
<lineNo>7</lineNo>
<lineRefNo>003</lineRefNo>
<lineDes>test7</lineDes>
</itemLine>
<itemLine>
<lineNo>5</lineNo>
<lineRefNo>002</lineRefNo>
<lineDes>test5</lineDes>
</itemLine>
<itemLine>
<lineNo>2</lineNo>
<lineRefNo>001</lineRefNo>
<lineDes>test2</lineDes>
</itemLine>
</Items>
</dataXML>
产生想要的、正确的结果:
<dataXML>
<Items>
<itemLine>
<lineNo>1</lineNo>
<lineRefNo>001</lineRefNo>
<lineDes>test1</lineDes>
<RefNoIndex>1</RefNoIndex>
</itemLine>
<itemLine>
<lineNo>6</lineNo>
<lineRefNo>003</lineRefNo>
<lineDes>test6</lineDes>
<RefNoIndex>1</RefNoIndex>
</itemLine>
<itemLine>
<lineNo>4</lineNo>
<lineRefNo>002</lineRefNo>
<lineDes>test4</lineDes>
<RefNoIndex>1</RefNoIndex>
</itemLine>
<itemLine>
<lineNo>3</lineNo>
<lineRefNo>002</lineRefNo>
<lineDes>test3</lineDes>
<RefNoIndex>2</RefNoIndex>
</itemLine>
<itemLine>
<lineNo>7</lineNo>
<lineRefNo>003</lineRefNo>
<lineDes>test7</lineDes>
<RefNoIndex>2</RefNoIndex>
</itemLine>
<itemLine>
<lineNo>5</lineNo>
<lineRefNo>002</lineRefNo>
<lineDes>test5</lineDes>
<RefNoIndex>3</RefNoIndex>
</itemLine>
<itemLine>
<lineNo>2</lineNo>
<lineRefNo>001</lineRefNo>
<lineDes>test2</lineDes>
<RefNoIndex>2</RefNoIndex>
</itemLine>
</Items>
</dataXML>
这篇关于如何在 xsl 中查找组行项目的索引位置的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文