考虑到这个XML段:
<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 ()函数。我想要的结果应该如下所示:
Gary
characteristics:
moist
purple
Oscar
characteristics:
fuzzy
purple
lazy发布于 2015-02-17 15:24:37
如果您想要使用一个键,那么您可以将它定义为<xsl:key name="ck" match="/*/characteristics/characteristic" use="count(preceding-sibling::characteristic) + 1"/>,然后引用。
<xsl:template match="object/characteristics/characteristic">
<xsl:value-of select="key('ck', .)"/>
</xsl:template>注意键的匹配模式中的/*/characteristics/characteristic以区分元素和对象中的元素,我假设由键匹配的元素是根的孙子,您的示例没有准确地显示这一点,因此您可能需要调整匹配模式。
https://stackoverflow.com/questions/28564700
复制相似问题