еще один новичок в xslt здесь. У меня есть проблема, похожая на эту: Применение группировки Muenchian для простой XML с XSLT, но усложненный дополнительным уровнем узлов.
У меня есть этот XML...
<ALLDATA>
<THIS>
<ID>datum 1</ID>
<DATA>datarecord1</DATA>
<RELATIONSHIPS>
<rel>
<relid>rd1</relid>
<reldata>something</reldata>
</rel>
</RELATIONSHIPS>
</THIS>
<THIS>
<ID>datum 1</ID>
<DATA>datarecord1</DATA>
<RELATIONSHIPS>
<rel>
<relid>rd2</relid>
<reldata>other</reldata>
</rel>
</RELATIONSHIPS>
</THIS>
<THIS>
<ID>rd1</ID>
<DATA>relrecord1</DATA>
<RELATIONSHIPS/>
</THIS>
<THIS>
<ID>rd2</ID>
<DATA>relrecord2</DATA>
<RELATIONSHIPS/>
</THIS>
</ALLDATA>
... и хотел бы преобразовать его в ...
<ALLDATA>
<THIS>
<ID>datum 1</ID>
<DATA>datarecord1</DATA>
<RELATIONSHIPS>
<rel>
<relid>rd1</relid>
<reldata>something</reldata>
</rel>
<rel>
<relid>rd2</relid>
<reldata>other</reldata>
</rel>
</RELATIONSHIPS>
</THIS>
<THIS>
<ID>rd1</ID>
<DATA>relrecord1</DATA>
<RELATIONSHIPS/>
</THIS>
<THIS>
<ID>rd2</ID>
<DATA>relrecord2</DATA>
<RELATIONSHIPS/>
</THIS>
</ALLDATA>
Xslt (1.0), который я использую, очевидно, далеко от базы, поэтому я надеялся, что кто-то с большим знанием (привет!) сможет помочь мне правильно :)
Вот бесполезный xslt...
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:key name="krel" match="THIS" use="ID"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="appex_user/node">
<xsl:copy>
<xsl:apply-templates select="THIS[generate-id() = generate-id(key('krel', ID)[1])]" mode="group"/>
</xsl:copy>
</xsl:template>
<xsl:template match="THIS/RELATIONSHIPS" mode="group">
<xsl:copy>
<xsl:copy-of select="RELATIONSHIPS/rel"/>
<xsl:apply-templates select="key('krel', ID)"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
На самом деле - я пробовал всевозможные комбинации, но безрезультатно.
match="appex_user/node"
не соответствует ни одному из ваших входных данных. - person Martin Honnen   schedule 25.02.2016