Ich versuche, eine Liste der Attributwerte der untergeordneten Elemente eines Elements abzurufen, aber ich möchte, dass die Werte nur einmal angezeigt werden.Wählen Sie in XSLT im Verhältnis zu jedem Element darktinct
Zum Beispiel habe ich die folgende XML
<root>
<sec>
<nom-title>
<nom-chapter>
<nom-article><data att="1.1"/></nom-article>
<nom-article>
<nom-item><data att="1.1"/></nom-item>
<nom-item><data att="1.2"/></nom-item>
</nom-article>
</nom-chapter>
<nom-chapter>
<nom-article><data att="2.1"/></nom-article>
<nom-article><data att="1.1"/></nom-article>
</nom-chapter>
</nom-title>
<nom-title>
<nom-chapter>
<nom-article><data att="1.1"/></nom-article>
</nom-chapter>
</nom-title>
</sec>
</root>
Und ich möchte ein Ergebnis wie folgt aus:
<root>
<nom-title>
<att>1.1</att>
<att>1.2</att>
<att>2.1</att>
<nom-chapter>
<att>1.1</att>
<att>1.2</att>
<nom-article>
<att>1.1</att>
</nom-article>
<nom-article>
<att>1.1</att>
<att>1.2</att>
<nom-item><att>1.1</att></nom-item>
<nom-item><att>1.2</att></nom-item>
</nom-article>
</nom-chapter>
</nom-title>
<nom-title>
<att>1.1</att>
<nom-chapter>
<att>1.1</att>
<nom-article>
<att>1.1</att>
</nom-article>
</nom-chapter>
</nom-title>
</root>
Ich habe versucht, die xsl zu verwenden: Schlüsselelement, aber es gibt nur die Wert für ein Element. Im Beispiel gibt es nur 1,1 für den ersten Titel, aber nicht für den zweiten zurück. Das xsl ich verwendet habe:
<xsl:key name="allAtt"
match="//*[starts-with(name(.),'nom-')]/data"
use="@att"/>
<xsl:template match="nom-title|nom-chapter|nom-article|nom-item">
<xsl:element name="name(.)">
<xsl:apply-templates select=".//*[starts-with(name(.),'nom-')]/data
</xsl:element>
</xsl:template>
<xsl:template match="data">
<xsl:variable name="att" select="@att"/>
<xsl:if test="generate-id(.)=generate-id(key('allAtt',$att)[1]">
<xsl:element name="att"><xsl:value-of select="$att"></xsl:element>
</xsl:if>
</xsl:template>
Nach meiner Erfahrung mit xslt benötigt man zunächst ein gültiges xml. Es sieht so aus, als wäre das Element "nom-article" nicht geschlossen. Ich möchte versuchen, das zuerst zu beheben. –
Ich stimme mit Justin überein, bitte zeigen Sie uns zuerst ein wohlgeformtes XML-Eingabesample, momentan ist die Struktur der Eingabe nicht klar, wobei mehrere Tags nicht richtig geschlossen werden (zB '', ') '). –
Entschuldigung, falsche Kopie-Paste, ich habe es behoben. – claudex