我想返回如下矩阵:
换句话说,对于每个CC节点,我只想返回以前的AA节点。
能否请您帮助我获取正确的xslt 1.0代码? XML示例:
<parent>
<AA>Val1</AA>
<AA>Val2</AA>
<BB>
<CC>key1</CC>
</BB>
<AA>Val3</AA>
<BB>
<CC>key2</CC>
</BB>
</parent>
答案 0 :(得分:0)
这是您可以执行此操作的方法:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
version="1.0">
<xsl:output method="text"/>
<xsl:template match="/">
<xsl:apply-templates select="parent/BB/CC"/>
</xsl:template>
<xsl:template match="CC">
<xsl:variable name="currentCC" select="."/>
<xsl:for-each select="preceding::AA">
<xsl:value-of select="concat($currentCC,' -> ',.)"/>
<xsl:text>
</xsl:text>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
看到它在这里工作:https://xsltfiddle.liberty-development.net/6pS26n1/1
修改 要仅获取最后一个元素,可以使用:
<xsl:template match="CC">
<xsl:value-of select="concat(.,' -> ',preceding::AA[1])"/>
<xsl:text>
</xsl:text>
</xsl:template>