首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >XSLT 1.0转换使用变量删除重复项

XSLT 1.0转换使用变量删除重复项
EN

Stack Overflow用户
提问于 2018-08-31 10:46:29
回答 1查看 28关注 0票数 0

出于几个原因,我需要在XSLT 1.0中派生一个变量,该变量可以在转换期间重用,该变量收集重复条目的惟一列表。

输入数据在XSLT中生成到一个变量“portlist”中:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<plist> 
  <p>12345</p>
  <p>12345</p>
  <p>9876</p>
  <p>12345</p>
<plist>

在我的XSLT-template中,我需要一个变量"reducedList“在转换中被多次重用。如何在XSLT中生成一个新的变量"reducedList“,如下所示

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<plist> 
  <p>12345</p>
  <p>9876</p>
<plist>

我找到了几个例子,但我必须承认我搞不懂。

我的xslt模板如下所示

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<xsl:template match="stage">

   <xsl:variable name="portlist" > <!-- returns a sorted list of all ports -->
       <plist>
          <xsl:for-each select="provider/server/QMGR"><!-- input from XML -->
             <xsl:sort select="."/>
             <p><xsl:value-of select="./@port"/></p>
           </xsl:for-each>
        </plist>
    </xsl:variable>

    <!-- here i need to derive the new variable reducedList  -->

    <!-- more code using reducedList follows here -->
</xsl:template>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-31 11:03:41

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<xsl:variable name="portlist">
  <plist>
    <p>12345</p>
    <p>12345</p>
    <p>9876</p>
    <p>12345</p>
  </plist>
</xsl:variable>

<xsl:variable name="reducedList">
  <plist>
    <xsl:copy-of select="ext:node-set($portlist)/plist/p[not(text() = preceding-sibling::p/text())]"/>
  </plist>
</xsl:variable>

其中ext是带有node-set()的扩展命名空间,例如xmlns:ext="urn:schemas-microsoft-com:xslt"

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52113784

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文