我有一个传入的 XML 文档,其中包含以下表单的一些节点:
<userOptions>
<userOption>
<type>A</type>
<plan>
<frequency>MONTHLY</frequency>
</plan>
<method>
<methodType>X1</methodType>
</method>
</userOption>
<userOption>
<type>B</type>
<plan>
<frequency>QUARTERLY</frequency>
</plan>
<method>
<methodType>X2</methodType>
</method>
</userOption>
<userOption>
<type>A</type>
<plan>
<frequency>3MONTH</frequency>
</plan>
<method>
<methodType>X1-B</methodType>
</method>
</userOption>
</userOptions>
我需要将其合并并转换为如下所示的内容:
<userOptions>
<userOption>
<type>A</type>
<plan>
<frequency>3MONTH</frequency>
<methodType>X1-B</methodType>
</plan>
<plan>
<frequency>MONTHLY</frequency>
<methodType>X1</methodType>
</plan>
<userOption>
<userOption>
<type>B</type>
<plan>
<frequency>QUARTERLY</frequency>
<methodType>X2</methodType>
</plan>
<userOption>
</userOptions>
我目前的转型是这样的:
<userOptions>
<xsl:for-each select="//userOptions">
<userOption>
<type>
<xsl:value-of select="type" />
</type>
<xsl:variable name="currentType" select="type"/>
<xsl:message><xsl:value-of select="$currentType"/></xsl:message>
<xsl:variable name="currentMethod" select="method/methodType"/>
<xsl:message><xsl:value-of select="$currentMethod/></xsl:message>
<plan>
<frequency>
<xsl:value-of select="plan/frequency" />
</frequency>
<method>
<xsl:value-of select="method/methodType" />
</method>
</plan>
<xsl:for-each select="../userOptions[type=$currentType and method/methodType!=$currentMethod]">
<plan>
<frequency>
<xsl:value-of select="plan/frequency" />
</frequency>
<method>
<xsl:value-of select="method/methodType" />
</method>
</plan>
</xsl:for-each>
</userOption>
</xsl:for-each>
</userOptions>
问题是我得到了重复,例如:
<userOption>
<type>A</type>
<plan>
<frequency>3MONTH</frequency>
<methodType>X1-B</methodType>
</plan>
<plan>
<frequency>MONTHLY</frequency>
<methodType>X1</methodType>
</plan>
<userOption>
<userOption>
<type>A</type>
<plan>
<frequency>MONTHLY</frequency>
<methodType>X1</methodType>
</plan>
<plan>
<frequency>3MONTH</frequency>
<methodType>X1-B</methodType>
</plan>
<userOption>
我不确定如何合并匹配type
和不同的记录,methodType
但也要避免重复。