Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml 基于属性值消除重复元素_Xml_Xslt_Xpath_Duplicates - Fatal编程技术网

Xml 基于属性值消除重复元素

Xml 基于属性值消除重复元素,xml,xslt,xpath,duplicates,Xml,Xslt,Xpath,Duplicates,我知道这个问题之前已经提出过,但是我无法获得任何以前提供的解决方案来处理我的XML 我的XML文档如下所示。我的要求是为每个“产品”元素及其各自的“pa:ReturnmentFrequency”和“pa:ReturnmentType”元素生成一个简单的html表 “pa:还款频率”和“pa:还款类型”元素在每个“产品”元素中都是重复的,我的要求是去掉“pa:还款频率”和“pa:还款类型”的重复项。请注意,“pa:还款频率”和“pa:还款类型”是根据其属性节点“值”确定的。我使用XSLT1.0作为

我知道这个问题之前已经提出过,但是我无法获得任何以前提供的解决方案来处理我的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。这里有许多这样的例子,请参见: