xml - 如何从 xml 或 xslt 中的变量中删除重复值
问题描述
我正在尝试查找 metric 标签的值并将其值存储在 incrementalprop 变量中。当我执行此代码时,我得到了 metric 的所有值,但我只希望将唯一值添加到由 | 分隔的变量 incrementalprop 中 ,所以我使用了 not contains if value doesn't contain metric value then add in variable
<xsl:param name="incrementalprop"> <xsl:for-each select="// :VIP/ :VIP_LIST/*:VIP_LINES">
<xsl:choose>
<xsl:when test="string-length(./*:Metric) >0 and not(contains(incrementalprop,./*:Metric))">
<xsl:value-of select="./*:Metric"/>
<xsl:text>|</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="."/>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</xsl:param>
输出:- 托管命名中心|托管命名中心|托管命名中心|托管命名中心|数据用户|数据用户|虚拟用户|未知用户|
预期:- 托管命名中心|数据用户|虚拟用户|未知用户
Sample Input :-
<VIP id="7273236vvvsd632">
<client id=""/>
<VIP_LIST>
<VIP_LINES id="A">
<Metric>HOSTED NAMED CENTER</Metric>
<quantity>92</quantity>
<phoneCountryCode xsi:nil="true"/>
<phoneNumber xsi:nil="true"/>
</VIP_LINES>
<VIP_LINES id="B">
<Metric>HOSTED NAMED CENTER</Metric>
<quantity>92</quantity>
<phoneCountryCode xsi:nil="true"/>
<phoneNumber xsi:nil="true"/>
</VIP_LINES>
<VIP_LINES id="C">
<Metric>DATA USER</Metric>
<quantity>92</quantity>
<phoneCountryCode xsi:nil="true"/>
<phoneNumber xsi:nil="true"/>
</VIP_LINES>
<VIP_LINES id="D">
<Metric>UNKOWNN USER</Metric>
<quantity>92</quantity>
<phoneCountryCode xsi:nil="true"/>
<phoneNumber xsi:nil="true"/>
</VIP_LINES>
<VIP_LINES id="D">
<Metric>DUMMY USER</Metric>
<quantity>92</quantity>
<phoneCountryCode xsi:nil="true"/>
<phoneNumber xsi:nil="true"/>
</VIP_LINES>
<VIP_LINES id="D">
<Metric>DATA USER</Metric>
<quantity>92</quantity>
<phoneCountryCode xsi:nil="true"/>
<phoneNumber xsi:nil="true"/>
</VIP_LINES>
<VIP_LINES id="D">
<Metric>HOSTED NAMED CENTER</Metric>
<quantity>92</quantity>
<phoneCountryCode xsi:nil="true"/>
<phoneNumber xsi:nil="true"/>
</VIP_LINES>
....
....
...
...
</VIP_LIST>... ... ..
</VIP>
解决方案
*:VIP_LINES
我假设你有 XSLT 2 或 3 所以你可以简单地做
<xsl:param name="incrementalprop" select="string-join(distinct-values(//*:VIP_LINES/*:Metric), '|')"/>
推荐阅读
- java - 面向方面编程的异常处理
- java - 是否可以从序列化的 kryo 对象中提取单个字段值?
- javascript - 我可以为私人日历应用 Freebusy 查询(来自 Google Calendar API)吗?
- spring - JSF/DeltaSpike/Weld CDI 的春季会议没有持续
- ssrs-2008 - 差距报告生成器,之间没有文字
- javascript - 使用 rel="stylesheet/something" 将 LINK 元素附加到 DOM 时出现静默错误
- ibm-cloud-storage - 从 IBM Cloud Object Storage 流式传输数据
- google-apps-script - Google Script - 无法从一张纸复制到另一张纸
- log4net - log4net RollingFileAppender 在重新启动应用程序后意外覆盖翻转文件
- python - 在订购参数化测试时访问具有类范围的 pytest 夹具参数