XSLT'ye yeni geliyorum ve aşağıdaki sorunu çözmeye çalışıyorum. Ben yapmaya çalışıyorum neXSLT kullanarak Düz Hiyerarşi Toplaması
<?xml version="1.0" encoding="UTF-8"?>
<Data>
<Entry>
<CName>CCXXX</CName>
<CCH_Summary>Marketing</CCH_Summary>
<CCH_Rollup_1>Marketing Group</CCH_Rollup_2>
<CCH_Rollup_2>Marketing (COR)</CCH_Rollup_2>
<CCH_Rollup_3>Cost of Revenue</CCH_Rollup_3>
<CCH_Rollup_4>Total Cost Centre</CCH_Rollup_4>
</Entry>
<Entry>
<CName>CCXXX</CName>
<CCH_Summary>Finance</CCH_Summary>
<CCH_Rollup_1>Finance Ret</CCH_Rollup_2>
<CCH_Rollup_2>Finance Acct (COR)</CCH_Rollup_2>
<CCH_Rollup_3>Cost of Revenue</CCH_Rollup_3>
<CCH_Rollup_4>Total Cost Centre</CCH_Rollup_4>
</Entry>
</Data>
CCH_Rollup_1 tüm ayrı değerleri almak ve ilgili kardeş CCH_Rollup_2 elde etmektir: Ben aşağıdaki XML dosyası var. Sonra tüm farklı CCH_Rollup_2 değerlerine ihtiyacım var ve kardeşlerini CCH_Rollup_3 aldım. Temel olarak - "hiyerarşi" ni 2 sütun halinde düzleştirin. Benim ilk yaklaşım farklı değer çiftleri(), ancak bu gerçekten beni pozisyonu olarak kardeş dönmesine izin vermez (kullanmaktı
Marketing,Marketing Group
Marketing Group,Marketing (COR)
Marketing (COR), Cost of Revenue
Finance,Finance Ret
Finance Ret, Finance Acct
Finance Acct, Cost of Revenue
Cost of Revenue,Total Cost Centre
Total Cost Centre,
): Ben bekliyorum
çıktı şudur sıfırlayın.
<xsl:variable name="rootnode" select="/"/>
<xsl:template match="//Data">
<xsl:for-each select="distinct-values(//CCH_Rollup_1)">
<xsl:value-of select="." />,<xsl:value-of select="$rootnode/Entry[position()]/CCH_Rollup_2" />
</xsl:for-each>
Her giriş için bir kimlik atama ve kardeş dönmek için bu kullanan güvenilir ikinci girişim yaklaşımı
. Ancak, hiçbir şey geri dönüyor gibi görünmüyor.<xsl:variable name="rootnode" select="/"/>
<!-- build first column -->
<xsl:key name="CCH" match="//Data/Entry/CCH_Rollup[*]/text()" use="." />
<xsl:template match="/">
<xsl:for-each select="//Data/Entry/text()[generate-id() = generate-id(key('CCH',.)[1])]">
<xsl:value-of select="." />,<xsl:value-of select="$rootnode/Entry[position()]/CCH_Rollup_2" />
</xsl:for-each>
</xsl:template>
Neyi yanlış yapıyorum? Buna yaklaşmanın iyi bir yolu nedir?
, bağlantıyı girişten tam olarak istediğiniz çıktıyı gösterebilir yapacağız! –
Çıktıdaki sıraların sırası önemli mi? –
Sipariş yalnızca farklı değerler olduğu sürece önemli değildir. – Yavor