获取每个特定子节点的父节点值

Get parent node value for each specific child

我想return一个矩阵如下:

换句话说,对于每个 CC 节点,我只想 return 之前的 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>

您可以通过以下方式执行此操作:

<?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,' -&gt; ',.)"/>
      <xsl:text>&#xa;</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(.,' -&gt; ',preceding::AA[1])"/>
    <xsl:text>&#xa;</xsl:text>
  </xsl:template>