1
我有以下簡單的XML結構:XSLT 1.0:將一個值分組到多個值 - 使用密鑰?
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<DESADV>
<M_DESADV>
<G_SG10>
<G_SG13>
<S_GIN>
<id>GIN</id>
<D_7405_6>BJ</D_7405_6>
<C_C208_2>
<D_7402_8>373500699550026556</D_7402_8>
</C_C208_2>
</S_GIN>
</G_SG13>
</G_SG10>
<G_SG10>
<G_SG17>
<S_PIA>
<id>PIA</id>
<D_4347>1</D_4347>
<C_C212_2>
<D_7140_2>110005</D_7140_2>
<D_7143_4>SA</D_7143_4>
</C_C212_2>
</S_PIA>
</G_SG17>
</G_SG10>
<G_SG10>
<G_SG17>
<S_PIA>
<id>PIA</id>
<D_4347>1</D_4347>
<C_C212_2>
<D_7140_2>123456</D_7140_2>
<D_7143_4>SA</D_7143_4>
</C_C212_2>
</S_PIA>
</G_SG17>
</G_SG10>
<G_SG10>
<G_SG13>
<S_GIN>
<id>GIN</id>
<D_7405_6>BJ</D_7405_6>
<C_C208_2>
<D_7402_8>3735009999999999</D_7402_8>
</C_C208_2>
</S_GIN>
</G_SG13>
</G_SG10>
<G_SG10>
<G_SG17>
<S_PIA>
<id>PIA</id>
<D_4347>1</D_4347>
<C_C212_2>
<D_7140_2>632154</D_7140_2>
<D_7143_4>SA</D_7143_4>
</C_C212_2>
</S_PIA>
</G_SG17>
</G_SG10>
<G_SG10>
<G_SG17>
<S_PIA>
<id>PIA</id>
<D_4347>1</D_4347>
<C_C212_2>
<D_7140_2>887796</D_7140_2>
<D_7143_4>SA</D_7143_4>
</C_C212_2>
</S_PIA>
</G_SG17>
</G_SG10>
</M_DESADV>
</DESADV>
我需要做的映射,所以我得到了以下XML輸出:
<?xml version="1.0" encoding="UTF-8"?>
<list>
<number>373500699550026556 110005</number>
<number>373500699550026556 123456</number>
<number>3735009999999999 632154</number>
<number>3735009999999999 887796</number>
</list>
我有麻煩的是,雖然輸出。我有以下XSLT,我雖然會工作:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:template match="text()"/>
<xsl:template match="/">
<list>
<xsl:apply-templates/>
</list>
</xsl:template>
<xsl:template match="M_DESADV">
<xsl:for-each select="G_SG10/G_SG17/S_PIA/C_C212_2[D_7143_4='SA']/D_7140_2">
<number>
<xsl:value-of select="concat(
parent::C_C212_2/parent::S_PIA/parent::G_SG17/parent::G_SG10/parent::M_DESADV
/G_SG10/G_SG13/S_GIN[D_7405_6='BJ']/C_C208_2/D_7402_8,' ',
.)
"/>
</number>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
但我的輸出看起來像這樣這不是我所期望:
<?xml version="1.0" encoding="UTF-8"?>
<list>
<number>373500699550026556 110005</number>
<number>373500699550026556 123456</number>
<number>373500699550026556 632154</number>
<number>373500699550026556 887796</number>
</list>
可以這樣用Muenchian分組的解決了嗎?我嘗試設置密鑰,但它選擇 「D_7402_8」或僅「D_7140_2」。
有人可以告訴我如何解決這個問題嗎? 謝謝你,最好的問候, 彼得
你好伊恩,非常感謝。它運作良好。我以前從未與「祖先::」合作過。使用它我可以避免所有的「parent ::」 - 是嗎?再次感謝你,彼得 – Peter
你好伊恩,我其實有一個SG_11之間,所以我改變了路徑爲「祖先:: G_SG10 /之前的兄弟姐妹:: G_SG10 [G_SG11/G_SG13] [1]」完美的作品! :-) +1 – Peter
@Peter是的,祖先軸以這種順序查看你的父母,祖父母等等(較小的數字表示「較近的」祖先)。在檢查'..'前,如果你想用'.'開始搜索,還有'ancestor-or-self ::'。 –