首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用基于位置的键在xml转换中执行查找?

如何使用基于位置的键在xml转换中执行查找?
EN

Stack Overflow用户
提问于 2015-02-17 15:16:12
回答 1查看 19关注 0票数 0

考虑到这个XML段:

代码语言:javascript
复制
<characteristics>
    <characteristic>fuzzy</characteristic>
    <characteristic>moist</characteristic>
    <characteristic>purple</characteristic>
    <characteristic>lazy</characteristic>
</characteristics>

<objects>
    <object name="Gary">
        <characteristics>
            <characteristic>2</characteristic>
            <characteristic>3</characteristic>
        </characteristics>
    </object>
    <object name="Oscar">
        <characteristics>
            <characteristic>1</characteristic>
            <characteristic>3</characteristic>
            <characteristic>4</characteristic>
        </characteristics>
    </object>
</objects>

每个对象的特征值都是所需元素的位置。如何将对象的特征转换为使用第一个块中的值?我想我需要使用一个键,但是我不知道如何在定义中使用think ()函数。我想要的结果应该如下所示:

代码语言:javascript
复制
Gary
characteristics:
   moist
   purple

Oscar
characteristics:
   fuzzy
   purple
   lazy
EN

回答 1

Stack Overflow用户

发布于 2015-02-17 15:24:37

如果您想要使用一个键,那么您可以将它定义为<xsl:key name="ck" match="/*/characteristics/characteristic" use="count(preceding-sibling::characteristic) + 1"/>,然后引用。

代码语言:javascript
复制
<xsl:template match="object/characteristics/characteristic">
  <xsl:value-of select="key('ck', .)"/>
</xsl:template>

注意键的匹配模式中的/*/characteristics/characteristic以区分元素和对象中的元素,我假设由键匹配的元素是根的孙子,您的示例没有准确地显示这一点,因此您可能需要调整匹配模式。

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

https://stackoverflow.com/questions/28564700

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档