输入XML:
<lines>
<line>
<accountings>
<accounting>
<account>
<seg1>value1</seg2>
</account>
</accounting>
<accounting>
<account>
<seg1>value2</seg2>
</account>
</accounting>
</accountings>
</line>
<line>
<accountings>
<accounting>
<account>
<seg1>value3</seg2>
</account>
</accounting>
</accountings>
</line>
<line>
<account>
<seg1>value4</seg1>
</account>
</line>
</lines>OutPut XML:我必须迭代元素,找出段的出现,并根据存在的帐户数。创建具有相应值的相同数量的元素
<item>
<id>1</id>
<vname>value1</vname>
</item>
<item>
<id>2</id>
<vname>value2</vname>
</item>
<item>
<id>3</id>
<vname>value3</vname>
</item>
<item>
<id>4</id>
<vname>value4</vname>
</item>得到这个解决方案的最佳方法是什么。
下面是我不完整的XSLT。我试图从每次迭代中存储帐户数据。我没有在这段代码中循环,因为我已经很困惑了。请帮助并完成我的XSLT。
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:bpws="http://schemas.xmlsoap.org/ws/2003/03/business-process/">
<xsl:output method="xml" omit-xml-declaration="yes" media-type="string"/>
<xsl:template match="/">
<xsl:variable name="SegmentData" as="element()*">
<xsl:call-template name="CheckSegment">
<xsl:with-param name = "vaccount" select="./*:lines/*:line/*:accountings/*:accounting/*:account"/>
</xsl:call-template>
</xsl:variable>
<xsl:element name="item">
<xsl:element name="id">
<xsl:value-of select="position()"/>
</xsl:element>
<xsl:element name="vname">
<xsl:value-of select="$SegmentData/*:vnum"/>
</xsl:element>
</xsl:element>
</xsl:template>
<xsl:template name="CheckSegment" as="element()*">
<xsl:param name = "vaccount"/>
<xsl:element name="vnum">
<xsl:value-of select="$vaccount/*:seg1"/>
</xsl:element>
</xsl:template>
</xsl:stylesheet>发布于 2017-11-20 08:24:34
据我所见,这只是
<xsl:template match="/">
<xsl:for-each select="//seg1">
<item>
<id><xsl:value-of select="position()"/></id>
<vname><xsl:value-of select="."/></vname>
</item>
</xsl:for-each>
</xsl:template>如果我在需求中遗漏了什么,那么您需要更清楚地解释它。(例如,您所说的“填充模式”是什么意思?)
https://stackoverflow.com/questions/47383043
复制相似问题