【发布时间】:2017-07-14 08:08:01
【问题描述】:
我知道 XSLT 的基础知识,但我有一个非常复杂的 XML 文档,我需要从中检索一些元素。 for 循环中有一个 for 循环,并在树节点中向上。 我已经完成了基本的事情,但无法理解更困难的事情。 我无法在此处发布我需要转换的 XML 文件,但这是我的问题的一个表示:
<Z xmlns="blablabla" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<A>
<B>
<C>date</C>
<D>
<F>client 1 data</F>
<E>
<X>transaction 1</X>
</E>
<E>
<X>transaction 2</X>
</E>
</D>
<D>
<F>client 2 data</F>
<E>
<X>transaction 1</X>
</E>
</D>
</B>
</A>
</Z>
所以标签中可能有很多标签(每个标签一个),标签中可能有很多标签(每个标签都有一个标签)。当我在标签内并从那里检索数据时,我需要使用两个循环之外的标签中的数据。我需要 D * E 部分,并且在每个部分中我都需要使用来自标签的相同数据,这些数据独立于来自和的数据。
1234563那么就使用
<xsl:value-of select="z:C" /> ?
到目前为止,这是我的 XSL 文件,但不幸的是它不起作用:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:z="blablabla">
<xsl:output method="text" encoding="utf-8" />
<xsl:template match="z:A/z:B">
<xsl:value-of select="/z:C"/>
<xsl:for-each select="/z:D">
<xsl:for-each select="/z:E">
should be repeated value from tag C in every section within those loops <xsl:value-of select="../../z:C"/>
</xsl:for-each>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
输出可能是:(只是为了向您展示我所说的部分)
date : client 1 data -> transaction 1, transaction 2
date : client 2 data -> transaction 1
...
【问题讨论】: