Xml 基于属性值消除重复元素
我知道这个问题之前已经提出过,但是我无法获得任何以前提供的解决方案来处理我的XML 我的XML文档如下所示。我的要求是为每个“产品”元素及其各自的“pa:ReturnmentFrequency”和“pa:ReturnmentType”元素生成一个简单的html表 “pa:还款频率”和“pa:还款类型”元素在每个“产品”元素中都是重复的,我的要求是去掉“pa:还款频率”和“pa:还款类型”的重复项。请注意,“pa:还款频率”和“pa:还款类型”是根据其属性节点“值”确定的。我使用XSLT1.0作为参考 比如说Xml 基于属性值消除重复元素,xml,xslt,xpath,duplicates,Xml,Xslt,Xpath,Duplicates,我知道这个问题之前已经提出过,但是我无法获得任何以前提供的解决方案来处理我的XML 我的XML文档如下所示。我的要求是为每个“产品”元素及其各自的“pa:ReturnmentFrequency”和“pa:ReturnmentType”元素生成一个简单的html表 “pa:还款频率”和“pa:还款类型”元素在每个“产品”元素中都是重复的,我的要求是去掉“pa:还款频率”和“pa:还款类型”的重复项。请注意,“pa:还款频率”和“pa:还款类型”是根据其属性节点“值”确定的。我使用XSLT1.0作为
<pa:RepaymentFrequency value="Weekly"></pa:RepaymentFrequency>
<pa:RepaymentFrequency value="Fortnightly"></pa:RepaymentFrequency>
<pa:RepaymentFrequency value="Monthly"></pa:RepaymentFrequency>
<pa:RepaymentFrequency value="Monthly"></pa:RepaymentFrequency>
<pa:RepaymentFrequency value="Weekly"></pa:RepaymentFrequency>
有一次我把那些复制品处理掉了
<pa:RepaymentFrequency value="Weekly"></pa:RepaymentFrequency>
<pa:RepaymentFrequency value="Fortnightly"></pa:RepaymentFrequency>
<pa:RepaymentFrequency value="Monthly"></pa:RepaymentFrequency>
同样的情况也应该如此
(1) 我试着用“明钦语”分组如下
<xsl:template-match="Product">
<tr>
<td>
<xsl:for-each select=".//pa:RepaymentFrequency[generate-id()
= generate-id(key('product-group', @value)[1]]">
<xsl:value-of-select="."/>
</xsl:for-each>
</td>
</tr>
</xsl:template>
(2) 我也试过下面的方法
<xsl:template match="Product">
<tr>
<xsl:variable name="distinct_values" select=".//pa:RepaymentFrequency/@value[not(preceding::pa:RepaymentFrequency/@value = .)]"/>
<xsl:for-each select="$distinct_values">
<xsl:value-of select="."/>
</xsl:for-each>
<xsl:apply-templates/>
</tr>
</xsl:template>
在这两种情况下,它都适用于XML文档中遇到的第一个元素,而不适用于其余元素(两种方法都输出相同的XML)
非常感谢您在这方面的任何帮助
我的XML如下所示
<?xml version="1.0" encoding="UTF-8"?>
<Data>
<OldProducts>
<Product display="###" productcode="###" productname="###" longname="###">
<pa:RepaymentType value="###"></pa:RepaymentType>
<pa:RepaymentType value="###"></pa:RepaymentType>
<pa:TotalTerm minInclusive="###" maxInclusive="###"></pa:TotalTerm>
<Class display="###" malid="###" longname="###">
<pa:FixedTerm value="###"></pa:FixedTerm>
</Class>
</Product>
<Product display="###" productcode="###" productname="###" longname="###">
<pa:TotalTerm minInclusive="###" maxInclusive="###"></pa:TotalTerm>
<pa:RepaymentType value="###"></pa:RepaymentType>
<pa:RepaymentType value="###"></pa:RepaymentType>
<pa:Feature name="###"></pa:Feature>`enter code here`
<pa:Feature name="###"></pa:Feature>
</Product>
</OldProducts>
<Products>
<pa:TotalAmount minInclusive="###"></pa:TotalAmount>
<Product display="###">
<Product display="###" productcode="###" productname="###" longname="###" discontinued="###" legacy="###">
<pa:TotalTerm minInclusive="###" maxInclusive="###"></pa:TotalTerm>
<pa:FixedTerm minInclusive="###" maxInclusive="###"></pa:FixedTerm>
<pa:Amount minInclusive="###"></pa:Amount>
<pa:RepaymentFrequency value="Weekly"></pa:RepaymentFrequency>
<pa:RepaymentFrequency value="Fortnightly"></pa:RepaymentFrequency>
<pa:RepaymentFrequency value="Monthly"></pa:RepaymentFrequency>
<Class display="###" productcode="###" malid="###" longname="###" PMPID="###" discontinued="###" legacy="###">
<pa:RepaymentFrequency value="Test-RepaymentFrequencyB"></pa:RepaymentFrequency>
<pa:FixedTerm value="###"></pa:FixedTerm>
<pa:Feature name="###"></pa:Feature>
<pa:LoanFeature value="###"></pa:LoanFeature>
<pa:RepaymentType value="###">
<pa:RepaymentFrequency value="Test-RepaymentFrequencyB"></pa:RepaymentFrequency>
<pa:RepaymentMethod value="###"></pa:RepaymentMethod>
<pa:RepaymentMethod value="###"></pa:RepaymentMethod>
<!-- Added to disable restrictions during testing -->
<pa:RepaymentMethod value="###"></pa:RepaymentMethod>
</pa:RepaymentType>
</Class>
</Product>
<Product display="###" productcode="###" productname="###" longname="###" malid="###" PMPID="###" value="###" discontinued="###" legacy="###">
<pa:TotalTerm minInclusive="###" maxInclusive="###"></pa:TotalTerm>
<pa:Amount minInclusive="###"></pa:Amount>
<pa:RepaymentFrequency value="Monthly"></pa:RepaymentFrequency>
<pa:RepaymentType value="###">
<pa:RepaymentFrequency value="Weekly"></pa:RepaymentFrequency>
<pa:RepaymentFrequency value="Fortnightly"></pa:RepaymentFrequency>
<pa:RepaymentMethod value="###"></pa:RepaymentMethod>
<pa:RepaymentMethod value="###"></pa:RepaymentMethod>
<pa:RepaymentMethod value="###"></pa:RepaymentMethod>
</pa:RepaymentType>
<pa:RepaymentType value="###">
<pa:RepaymentMethod value="###"></pa:RepaymentMethod>
<pa:RepaymentMethod value="###"></pa:RepaymentMethod>
<!-- Added to disable restrictions during testing -->
<pa:RepaymentMethod value="###"></pa:RepaymentMethod>
</pa:RepaymentType>
<pa:IOTerm minInclusive="###" maxInclusive="###"></pa:IOTerm>
</Product>
</Product>
</Products>
</Data>
`在这里输入代码`
在这种情况下,您是否可以显示预期的实际输出?非常感谢。要在父元素内执行Muenchian分组,必须在键中包含父元素的唯一id。这里有很多这样的例子,请看一:在这种情况下,您是否可以显示您期望的实际输出?非常感谢。要在父元素内执行Muenchian分组,必须在键中包含父元素的唯一id。这里有许多这样的例子,请参见: