【发布时间】:2017-04-04 17:21:54
【问题描述】:
我知道可能有太多关于该主题的问题,但我仍然找不到满足我要求的必要 XPath...
我有一个这样的 xml 输入:
<?xml version="1.0" encoding="utf-8"?>
<Products>
<product vib="SMS53L08TR">
<template name="PDF_ENLBL_GS_TR_NEWEULBL_FO">
<attr name="ProductSubFamily">Dishwashers</attr>
<attr name="ENERGY_CLASS_2010">EEK_EU_2010.A+</attr>
<attr name="ENERGY_CONS_ANNUAL_2010">290</attr>
<attr name="WATER_CONS_2010">3300</attr>
<attr name="PERF_DRY">TROCKNUNGSKLASSE.A</attr>
<attr name="SETTINGS">12</attr>
<attr name="NOISE">48</attr>
</template>
<template name="pdf.eudatasheet.gs.fo">
<attr name="ProductSubFamily">Dishwashers</attr>
<attr name="CODE">SMS53L08TR</attr>
<attr name="SETTINGS">12</attr>
<attr name="ENERGY_CLASS_2010">EEK_EU_2010.A+</attr>
<attr name="ENERGY_CONS_ANNUAL_2010">290</attr>
<attr name="ENERGY_CONS">1.02</attr>
<attr name="POWER_OFF_MODE_2010">0.10</attr>
<attr name="WATER_CONS_2010">3300</attr>
<attr name="PERF_DRY">TROCKNUNGSKLASSE.A</attr>
<attr name="REF_PRG">VERGLEICHSPROGRAMM.EC</attr>
<attr name="REF_PRG_TEMP">50</attr>
<attr name="CYCLE_TIME">195</attr>
<attr name="DURATION_LEFT_ON_MODE_2010">0</attr>
<attr name="NOISE">48</attr>
<attr name="CONSTR_TYPE">CONSTR_TYPE.Free-standing</attr>
</template>
</product>
<product vib="BM5201EG">
<template name="PDF_ENLBL_GS_TR_OLDLBL_FO">
<attr name="ProductSubFamily">Dishwashers</attr>
<attr name="ENERGY_CLASS">ENERGIEEFFIZIENZKLASSE.A</attr>
<attr name="PERF_CLEAN">REINIGUNGSKLASSE.A</attr>
<attr name="WATER_CONS">17.0</attr>
<attr name="ENERGY_CONS">1.05</attr>
<attr name="PERF_DRY">TROCKNUNGSKLASSE.A</attr>
<attr name="SETTINGS">12</attr>
<attr name="NOISE">57</attr>
</template>
<template name="pdf.eudatasheet.gs.fo">
<attr name="ProductSubFamily">Dishwashers</attr>
<attr name="CODE">BM5201EG</attr>
<attr name="SETTINGS">12</attr>
<attr name="ENERGY_CLASS_2010"/>
<attr name="ENERGY_CONS_ANNUAL_2010"/>
<attr name="ENERGY_CONS">1.05</attr>
<attr name="POWER_OFF_MODE_2010"/>
<attr name="WATER_CONS_2010"/>
<attr name="PERF_DRY">TROCKNUNGSKLASSE.A</attr>
<attr name="REF_PRG">VERGLEICHSPROGRAMM.EC</attr>
<attr name="REF_PRG_TEMP">50</attr>
<attr name="CYCLE_TIME">140</attr>
<attr name="DURATION_LEFT_ON_MODE_2010"/>
<attr name="NOISE">57</attr>
<attr name="CONSTR_TYPE">CONSTR_TYPE.Free-standing</attr>
</template>
</product>
</Products>
在这个 xml 输入中,我将尝试获取模板的不同值:
<Template>PDF_ENLBL_GS_TR_NEWEULBL_FO</Template>
<Template>pdf.eudatasheet.gs.fo</Template>
<Template>PDF_ENLBL_GS_TR_OLDLBL_FO</Template>
我正在尝试做的似乎是正确的,但仍然返回除了 distinct 之外的所有值(pdf.eudatasheet.gs.fo 似乎输出两次)...顺便说一句,$output 是变量名,其中包含所有 xml 文档.
<xsl:for-each select="$output//product/template/@name[not(@name = preceding:: *)]">
我在这个 XPath 上做错了什么?顺便说一句,由于运行此 xslt 的环境,我们需要坚持使用 Xalan 处理器,所以我无法使用 XSLT v2.0 的 distinct-values 函数...
【问题讨论】:
标签: xml xslt xpath distinct-values