Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.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
XSLT1.0唯一元素_Xslt - Fatal编程技术网

XSLT1.0唯一元素

XSLT1.0唯一元素,xslt,Xslt,我试图使用前面的同级从组中选择唯一的元素 以folliwng xml为例 <items> <item> <options> <option> <option-data> <data-ab>TEST1</date-qualifier> <date>20101026</date> </option-data> <opti

我试图使用前面的同级从组中选择唯一的元素

以folliwng xml为例

<items>
 <item>
  <options>
   <option>
    <option-data>
     <data-ab>TEST1</date-qualifier>
     <date>20101026</date>
    </option-data>
    <option-data>
     <data-ab>TEST2</date-qualifier>
     <date>20101026</date>
    </option-data>

   </option>
   <option type="2">
    <option-data>
     <data-ab>TEST1</date-qualifier>
     <date>20101026</date>
    </option-data>
   </option>
  </options>
 </item>
 <item>
  <options>
   <option>
    <option-data>
     <data-ab>TEST1</date-qualifier>
     <date>20101026</date>
    </option-data>
   </option>
   <option type="2">
    <option-data>
     <data-ab>TEST1</date-qualifier>
     <date>20101026</date>
    </option-data>
   </option>
  </options>
 </item>
</items>
我希望能够选择唯一选项日期元素distinct is by date和data-ab。我只希望为每个项目选择唯一的选项data/date,即not by option。我使用了前面同级的组合,但当它返回到父级时,我只能保证在需要时,每个选项的日期都是唯一的项目

为此绞尽脑汁数小时,却找不出一个优雅的解决方案

问候,, 安迪

这一转变:

当应用于所提供的XML文档时,请更正以实现良好的格式:

<items>
    <item>
        <options>
            <option>
                <option-data>
                    <data-ab>TEST1</data-ab>
                    <date>20101026</date>
                </option-data>
                <option-data>
                    <data-ab>TEST2</data-ab>
                    <date>20101026</date>
                </option-data>
            </option>
            <option type="2">
                <option-data>
                    <data-ab>TEST1</data-ab>
                    <date>20101026</date>
                </option-data>
            </option>
        </options>
    </item>
    <item>
        <options>
            <option>
                <option-data>
                    <data-ab>TEST1</data-ab>
                    <date>20101026</date>
                </option-data>
            </option>
            <option type="2">
                <option-data>
                    <data-ab>TEST1</data-ab>
                    <date>20101026</date>
                </option-data>
            </option>
        </options>
    </item>
</items>
生成所需的正确结果:


注意:最有效的XSLT1.0 Muenchian分组方法用于三个连接键。

TEST1 20101026 TEST2 20101026 TEST1 20101026 TEST1 20101026 TEST1 20101026我认为最好使用Muenchian分组。。。像这样的复合键:这不是一个完整的答案,但我必须回家吃晚饭-我想另一个有助于澄清的问题是,您需要如何查询/访问这些独特的元素:所有项目的所有元素的节点集?b给定一个数据子体,其唯一选项是什么?c还有别的吗?当你说选择唯一选项数据元素时,你的意思是想省略所有不唯一的数据元素,还是想选择其中一个,即选择不同的数据元素?好问题,+1。有关完整、高效和事实上的标准解决方案,请参见我的答案:你的问题不清楚。首先,我希望能够选择唯一选项date元素distinct is by date and data ab:在您的示例中,没有唯一的元素,所有元素都具有相同的键。第二个问题我只想为每个项目选择唯一的选项data/date,即不按选项:此处相同,所有项目都有相同的键。你想把他们分组吗?期望的输出是什么?+1回答得好。不同的选项数据元素,不一定是唯一的,IIUC。@LarsH:谢谢。我可能也被否决了,因为我是0?
<items>
    <item>
        <options>
            <option>
                <option-data>
                    <data-ab>TEST1</data-ab>
                    <date>20101026</date>
                </option-data>
                <option-data>
                    <data-ab>TEST2</data-ab>
                    <date>20101026</date>
                </option-data>
            </option>
            <option type="2">
                <option-data>
                    <data-ab>TEST1</data-ab>
                    <date>20101026</date>
                </option-data>
            </option>
        </options>
    </item>
    <item>
        <options>
            <option>
                <option-data>
                    <data-ab>TEST1</data-ab>
                    <date>20101026</date>
                </option-data>
            </option>
            <option type="2">
                <option-data>
                    <data-ab>TEST1</data-ab>
                    <date>20101026</date>
                </option-data>
            </option>
        </options>
    </item>
</items>
  Unique option-data elements for item: 1
<option-data><data-ab>TEST1</data-ab><date>20101026</date></option-data>
<option-data><data-ab>TEST2</data-ab><date>20101026</date></option-data>

  Unique option-data elements for item: 2
<option-data><data-ab>TEST1</data-ab><date>20101026</date></option-data>